{"version":3,"file":"twapp.js","mappings":"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goB,2BAA2B;AACt2J;AACA;;;;;;;;;;ACHA;AACA,0HAA0H,kPAAkP,oBAAoB,+iSAA+iS,UAAU,iFAAiF,0BAA0B;AACpiT;AACA;;;;;;;;;;ACHA;AACA,kqGAAkqG,4BAA4B,gLAAgL,cAAc,2EAA2E,qCAAqC,2EAA2E,mDAAmD,4EAA4E,eAAe,86BAA86B,2BAA2B;AAC9oJ;AACA;;;;;;;;;;;;ACHA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA","sources":["webpack://ginger.web/./src/twapp/app.js","webpack://ginger.web/./src/twapp/attachments/AttachmentCollection.js","webpack://ginger.web/./src/twapp/attachments/AttachmentComponent.js","webpack://ginger.web/./src/twapp/awards/AwardEditController.js","webpack://ginger.web/./src/twapp/components/auditlog/auditlogComponent.js","webpack://ginger.web/./src/twapp/dialogs/EmailListController.js","webpack://ginger.web/./src/twapp/dialogs/dialogService.js","webpack://ginger.web/./src/twapp/directives/comboDirective.js","webpack://ginger.web/./src/twapp/directives/durationFilter.js","webpack://ginger.web/./src/twapp/directives/ergoAdvancedSearch.js","webpack://ginger.web/./src/twapp/directives/ergoCheckbox.js","webpack://ginger.web/./src/twapp/directives/ergoCheckgroup.js","webpack://ginger.web/./src/twapp/directives/ergoDatepicker.js","webpack://ginger.web/./src/twapp/directives/ergoFileInput.js","webpack://ginger.web/./src/twapp/directives/ergoFilterPanel.js","webpack://ginger.web/./src/twapp/directives/ergoFilters.js","webpack://ginger.web/./src/twapp/directives/ergoMunicipalityCodeList.js","webpack://ginger.web/./src/twapp/directives/ergoParsers.js","webpack://ginger.web/./src/twapp/directives/ergoScroll.js","webpack://ginger.web/./src/twapp/directives/ergoSelectText.js","webpack://ginger.web/./src/twapp/directives/ergoTable.js","webpack://ginger.web/./src/twapp/directives/ergoValidation.js","webpack://ginger.web/./src/twapp/directives/ergoYearmonth.js","webpack://ginger.web/./src/twapp/divisions/DivisionEditController.js","webpack://ginger.web/./src/twapp/divisions/DivisionsController.js","webpack://ginger.web/./src/twapp/equipment/EquipmentEditController.js","webpack://ginger.web/./src/twapp/front/FrontController.js","webpack://ginger.web/./src/twapp/index.js","webpack://ginger.web/./src/twapp/lists/ListBuilderController.js","webpack://ginger.web/./src/twapp/lists/ListConfiguration.js","webpack://ginger.web/./src/twapp/lists/listService.js","webpack://ginger.web/./src/twapp/mandate/MandateEditController.js","webpack://ginger.web/./src/twapp/meetings/ceremony/CeremonyController.js","webpack://ginger.web/./src/twapp/meetings/ceremony/attach/AttachCeremonyComponent.js","webpack://ginger.web/./src/twapp/meetings/ceremony/attach/MeetingFinderComponent.js","webpack://ginger.web/./src/twapp/meetings/ceremony/dialog/CeremonyDialogController.js","webpack://ginger.web/./src/twapp/meetings/detail/AttendanceCollection.js","webpack://ginger.web/./src/twapp/meetings/detail/AttendanceController.js","webpack://ginger.web/./src/twapp/meetings/detail/AttendanceDialogComponent.js","webpack://ginger.web/./src/twapp/meetings/detail/AttendanceModel.js","webpack://ginger.web/./src/twapp/meetings/detail/MeetingController.js","webpack://ginger.web/./src/twapp/meetings/detail/MeetingEditController.js","webpack://ginger.web/./src/twapp/meetings/detail/MeetingState.js","webpack://ginger.web/./src/twapp/meetings/detail/PayrollController.js","webpack://ginger.web/./src/twapp/meetings/form/MeetingFormComponent.js","webpack://ginger.web/./src/twapp/meetings/form/MeetingFormModel.js","webpack://ginger.web/./src/twapp/meetings/search/CeremonyMeetingsController.js","webpack://ginger.web/./src/twapp/meetings/search/MeetingsShared.js","webpack://ginger.web/./src/twapp/meetings/search/MeetingsToHandleController.js","webpack://ginger.web/./src/twapp/meetings/search/PendingMeetingsController.js","webpack://ginger.web/./src/twapp/meetings/search/RegularMeetingsController.js","webpack://ginger.web/./src/twapp/meetings/search/RootMeetingsController.js","webpack://ginger.web/./src/twapp/meetings/timereport/TimeReportDialogController.js","webpack://ginger.web/./src/twapp/misc/DateCalculator.js","webpack://ginger.web/./src/twapp/misc/EntityCollection.js","webpack://ginger.web/./src/twapp/misc/EnumValues.js","webpack://ginger.web/./src/twapp/misc/Metadata.js","webpack://ginger.web/./src/twapp/misc/ObjectCache.js","webpack://ginger.web/./src/twapp/misc/TimeString.js","webpack://ginger.web/./src/twapp/misc/calendarPosition.js","webpack://ginger.web/./src/twapp/misc/textHelper.js","webpack://ginger.web/./src/twapp/misc/utility.js","webpack://ginger.web/./src/twapp/missionGroups/MissionGroupController.js","webpack://ginger.web/./src/twapp/missionGroups/MissionGroupDetailsController.js","webpack://ginger.web/./src/twapp/missionGroups/MissionGroupMissionsController.js","webpack://ginger.web/./src/twapp/missionGroups/MissionGroupState.js","webpack://ginger.web/./src/twapp/missionGroups/MissionGroupsController.js","webpack://ginger.web/./src/twapp/missionGroups/UpdateMissionGroupController.js","webpack://ginger.web/./src/twapp/missionTypes/MissionTypeEditController.js","webpack://ginger.web/./src/twapp/missionTypes/MissionTypesController.js","webpack://ginger.web/./src/twapp/missions/MissionEditController.js","webpack://ginger.web/./src/twapp/missions/MissionListController.js","webpack://ginger.web/./src/twapp/missions/MissionUpdateController.js","webpack://ginger.web/./src/twapp/navbar/NavbarController.js","webpack://ginger.web/./src/twapp/objects/Attachment.js","webpack://ginger.web/./src/twapp/objects/Attendance.js","webpack://ginger.web/./src/twapp/objects/Audit.js","webpack://ginger.web/./src/twapp/objects/Award.js","webpack://ginger.web/./src/twapp/objects/BaseObject.js","webpack://ginger.web/./src/twapp/objects/Ceremony.js","webpack://ginger.web/./src/twapp/objects/Claim.js","webpack://ginger.web/./src/twapp/objects/Division.js","webpack://ginger.web/./src/twapp/objects/Equipment.js","webpack://ginger.web/./src/twapp/objects/FrontPageNotifications.js","webpack://ginger.web/./src/twapp/objects/MandatePeriod.js","webpack://ginger.web/./src/twapp/objects/Meeting.js","webpack://ginger.web/./src/twapp/objects/Mission.js","webpack://ginger.web/./src/twapp/objects/MissionGroup.js","webpack://ginger.web/./src/twapp/objects/MissionType.js","webpack://ginger.web/./src/twapp/objects/Organization.js","webpack://ginger.web/./src/twapp/objects/OrganizationType.js","webpack://ginger.web/./src/twapp/objects/Party.js","webpack://ginger.web/./src/twapp/objects/Payment.js","webpack://ginger.web/./src/twapp/objects/PaymentRound.js","webpack://ginger.web/./src/twapp/objects/Payslip.js","webpack://ginger.web/./src/twapp/objects/PendingCertification.js","webpack://ginger.web/./src/twapp/objects/Person.js","webpack://ginger.web/./src/twapp/objects/PolitikerSettings.js","webpack://ginger.web/./src/twapp/objects/ReportInfo.js","webpack://ginger.web/./src/twapp/objects/Setting.js","webpack://ginger.web/./src/twapp/objects/SystemInfo.js","webpack://ginger.web/./src/twapp/objects/SystemSettings.js","webpack://ginger.web/./src/twapp/objects/WageCalculation.js","webpack://ginger.web/./src/twapp/objects/WageGroup.js","webpack://ginger.web/./src/twapp/objects/WageType.js","webpack://ginger.web/./src/twapp/organizationType/OrganizationTypeEditController.js","webpack://ginger.web/./src/twapp/organizationType/OrganizationTypesController.js","webpack://ginger.web/./src/twapp/organizations/OrganizationController.js","webpack://ginger.web/./src/twapp/organizations/OrganizationEditController.js","webpack://ginger.web/./src/twapp/organizations/OrganizationMissionList.js","webpack://ginger.web/./src/twapp/organizations/OrganizationMissionsController.js","webpack://ginger.web/./src/twapp/organizations/OrganizationState.js","webpack://ginger.web/./src/twapp/organizations/OrganizationsController.js","webpack://ginger.web/./src/twapp/organizations/organizationService.js","webpack://ginger.web/./src/twapp/parties/PartiesController.js","webpack://ginger.web/./src/twapp/parties/PartyEditController.js","webpack://ginger.web/./src/twapp/payroll/EmployerOptions.js","webpack://ginger.web/./src/twapp/payroll/PaymentGroupModel.js","webpack://ginger.web/./src/twapp/payroll/PaymentLock.js","webpack://ginger.web/./src/twapp/payroll/PaymentModel.js","webpack://ginger.web/./src/twapp/payroll/PayslipCollection.js","webpack://ginger.web/./src/twapp/payroll/PayslipComponent.js","webpack://ginger.web/./src/twapp/payroll/PayslipListComponent.js","webpack://ginger.web/./src/twapp/payroll/PayslipModel.js","webpack://ginger.web/./src/twapp/payroll/calculation/CalculatedPayment.js","webpack://ginger.web/./src/twapp/payroll/calculation/PaymentsCalculation.js","webpack://ginger.web/./src/twapp/payroll/calculation/PolitikerCalculator.js","webpack://ginger.web/./src/twapp/payroll/calculation/StandardCalculator.js","webpack://ginger.web/./src/twapp/payroll/complex/ComplexGroupModel.js","webpack://ginger.web/./src/twapp/payroll/complex/ComplexRemunerationComponent.js","webpack://ginger.web/./src/twapp/payroll/editor/PaymentEditor.js","webpack://ginger.web/./src/twapp/payroll/editor/PaymentEditorModel.js","webpack://ginger.web/./src/twapp/payroll/groupDialog/GroupDialogController.js","webpack://ginger.web/./src/twapp/payroll/groupDialog/GroupDialogResult.js","webpack://ginger.web/./src/twapp/payroll/paymentsList/PaymentsListComponent.js","webpack://ginger.web/./src/twapp/payroll/proposedTime/ProposedTimeComponent.js","webpack://ginger.web/./src/twapp/payroll/proposedTime/ProposedTimeGroupModel.js","webpack://ginger.web/./src/twapp/payroll/proposed/ProposedGroupModel.js","webpack://ginger.web/./src/twapp/payroll/proposed/ProposedRemunerationComponent.js","webpack://ginger.web/./src/twapp/payroll/simple/SimpleGroupModel.js","webpack://ginger.web/./src/twapp/payroll/simple/SimpleRemunerationComponent.js","webpack://ginger.web/./src/twapp/pendingCertification/PendingCertificationController.js","webpack://ginger.web/./src/twapp/persons/PersonAttachmentCollection.js","webpack://ginger.web/./src/twapp/persons/PersonAwardsController.js","webpack://ginger.web/./src/twapp/persons/PersonController.js","webpack://ginger.web/./src/twapp/persons/PersonEditController.js","webpack://ginger.web/./src/twapp/persons/PersonEquipmentController.js","webpack://ginger.web/./src/twapp/persons/PersonMissionsController.js","webpack://ginger.web/./src/twapp/persons/PersonState.js","webpack://ginger.web/./src/twapp/persons/PersonsController.js","webpack://ginger.web/./src/twapp/persons/personArchive/PersonArchiveController.js","webpack://ginger.web/./src/twapp/persons/personArchive/personArchive.js","webpack://ginger.web/./src/twapp/politikerSettings/PolitikerSettingsController.js","webpack://ginger.web/./src/twapp/profile/ProfileController.js","webpack://ginger.web/./src/twapp/reports/ReportDialogController.js","webpack://ginger.web/./src/twapp/reports/ReportsController.js","webpack://ginger.web/./src/twapp/reports/reportLimits.js","webpack://ginger.web/./src/twapp/reports/reportOptions.js","webpack://ginger.web/./src/twapp/reports/reportService.js","webpack://ginger.web/./src/twapp/server/ApiServer.js","webpack://ginger.web/./src/twapp/server/ApiService.js","webpack://ginger.web/./src/twapp/server/ApiWarnings.js","webpack://ginger.web/./src/twapp/server/CeremonyEndpoint.js","webpack://ginger.web/./src/twapp/server/FileEndpoint.js","webpack://ginger.web/./src/twapp/server/IntegrationEndpoint.js","webpack://ginger.web/./src/twapp/server/MeetingEndpoint.js","webpack://ginger.web/./src/twapp/server/MissionEndpoint.js","webpack://ginger.web/./src/twapp/server/MissionGroupEndpoint.js","webpack://ginger.web/./src/twapp/server/NotificationEndpoint.js","webpack://ginger.web/./src/twapp/server/OrganizationEndpoint.js","webpack://ginger.web/./src/twapp/server/PaymentRoundEndpoint.js","webpack://ginger.web/./src/twapp/server/PayrollEndpoint.js","webpack://ginger.web/./src/twapp/server/PersonEndpoint.js","webpack://ginger.web/./src/twapp/server/PolitikerEndpoint.js","webpack://ginger.web/./src/twapp/server/ReportEndpoint.js","webpack://ginger.web/./src/twapp/server/ResourceEndpoint.js","webpack://ginger.web/./src/twapp/server/ResponseContext.js","webpack://ginger.web/./src/twapp/server/SystemEndpoint.js","webpack://ginger.web/./src/twapp/server/WageGroupEndpoint.js","webpack://ginger.web/./src/twapp/services/DialogControllerBase.js","webpack://ginger.web/./src/twapp/services/browserService.js","webpack://ginger.web/./src/twapp/services/downloadService.js","webpack://ginger.web/./src/twapp/services/filterBuilder.js","webpack://ginger.web/./src/twapp/services/tromanErrorParser.js","webpack://ginger.web/./src/twapp/services/tromanServer.js","webpack://ginger.web/./src/twapp/sortDialog/GroupSortController.js","webpack://ginger.web/./src/twapp/sortDialog/SorterController.js","webpack://ginger.web/./src/twapp/sortDialog/sortDialog.js","webpack://ginger.web/./src/twapp/sortDialog/sortHelper.js","webpack://ginger.web/./src/twapp/system/SystemSettingsController.js","webpack://ginger.web/./src/twapp/wageCalculation/WageCalculationEditController.js","webpack://ginger.web/./src/twapp/wageCalculation/WageCalculationsController.js","webpack://ginger.web/./src/twapp/wageGroup/WageGroupController.js","webpack://ginger.web/./src/twapp/wageGroup/WageGroupDetailsController.js","webpack://ginger.web/./src/twapp/wageGroup/WageGroupHistoryController.js","webpack://ginger.web/./src/twapp/wageGroup/WageGroupOrganizationsController.js","webpack://ginger.web/./src/twapp/wageGroup/WageGroupState.js","webpack://ginger.web/./src/twapp/wageGroup/WageGroupTransactionsController.js","webpack://ginger.web/./src/twapp/wageGroup/WageGroupsController.js","webpack://ginger.web/./src/twapp/wageType/WageTypeEditController.js","webpack://ginger.web/./src/twapp/wageType/WageTypesController.js","webpack://ginger.web/./src/twapp/attachments/attachmentComponent.html","webpack://ginger.web/./src/twapp/awards/awardEdit.html","webpack://ginger.web/./src/twapp/components/auditlog/auditlog.html","webpack://ginger.web/./src/twapp/dialogs/emailList.html","webpack://ginger.web/./src/twapp/directives/ergoAdvancedSearch.html","webpack://ginger.web/./src/twapp/directives/ergoFilterPanel.html","webpack://ginger.web/./src/twapp/directives/ergoMunicipalityCodeList.html","webpack://ginger.web/./src/twapp/directives/pagination.html","webpack://ginger.web/./src/twapp/divisions/divisionEdit.html","webpack://ginger.web/./src/twapp/divisions/divisions.html","webpack://ginger.web/./src/twapp/equipment/equipmentEdit.html","webpack://ginger.web/./src/twapp/front/front.html","webpack://ginger.web/./src/twapp/lists/listBuilder.html","webpack://ginger.web/./src/twapp/mandate/mandateEdit.html","webpack://ginger.web/./src/twapp/meetings/ceremony/attach/attachCeremony.html","webpack://ginger.web/./src/twapp/meetings/ceremony/attach/meetingFinder.html","webpack://ginger.web/./src/twapp/meetings/ceremony/ceremony.html","webpack://ginger.web/./src/twapp/meetings/ceremony/dialog/ceremonyDialog.html","webpack://ginger.web/./src/twapp/meetings/detail/addmeeting.html","webpack://ginger.web/./src/twapp/meetings/detail/attendanceDialog.html","webpack://ginger.web/./src/twapp/meetings/detail/meeting.attendance.html","webpack://ginger.web/./src/twapp/meetings/detail/meeting.details.html","webpack://ginger.web/./src/twapp/meetings/detail/meeting.html","webpack://ginger.web/./src/twapp/meetings/detail/meeting.payroll.html","webpack://ginger.web/./src/twapp/meetings/form/meetingform.html","webpack://ginger.web/./src/twapp/meetings/search/meetings.ceremony.html","webpack://ginger.web/./src/twapp/meetings/search/meetings.pending.html","webpack://ginger.web/./src/twapp/meetings/search/meetings.regular.html","webpack://ginger.web/./src/twapp/meetings/search/meetings.root.html","webpack://ginger.web/./src/twapp/meetings/search/meetings.tohandle.html","webpack://ginger.web/./src/twapp/meetings/timereport/timeReportDialog.html","webpack://ginger.web/./src/twapp/missionGroups/addMissionGroup.html","webpack://ginger.web/./src/twapp/missionGroups/missionGroup.details.html","webpack://ginger.web/./src/twapp/missionGroups/missionGroup.html","webpack://ginger.web/./src/twapp/missionGroups/missionGroup.missions.html","webpack://ginger.web/./src/twapp/missionGroups/missionGroups.html","webpack://ginger.web/./src/twapp/missionGroups/updateMissionGroup.html","webpack://ginger.web/./src/twapp/missionTypes/missionTypeEdit.html","webpack://ginger.web/./src/twapp/missionTypes/missionTypes.html","webpack://ginger.web/./src/twapp/missions/missionEdit.html","webpack://ginger.web/./src/twapp/missions/missionList.html","webpack://ginger.web/./src/twapp/missions/missionUpdate.html","webpack://ginger.web/./src/twapp/navbar/navbar.html","webpack://ginger.web/./src/twapp/organizationType/organizationTypeEdit.html","webpack://ginger.web/./src/twapp/organizationType/organizationTypes.html","webpack://ginger.web/./src/twapp/organizations/addorganization.html","webpack://ginger.web/./src/twapp/organizations/organization.details.html","webpack://ginger.web/./src/twapp/organizations/organization.html","webpack://ginger.web/./src/twapp/organizations/organization.missions.html","webpack://ginger.web/./src/twapp/organizations/organization.payroll.html","webpack://ginger.web/./src/twapp/organizations/organization.publish.html","webpack://ginger.web/./src/twapp/organizations/organizations.html","webpack://ginger.web/./src/twapp/parties/parties.html","webpack://ginger.web/./src/twapp/parties/partyEdit.html","webpack://ginger.web/./src/twapp/payroll/complex/complexRemuneration.html","webpack://ginger.web/./src/twapp/payroll/editor/PaymentEditor.html","webpack://ginger.web/./src/twapp/payroll/groupDialog/groupDialog.html","webpack://ginger.web/./src/twapp/payroll/paymentsList/paymentsList.html","webpack://ginger.web/./src/twapp/payroll/payslip.html","webpack://ginger.web/./src/twapp/payroll/payslipList.html","webpack://ginger.web/./src/twapp/payroll/proposedTime/proposedTime.html","webpack://ginger.web/./src/twapp/payroll/proposed/proposedRemuneration.html","webpack://ginger.web/./src/twapp/payroll/simple/simpleRemuneration.html","webpack://ginger.web/./src/twapp/pendingCertification/pendingCertification.html","webpack://ginger.web/./src/twapp/persons/addperson.html","webpack://ginger.web/./src/twapp/persons/person.awards.html","webpack://ginger.web/./src/twapp/persons/person.details.html","webpack://ginger.web/./src/twapp/persons/person.equipment.html","webpack://ginger.web/./src/twapp/persons/person.html","webpack://ginger.web/./src/twapp/persons/person.missions.html","webpack://ginger.web/./src/twapp/persons/person.payroll.html","webpack://ginger.web/./src/twapp/persons/person.politiker.html","webpack://ginger.web/./src/twapp/persons/person.publish.html","webpack://ginger.web/./src/twapp/persons/personArchive/personArchive.html","webpack://ginger.web/./src/twapp/persons/persons.html","webpack://ginger.web/./src/twapp/politikerSettings/politikerSettings.html","webpack://ginger.web/./src/twapp/profile/profile.html","webpack://ginger.web/./src/twapp/reports/reportDialog.html","webpack://ginger.web/./src/twapp/reports/reportOptions.html","webpack://ginger.web/./src/twapp/reports/reports.html","webpack://ginger.web/./src/twapp/sortDialog/sorter.html","webpack://ginger.web/./src/twapp/sortDialog/sorter.missions.html","webpack://ginger.web/./src/twapp/system/systemsettings.html","webpack://ginger.web/./src/twapp/wageCalculation/wageCalculationEdit.html","webpack://ginger.web/./src/twapp/wageCalculation/wageCalculations.html","webpack://ginger.web/./src/twapp/wageGroup/wageGroup.details.html","webpack://ginger.web/./src/twapp/wageGroup/wageGroup.history.html","webpack://ginger.web/./src/twapp/wageGroup/wageGroup.html","webpack://ginger.web/./src/twapp/wageGroup/wageGroup.organizations.html","webpack://ginger.web/./src/twapp/wageGroup/wageGroup.transactions.html","webpack://ginger.web/./src/twapp/wageGroup/wageGroups.html","webpack://ginger.web/./src/twapp/wageType/wageTypeEdit.html","webpack://ginger.web/./src/twapp/wageType/wageTypes.html","webpack://ginger.web/./src/twapp/attachments/attachments.less?5a34","webpack://ginger.web/./src/twapp/components/auditlog/auditlog.less?f613","webpack://ginger.web/./src/twapp/css/twapp.less?c507","webpack://ginger.web/./src/twapp/directives/ergoMunicipalityCodeList.less?eaa7","webpack://ginger.web/./src/twapp/front/frontpage.less?55b2","webpack://ginger.web/./src/twapp/lists/listbuilder.less?e44f","webpack://ginger.web/./src/twapp/meetings/ceremony/attach/attachCeremony.less?6477","webpack://ginger.web/./src/twapp/meetings/ceremony/attach/meetingFinder.less?0862","webpack://ginger.web/./src/twapp/meetings/ceremony/ceremony.less?c94d","webpack://ginger.web/./src/twapp/meetings/ceremony/dialog/ceremonyDialog.less?6db4","webpack://ginger.web/./src/twapp/meetings/detail/attendance.less?db40","webpack://ginger.web/./src/twapp/meetings/detail/meeting.less?8179","webpack://ginger.web/./src/twapp/meetings/form/meetingform.less?4ea2","webpack://ginger.web/./src/twapp/meetings/search/meetings.less?c61e","webpack://ginger.web/./src/twapp/meetings/timereport/timeReportDialog.less?1ba7","webpack://ginger.web/./src/twapp/missionGroups/missionGroup.less?4eb5","webpack://ginger.web/./src/twapp/missions/missionEdit.less?a1c9","webpack://ginger.web/./src/twapp/missions/missionList.less?c0b1","webpack://ginger.web/./src/twapp/missions/missionupdate.less?7fab","webpack://ginger.web/./src/twapp/navbar/navbar.less?7fd3","webpack://ginger.web/./src/twapp/organizations/organization.less?e0aa","webpack://ginger.web/./src/twapp/payroll/complex/complexRemuneration.less?0ec7","webpack://ginger.web/./src/twapp/payroll/editor/paymentEditor.less?580f","webpack://ginger.web/./src/twapp/payroll/groupDialog/groupDialog.less?a0a3","webpack://ginger.web/./src/twapp/payroll/paymentsList/paymentsList.less?7bae","webpack://ginger.web/./src/twapp/payroll/payslip.less?466b","webpack://ginger.web/./src/twapp/payroll/proposedTime/proposedTime.less?146a","webpack://ginger.web/./src/twapp/payroll/proposed/proposedRemuneration.less?c228","webpack://ginger.web/./src/twapp/payroll/simple/simpleRemuneration.less?15b3","webpack://ginger.web/./src/twapp/pendingCertification/pendingCertification.less?9ce7","webpack://ginger.web/./src/twapp/persons/person.less?ffc5","webpack://ginger.web/./src/twapp/persons/personArchive/personArchive.less?3813","webpack://ginger.web/./src/twapp/politikerSettings/politikerSettings.less?08a1","webpack://ginger.web/./src/twapp/profile/profile.less?03c1","webpack://ginger.web/./src/twapp/sortDialog/sorter.less?9319","webpack://ginger.web/./src/twapp/system/systemSettings.less?e583","webpack://ginger.web/./src/twapp/wageGroup/wagegroup.less?d21b","webpack://ginger.web/./src/twapp/wageType/wagetype.less?cf9b"],"sourcesContent":["import { HistoryRouterPlugin } from '../common/twshared/services/HistoryRouterPlugin';\r\n\r\nangular.module('tromanWeb', ['ui.router', 'ui.bootstrap', 'smart-table', 'ui.sortable', 'twshared']);\r\n\r\nangular.module('tromanWeb').config(['$logProvider', function ($logProvider) {\r\n $logProvider.debugEnabled(false);\r\n}]);\r\n\r\nangular.module('tromanWeb').config(['$locationProvider', '$uiRouterProvider', function ($locationProvider, $uiRouterProvider) {\r\n $locationProvider.html5Mode(true);\r\n $uiRouterProvider.plugin(HistoryRouterPlugin);\r\n}]);\r\n\r\nangular.module('tromanWeb').config(['stConfig', function (stConfig) {\r\n stConfig.sort.skipNatural = true;\r\n stConfig.sort.delay = 0;\r\n stConfig.pagination.template = 'template/tw/pagination.html'; // Only supports URL template, \"required\" in $templateCache below.\r\n}]);\r\nangular.module('tromanWeb').run(['$templateCache', function ($templateCache) {\r\n $templateCache.put('template/tw/pagination.html', require('./directives/pagination.html'));\r\n}]);\r\n\r\nangular.module('tromanWeb').config(['authenticationServiceProvider', function (authenticationServiceProvider) {\r\n authenticationServiceProvider.unauthorized = ['authenticationService', function (authenticationService) {\r\n authenticationService.logout();\r\n location.href = \"../\";\r\n }];\r\n}]);\r\n\r\nangular.module('tromanWeb').config(['$stateProvider', '$urlRouterProvider', '$urlMatcherFactoryProvider', 'isTroman', function ($stateProvider, $urlRouterProvider, $urlMatcherFactoryProvider, isTroman) {\r\n\r\n $urlMatcherFactoryProvider.type('guid', {\r\n pattern: /[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}/\r\n });\r\n\r\n $stateProvider.state('authenticated', {\r\n abstract: true,\r\n resolve: {\r\n systemInfo: ['$q', 'tromanServer', '$rootScope', 'tromanGlobals', function ($q, tromanServer, $rootScope, tromanGlobals) {\r\n return tromanServer.System.getInfo()\r\n .then(function (value) {\r\n tromanGlobals.systemInfo = value;\r\n $rootScope.$shared = $rootScope.$shared || {};\r\n $rootScope.$shared.acceptAttachments = value.AttachmentExtensions?.join(',');\r\n $rootScope.$shared.acceptImages = value.ImageExtensions?.join(',');\r\n return value;\r\n })\r\n .catch(function (err) {\r\n // TODO Detect difference between 401 and any other errors.\r\n location.href = \"../\";\r\n return $q.reject(err);\r\n });\r\n }],\r\n userProfile: ['$q', 'accountServer', 'tromanGlobals', function ($q, accountServer, tromanGlobals) {\r\n return accountServer.Profile.getProfile()\r\n .then(function (value) {\r\n tromanGlobals.userProfile = value;\r\n return value;\r\n })\r\n .catch(function (err) {\r\n // TODO Detect difference between 401 and any other errors.\r\n location.href = \"../\";\r\n return $q.reject(err);\r\n });\r\n }]\r\n },\r\n onExit: ['tromanGlobals', function (tromanGlobals) {\r\n tromanGlobals.systemInfo = null;\r\n tromanGlobals.userProfile = null;\r\n }],\r\n views: {\r\n 'navbar': {\r\n controller: \"NavbarController as navctrl\",\r\n template: require(\"./navbar/navbar.html\")\r\n },\r\n 'main': {\r\n template: '
'\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state('front', {\r\n parent: 'authenticated',\r\n url: '/',\r\n controller: \"FrontController as ctrl\",\r\n template: require('./front/front.html')\r\n });\r\n\r\n $stateProvider.state('profile', {\r\n parent: 'authenticated',\r\n url: \"/profile\",\r\n controller: \"ProfileController as ctrl\",\r\n template: require('./profile/profile.html'),\r\n data: { title: \"Kontoinformation\" }\r\n });\r\n\r\n $stateProvider.state(\"persons\", {\r\n parent: 'authenticated',\r\n url: \"/persons\",\r\n controller: \"PersonsController as ctrl\",\r\n template: require('./persons/persons.html'),\r\n data: { title: \"Personer\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addperson\", {\r\n parent: 'authenticated',\r\n url: \"/persons/add\",\r\n abstract: true,\r\n controller: \"PersonController as pc\",\r\n template: require('./persons/addperson.html'),\r\n data: { title: \"Lägg till person\" },\r\n resolve: {\r\n personState: ['PersonState', function (PersonState) {\r\n return PersonState.create();\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addperson.details\", {\r\n url: \"\",\r\n controller: \"PersonEditController as pec\",\r\n template: require('./persons/person.details.html')\r\n });\r\n\r\n $stateProvider.state(\"person\", {\r\n parent: 'authenticated',\r\n url: \"/persons/{personId:guid}\",\r\n abstract: true,\r\n controller: \"PersonController as pc\",\r\n template: require('./persons/person.html'),\r\n data: { title: \"Personuppgifter\" },\r\n resolve: {\r\n personState: ['$transition$', 'PersonState', function ($transition$, PersonState) {\r\n return PersonState.create($transition$.params().personId);\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"person.details\", {\r\n url: \"\",\r\n controller: \"PersonEditController as pec\",\r\n template: require('./persons/person.details.html')\r\n });\r\n\r\n $stateProvider.state(\"person.missions\", {\r\n url: \"/missions\",\r\n controller: \"PersonMissionsController as pmc\",\r\n template: require('./persons/person.missions.html')\r\n });\r\n\r\n $stateProvider.state(\"person.tromanpublik\", {\r\n url: \"/tromanpublik\",\r\n controller: \"PersonEditController as pec\",\r\n template: require('./persons/person.publish.html')\r\n });\r\n\r\n $stateProvider.state(\"person.equipment\", {\r\n url: \"/equipment\",\r\n controller: \"PersonEquipmentController as pec\",\r\n template: require('./persons/person.equipment.html')\r\n });\r\n\r\n $stateProvider.state(\"person.awards\", {\r\n url: \"/awards\",\r\n controller: \"PersonAwardsController as pac\",\r\n template: require('./persons/person.awards.html')\r\n });\r\n\r\n $stateProvider.state(\"person.payroll\", {\r\n url: \"/payroll\",\r\n controller: \"PersonEditController as pec\",\r\n template: require('./persons/person.payroll.html')\r\n });\r\n\r\n $stateProvider.state(\"person.politiker\", {\r\n url: \"/politiker\",\r\n controller: \"PersonEditController as pec\",\r\n template: require('./persons/person.politiker.html')\r\n });\r\n\r\n $stateProvider.state(\"organizations\", {\r\n parent: 'authenticated',\r\n url: \"/organizations\",\r\n controller: \"OrganizationsController as ctrl\",\r\n template: require('./organizations/organizations.html'),\r\n data: { title: \"Organisationer\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n },\r\n });\r\n\r\n $stateProvider.state(\"organization\", {\r\n parent: 'authenticated',\r\n url: \"/organizations/{organizationId:guid}\",\r\n abstract: true,\r\n controller: \"OrganizationController as oc\",\r\n template: require('./organizations/organization.html'),\r\n data: { title: \"Organisation\" },\r\n resolve: {\r\n organizationState: ['$transition$', 'OrganizationState', function ($transition$, OrganizationState) {\r\n return OrganizationState.create($transition$.params().organizationId);\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"organization.details\", {\r\n url: \"/details\",\r\n template: require('./organizations/organization.details.html'),\r\n controller: \"OrganizationEditController as oec\"\r\n });\r\n\r\n $stateProvider.state(\"organization.missions\", {\r\n url: \"?{mpid:guid}\",\r\n controller: \"OrganizationMissionsController as omc\",\r\n template: require('./organizations/organization.missions.html'),\r\n params: {\r\n mpid: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n },\r\n });\r\n\r\n $stateProvider.state(\"organization.publish\", {\r\n url: \"/publish\",\r\n template: require('./organizations/organization.publish.html'),\r\n controller: \"OrganizationEditController as oec\"\r\n });\r\n\r\n $stateProvider.state(\"organization.payroll\", {\r\n url: \"/payroll\",\r\n template: require('./organizations/organization.payroll.html'),\r\n controller: \"OrganizationEditController as oec\"\r\n });\r\n\r\n $stateProvider.state(\"addorganization\", {\r\n parent: 'authenticated',\r\n url: \"/organizations/add\",\r\n abstract: true,\r\n controller: \"OrganizationController as oc\",\r\n template: require('./organizations/addorganization.html'),\r\n data: { title: \"Lägg till organisation\" },\r\n resolve: {\r\n organizationState: ['OrganizationState', function (OrganizationState) {\r\n return OrganizationState.create();\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addorganization.details\", {\r\n url: \"\",\r\n template: require('./organizations/organization.details.html'),\r\n controller: \"OrganizationEditController as oec\"\r\n });\r\n\r\n $stateProvider.state(\"missions\", {\r\n parent: 'authenticated',\r\n url: \"/missions\",\r\n template: require('./missions/missionList.html'),\r\n controller: 'MissionListController as ctrl',\r\n data: {\r\n title: \"Historiska Uppdrag\"\r\n },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"reports\", {\r\n parent: 'authenticated',\r\n url: \"/reports\",\r\n template: require('./reports/reports.html'),\r\n controller: 'ReportsController as ctrl',\r\n data: {\r\n title: \"Rapporter\"\r\n }\r\n });\r\n\r\n $stateProvider.state(\"meetings\", {\r\n parent: 'authenticated',\r\n url: \"/meetings\",\r\n abstract: true,\r\n controller: 'RootMeetingsController as ctrl',\r\n template: require('./meetings/search/meetings.root.html'),\r\n resolve: {\r\n meetingsShared: ['MeetingsShared', function (MeetingsShared) {\r\n return new MeetingsShared();\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"meetings.regular\", {\r\n url: \"\",\r\n controller: 'RegularMeetingsController as ctrl',\r\n template: require('./meetings/search/meetings.regular.html'),\r\n data: { title: \"Möten\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"meetings.tohandle\", {\r\n url: \"/tohandle\",\r\n controller: 'MeetingsToHandleController as ctrl',\r\n template: require('./meetings/search/meetings.tohandle.html'),\r\n data: { title: \"Möten - Att hantera\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"meetings.ceremony\", {\r\n url: \"/politiker\",\r\n controller: 'CeremonyMeetingsController as ctrl',\r\n template: require('./meetings/search/meetings.ceremony.html'),\r\n data: { title: \"Möten - Nya förrättningar\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"meetings.pending\", {\r\n url: \"/pending\",\r\n controller: 'PendingMeetingsController as ctrl',\r\n template: require('./meetings/search/meetings.pending.html'),\r\n data: { title: \"Möten - Väntar på attest\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addmeeting\", {\r\n parent: 'authenticated',\r\n url: \"/meetings/add\",\r\n abstract: true,\r\n controller: \"MeetingController as ctrl\",\r\n template: require('./meetings/detail/addmeeting.html'),\r\n data: { title: \"Lägg till möte\" },\r\n resolve: {\r\n meetingShared: ['MeetingState', function (MeetingState) {\r\n return MeetingState.create();\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addmeeting.details\", {\r\n url: \"\",\r\n template: require('./meetings/detail/meeting.details.html'),\r\n controller: \"MeetingEditController as ctrl\",\r\n params: {\r\n initialOrganizationId: null\r\n }\r\n });\r\n\r\n $stateProvider.state(\"meeting\", {\r\n parent: 'authenticated',\r\n url: \"/meetings/{meetingId:guid}\",\r\n abstract: true,\r\n controller: \"MeetingController as meetingctrl\",\r\n template: require('./meetings/detail/meeting.html'),\r\n resolve: {\r\n meetingShared: ['$transition$', 'MeetingState', function ($transition$, MeetingState) {\r\n return MeetingState.create($transition$.params().meetingId);\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"meeting.details\", {\r\n url: \"\",\r\n controller: \"MeetingEditController as ctrl\",\r\n template: require('./meetings/detail/meeting.details.html'),\r\n data: { title: \"Möte - Uppgifter\" }\r\n });\r\n\r\n $stateProvider.state(\"meeting.attendance\", {\r\n url: \"/attendance\",\r\n controller: \"AttendanceController as ctrl\",\r\n template: require('./meetings/detail/meeting.attendance.html'),\r\n data: { title: \"Möte - Närvaro\" }\r\n });\r\n\r\n $stateProvider.state(\"meeting.payroll\", {\r\n url: \"/payroll\",\r\n controller: \"PayrollController as ctrl\",\r\n template: require('./meetings/detail/meeting.payroll.html'),\r\n data: { title: \"Möte - Arvoden\" }\r\n });\r\n\r\n $stateProvider.state(\"parties\", {\r\n parent: 'authenticated',\r\n url: \"/parties\",\r\n controller: \"PartiesController as ctrl\",\r\n template: require('./parties/parties.html'),\r\n data: { title: isTroman ? \"Partier\" : \"Kategorier\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"missiontypes\", {\r\n parent: 'authenticated',\r\n url: \"/missiontypes\",\r\n controller: \"MissionTypesController as ctrl\",\r\n template: require('./missionTypes/missionTypes.html'),\r\n data: { title: \"Uppdragstyper\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"divisions\", {\r\n parent: 'authenticated',\r\n url: \"/divisions\",\r\n controller: \"DivisionsController as ctrl\",\r\n template: require('./divisions/divisions.html'),\r\n data: { title: \"Valkretsar\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"organizationtypes\", {\r\n parent: 'authenticated',\r\n url: \"/organizationtypes\",\r\n controller: \"OrganizationTypesController as ctrl\",\r\n template: require('./organizationType/organizationTypes.html'),\r\n data: { title: \"Organisationstyper\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"systemsettings\", {\r\n parent: 'authenticated',\r\n url: \"/systemsettings\",\r\n controller: \"SystemSettingsController as ctrl\",\r\n template: require('./system/systemsettings.html'),\r\n data: { title: \"Systeminställningar\" }\r\n });\r\n\r\n $stateProvider.state(\"wagetypes\", {\r\n parent: 'authenticated',\r\n url: \"/wagetypes\",\r\n controller: \"WageTypesController as ctrl\",\r\n template: require('./wageType/wageTypes.html'),\r\n data: { title: \"Lönearter\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"wagecalculations\", {\r\n parent: 'authenticated',\r\n url: \"/wagecalculations\",\r\n controller: \"WageCalculationsController as ctrl\",\r\n template: require('./wageCalculation/wageCalculations.html'),\r\n data: { title: \"Beräkningsregler\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"wagegroups\", {\r\n parent: 'authenticated',\r\n url: \"/wagegroups\",\r\n controller: \"WageGroupsController as ctrl\",\r\n template: require('./wageGroup/wageGroups.html'),\r\n data: { title: \"Lönegrupper & Transaktioner\" },\r\n params: {\r\n criteria: {\r\n dynamic: true,\r\n },\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addwagegroup\", {\r\n parent: 'authenticated',\r\n url: \"/wagegroups/add\",\r\n abstract: true,\r\n controller: \"WageGroupController as wagegroupctrl\",\r\n template: require('./wageGroup/wageGroup.html'),\r\n data: { title: \"Lägg till lönegrupp\" },\r\n resolve: {\r\n wageGroupShared: ['WageGroupState', function (WageGroupState) {\r\n return WageGroupState.create();\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addwagegroup.details\", {\r\n url: \"\",\r\n controller: \"WageGroupDetailsController as ctrl\",\r\n template: require('./wageGroup/wageGroup.details.html')\r\n });\r\n\r\n $stateProvider.state(\"wagegroup\", {\r\n parent: 'authenticated',\r\n url: \"/wagegroups/{wageGroupId:guid}\",\r\n abstract: true,\r\n controller: \"WageGroupController as wagegroupctrl\",\r\n template: require('./wageGroup/wageGroup.html'),\r\n resolve: {\r\n wageGroupShared: ['$transition$', 'WageGroupState', function ($transition$, WageGroupState) {\r\n return WageGroupState.create($transition$.params().wageGroupId);\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"wagegroup.details\", {\r\n url: \"\",\r\n controller: \"WageGroupDetailsController as ctrl\",\r\n template: require('./wageGroup/wageGroup.details.html'),\r\n data: { title: \"Lönegrupp - Uppgifter\" }\r\n });\r\n\r\n $stateProvider.state(\"wagegroup.organizations\", {\r\n url: \"/organizations\",\r\n controller: \"WageGroupOrganizationsController as ctrl\",\r\n template: require('./wageGroup/wageGroup.organizations.html'),\r\n data: { title: \"Lönegrupp - Organisationer\" }\r\n });\r\n\r\n $stateProvider.state(\"wagegroup.transactions\", {\r\n url: \"/transactions\",\r\n controller: \"WageGroupTransactionsController as ctrl\",\r\n template: require('./wageGroup/wageGroup.transactions.html'),\r\n data: { title: \"Lönegrupp - Lönetransaktioner\" }\r\n });\r\n\r\n $stateProvider.state(\"wagegroup.history\", {\r\n url: \"/history\",\r\n controller: \"WageGroupHistoryController as ctrl\",\r\n template: require('./wageGroup/wageGroup.history.html'),\r\n data: { title: \"Lönegrupp - Historik\" }\r\n });\r\n \r\n $stateProvider.state(\"missiongroups\", {\r\n parent: 'authenticated',\r\n url: \"/missiongroups\",\r\n controller: \"MissionGroupsController as ctrl\",\r\n template: require('./missionGroups/missionGroups.html'),\r\n data: { title: \"Plocklistor\" },\r\n params: {\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addmissiongroup\", {\r\n parent: 'authenticated',\r\n url: \"/missiongroups/add\",\r\n abstract: true,\r\n controller: \"MissionGroupController as mgctrl\",\r\n template: require('./missionGroups/addMissionGroup.html'),\r\n data: { title: \"Lägg till plocklista\" },\r\n resolve: {\r\n missionGroupShared: ['MissionGroupState', function (MissionGroupState) {\r\n return MissionGroupState.create();\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"addmissiongroup.details\", {\r\n url: \"\",\r\n template: require('./missionGroups/missionGroup.details.html'),\r\n controller: \"MissionGroupDetailsController as ctrl\",\r\n });\r\n\r\n $stateProvider.state(\"missiongroup\", {\r\n parent: 'authenticated',\r\n url: \"/missiongroups/{missionGroupId:guid}\",\r\n abstract: true,\r\n controller: \"MissionGroupController as mgctrl\",\r\n template: require('./missionGroups/missionGroup.html'),\r\n resolve: {\r\n missionGroupShared: ['$transition$', 'MissionGroupState', function ($transition$, MissionGroupState) {\r\n return MissionGroupState.create($transition$.params().missionGroupId);\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"missiongroup.details\", {\r\n url: \"/details\",\r\n controller: \"MissionGroupDetailsController as ctrl\",\r\n template: require('./missionGroups/missionGroup.details.html'),\r\n data: { title: \"Plocklista - Uppgifter\" }\r\n });\r\n\r\n $stateProvider.state(\"missiongroup.missions\", {\r\n url: \"/\",\r\n controller: \"MissionGroupMissionsController as ctrl\",\r\n template: require('./missionGroups/missionGroup.missions.html'),\r\n data: { title: \"Plocklista\" },\r\n params: {\r\n filter: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $stateProvider.state(\"ceremony\", {\r\n parent: 'authenticated',\r\n url: \"/politiker-meeting/{eventId:guid}\",\r\n controller: \"CeremonyController as ctrl\",\r\n template: require('./meetings/ceremony/ceremony.html'),\r\n resolve: {\r\n eventId: ['$transition$', function ($transition$) {\r\n return $transition$.params().eventId;\r\n }]\r\n }\r\n });\r\n\r\n $stateProvider.state(\"politikersettings\", {\r\n parent: 'authenticated',\r\n url: \"/politiker-settings\",\r\n controller: \"PolitikerSettingsController as ctrl\",\r\n template: require('./politikerSettings/politikerSettings.html'),\r\n data: { title: \"Inställning för Troman Politiker\" },\r\n });\r\n\r\n $stateProvider.state(\"pendingcertification\", {\r\n parent: 'authenticated',\r\n url: \"/pending-certification\",\r\n controller: \"PendingCertificationController as ctrl\",\r\n template: require('./pendingCertification/pendingCertification.html'),\r\n data: { title: \"Attestanter\" },\r\n params: {\r\n filter: {\r\n dynamic: true,\r\n },\r\n filterPending: {\r\n dynamic: true,\r\n }\r\n }\r\n });\r\n\r\n $urlRouterProvider.otherwise(\"/\");\r\n}]);\r\n\r\nangular.module('tromanWeb').service('tromanGlobals', function () {\r\n this.systemInfo = null;\r\n this.userProfile = null;\r\n});\r\n\r\nangular.module('tromanWeb').run(['$rootScope', '$transitions', '$timeout', 'isTroman', function ($rootScope, $transitions, $timeout, isTroman) {\r\n\r\n var pageTitle = isTroman ? 'Troman Webb' : 'Valman Webb';\r\n\r\n $rootScope.$shared = $rootScope.$shared || {};\r\n $rootScope.$shared.isTroman = isTroman;\r\n $rootScope.$shared.title = pageTitle;\r\n\r\n $transitions.onSuccess({}, function (transition) {\r\n var title = pageTitle;\r\n var toState = transition.to();\r\n if (toState && toState.data && toState.data.title) {\r\n title = pageTitle + \" - \" + toState.data.title;\r\n }\r\n // The change to document.location ($location.url) happens after the event is sent\r\n // because $location.url (during the next digest cycle).\r\n // Allow that change to happen before updating the title so\r\n // that browser history correctly matches title/url.\r\n //\r\n // It would probably also be possible to update the title in response to $locationChangeSuccess\r\n // But the same issue arises that the resulting transition would have to have started so that the target state can be found.\r\n $timeout(function () {\r\n $rootScope.$shared.title = title;\r\n });\r\n });\r\n}]);\r\n\r\n","import * as _ from 'lodash';\r\nimport { attachmentTypes } from '../objects/Attachment';\r\n\r\n/**\r\n * @typedef { import('../objects/Attachment').AttachmentInfo } AttachmentInfo\r\n * @typedef { import('../directives/ergoFileInput').FileResult } FileResult\r\n */\r\n\r\n/**\r\n * @param {ExistingFileInfo|CopyFileInfo} a \r\n * @param {ExistingFileInfo|CopyFileInfo} b \r\n */\r\nexport function compareByTimestamp(a, b) {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return 1;\r\n if (b == null) return -1;\r\n\r\n return (a.timestamp?.getTime() || 0) - (b.timestamp?.getTime() || 0);\r\n}\r\n\r\n/**\r\n * @param {ExistingFileInfo|CopyFileInfo} a \r\n * @param {ExistingFileInfo|CopyFileInfo} b \r\n */\r\nexport function compareByTitle(a, b) {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return 1;\r\n if (b == null) return -1;\r\n\r\n const atxt = a.description ? a.description : a.name;\r\n const btxt = b.description ? b.description : b.name;\r\n\r\n if (atxt) {\r\n if (btxt) {\r\n let res = atxt.localeCompare(btxt, 'sv', { numeric: true });\r\n if (res != 0) {\r\n return res;\r\n }\r\n } else {\r\n return -1;\r\n }\r\n } else if (b.description) {\r\n return 1;\r\n }\r\n\r\n return compareByTimestamp(a, b);\r\n}\r\n\r\nexport class AttachmentCollection {\r\n /**\r\n * @param {AttachmentInfo[]} existing\r\n * @param {AttachmentInfo[]} copyable\r\n * @param {?(a: FileInfo, b:FileInfo)=>number} fileInfoComparer\r\n */\r\n constructor(existing, copyable, fileInfoComparer) {\r\n /** @type {string[]} */\r\n this.removed = [];\r\n\r\n /** @type {AddedFileInfo[]} */\r\n this.added = [];\r\n\r\n /** @type {ExistingFileInfo[]} */\r\n this.existing = _.map(existing, x => new ExistingFileInfo(x));\r\n this.existing.sort(fileInfoComparer || compareByTimestamp);\r\n\r\n /** @type {CopyFileInfo[]} */\r\n this.copyable = _.map(copyable, x => new CopyFileInfo(x));\r\n this.copyable.sort(fileInfoComparer || compareByTimestamp);\r\n\r\n /** @type {FileInfo[]} */\r\n this.files = this.existing.slice();\r\n\r\n this._addedSize = 0;\r\n }\r\n\r\n isValid() {\r\n return this._addedSize < 100_000_000;\r\n }\r\n\r\n get hasCopyable() {\r\n return this.copyable.length > 0;\r\n }\r\n\r\n hasChanges() {\r\n return this.added.length > 0 ||\r\n this.removed.length > 0 ||\r\n _.some(this.copyable, x => x.isSelected) ||\r\n _.some(this.existing, x => x.isChanged());\r\n }\r\n\r\n /**\r\n * @param {FileResult[]} fileResult\r\n */\r\n addFiles(fileResults) {\r\n const newfiles = _.map(fileResults, x => new AddedFileInfo(x, attachmentTypes.unspecified));\r\n const newSize = _.reduce(newfiles, (a, x) => a + x.size, 0);\r\n this.added = _.concat(newfiles, this.added);\r\n this.files = _.concat(this.added, this.existing);\r\n this._addedSize += newSize;\r\n }\r\n\r\n /**\r\n * @param {AddedFileInfo|ExistingFileInfo} file\r\n */\r\n removeFile(file) {\r\n if (file instanceof AddedFileInfo) {\r\n this.added = _.without(this.added, file);\r\n this.files = _.concat(this.added, this.existing);\r\n this._addedSize -= file.size;\r\n } else if (file instanceof ExistingFileInfo) {\r\n this.existing = _.without(this.existing, file);\r\n this.files = _.concat(this.added, this.existing);\r\n this.removed.push(file.id);\r\n }\r\n }\r\n\r\n createUpdate() {\r\n return {\r\n Added: this.added.map(x => x.createAdd()),\r\n Updated: this.existing.filter(x => x.isChanged()).map(x => x.createUpdate()),\r\n Removed: this.removed.slice(),\r\n Copied: this.copyable.filter(x => x.isSelected).map(x => x.createCopy()),\r\n };\r\n }\r\n}\r\n\r\nexport class FileInfo {\r\n /**\r\n * @param {string} key\r\n * @param {string} name\r\n * @param {string} description\r\n * @param {number} attachmentType\r\n */\r\n constructor(key, name, description, attachmentType) {\r\n this.key = key;\r\n this.name = name;\r\n this.description = description || '';\r\n this.attachmentType = attachmentType;\r\n this.showPolitiker = false;\r\n this.showPublik = false;\r\n this.isAdded = false;\r\n }\r\n}\r\n\r\nexport class CopyFileInfo extends FileInfo {\r\n /**\r\n * @param {AttachmentInfo} source\r\n */\r\n constructor(source) {\r\n super(source.Id, source.Filename, source.Description, attachmentTypes.unspecified);\r\n this.id = source.Id;\r\n this.timestamp = source.CreatedTimestamp;\r\n this.isSelected = false;\r\n }\r\n\r\n createCopy() {\r\n return {\r\n SourceId: this.id,\r\n AttachmentType: this.attachmentType,\r\n Description: this.description,\r\n ShowPolitiker: this.showPolitiker,\r\n ShowPublik: this.showPublik,\r\n };\r\n }\r\n}\r\n\r\nexport class ExistingFileInfo extends FileInfo {\r\n /**\r\n * @param {AttachmentInfo} attachment\r\n */\r\n constructor(attachment) {\r\n super(attachment.Id, attachment.Filename, attachment.Description, attachment.AttachmentType);\r\n this.id = attachment.Id;\r\n this.showPolitiker = attachment.ShowPolitiker;\r\n this.showPublik = attachment.ShowPublik;\r\n this.attachment = attachment;\r\n this.timestamp = attachment.CreatedTimestamp;\r\n }\r\n\r\n isChanged() {\r\n if (this.attachment.Description !== this.description) return true;\r\n if (this.attachment.ShowPolitiker !== this.showPolitiker) return true;\r\n if (this.attachment.ShowPublik !== this.showPublik) return true;\r\n return false;\r\n }\r\n\r\n createUpdate() {\r\n return {\r\n Id: this.id,\r\n Description: this.description,\r\n ShowPolitiker: this.showPolitiker,\r\n ShowPublik: this.showPublik,\r\n };\r\n }\r\n}\r\n\r\nexport class AddedFileInfo extends FileInfo {\r\n static _index = 0;\r\n\r\n /**\r\n * @param {FileResult} fileResult\r\n * @param {number} attachmentType\r\n */\r\n constructor(fileResult, attachmentType) {\r\n super('added' + (AddedFileInfo._index++), fileResult.name, '', attachmentType);\r\n this.isAdded = true;\r\n this.size = fileResult.size;\r\n this.type = fileResult.type;\r\n this.data = fileResult.data;\r\n }\r\n\r\n dataBase64() {\r\n let pos = this.data.indexOf(';base64,');\r\n if (pos < 0) throw new Error('base64 tag not found');\r\n return this.data.substring(pos + 8);\r\n }\r\n\r\n toBlob() {\r\n let b64 = this.dataBase64();\r\n let bin = atob(b64);\r\n let array = new Uint8Array(bin.length);\r\n for (let ii = 0; ii < bin.length; ++ii) {\r\n array[ii] = bin.charCodeAt(ii);\r\n }\r\n return new Blob([array], { type: this.type });\r\n }\r\n\r\n createAdd() {\r\n return {\r\n AttachmentType: this.attachmentType,\r\n Filename: this.name,\r\n Data: this.dataBase64(),\r\n Description: this.description,\r\n ShowPolitiker: this.showPolitiker,\r\n ShowPublik: this.showPublik,\r\n };\r\n }\r\n}","import './attachments.less';\r\n\r\nimport { AddedFileInfo, CopyFileInfo, ExistingFileInfo } from './AttachmentCollection';\r\n\r\n/**\r\n * @typedef { import('./AttachmentCollection').AttachmentCollection } AttachmentCollection\r\n */\r\n\r\nclass AttachmentComponentController {\r\n static $inject = ['tromanServer', 'downloadService', 'tromanGlobals'];\r\n\r\n constructor(tromanServer, downloadService, tromanGlobals) {\r\n this._tromanServer = tromanServer;\r\n this._downloadService = downloadService;\r\n this._isPolitikerEnabled = tromanGlobals.systemInfo.IsPolitikerEnabled;\r\n\r\n /** @type {AttachmentCollection} */\r\n this.collection = null;\r\n\r\n this.isCopying = false;\r\n this.showPolitiker = false;\r\n this.showPublik = false;\r\n this.showDate = false;\r\n }\r\n\r\n $onInit() {\r\n this.isCopying = !!this.copy;\r\n\r\n if (this.mode === 'meeting') {\r\n this.showPolitiker = this._isPolitikerEnabled;\r\n this.showPublik = true;\r\n } else if (this.mode === 'person') {\r\n this.showDate = true;\r\n } else if (this.mode === 'organization') {\r\n this.showDate = true;\r\n }\r\n }\r\n\r\n get files() {\r\n if (this.collection == null) return null;\r\n\r\n if (this.isCopying) {\r\n return this.collection.copyable;\r\n } else {\r\n return this.collection.files;\r\n }\r\n }\r\n\r\n removeFile(file) {\r\n if (this.collection == null) return;\r\n\r\n this.collection.removeFile(file);\r\n }\r\n\r\n downloadFile(file) {\r\n if (file instanceof AddedFileInfo) {\r\n this._downloadService.downloadBlob(file.toBlob(), file.name);\r\n } else if (file instanceof ExistingFileInfo) {\r\n this._tromanServer.Files.downloadAttachment(file.id)\r\n .then(rsp => this._downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n } else if (file instanceof CopyFileInfo) {\r\n this._tromanServer.Files.downloadAttachment(file.id)\r\n .then(rsp => this._downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component(\"ergoAttachmentComponent\", {\r\n template: require('./attachmentComponent.html'),\r\n bindings: {\r\n collection: '<',\r\n mode: '@',\r\n copy: '@',\r\n },\r\n controller: AttachmentComponentController\r\n});\r\n","angular.module(\"tromanWeb\").controller('AwardEditController', ['$q', 'DialogControllerBase', '$scope', 'tromanServer', 'award', function ($q, DialogControllerBase, $scope, tromanServer, award) {\r\n\r\n var self = this;\r\n DialogControllerBase.call(self, tromanServer.Awards, $scope);\r\n\r\n self.getTitle = function () { return '\"' + self.award.Name + '\"'; };\r\n self.getItem = function () { return self.award; };\r\n\r\n function load() {\r\n self.loadItem(award)\r\n .then(loadRelated)\r\n .then(loaded)\r\n .catch(self.showError);\r\n }\r\n\r\n function loaded(data) {\r\n angular.extend(self, data);\r\n }\r\n\r\n function loadRelated(loadedAward) {\r\n return $q.all({\r\n award: $q.when(loadedAward)\r\n });\r\n }\r\n\r\n load();\r\n\r\n}]);\r\n","import './auditlog.less';\r\n\r\nimport _ from 'lodash';\r\nimport { auditIncidents } from '../../objects/Audit';\r\n\r\n/**\r\n * @typedef { import('../../objects/Audit').AuditData } AuditData\r\n * @typedef { import('../../../common/account/UserData').UserData } UserData\r\n */\r\n\r\n/**\r\n * @template T, V\r\n * @param {T[]} entries \r\n * @param {(T) => V} trimWith\r\n * @param {V[]} trimValues \r\n * @returns {T[]}\r\n */\r\nfunction trimRepeats(entries, trimWith, trimValues) {\r\n if (entries.length === 0) return [];\r\n \r\n let previousValue = trimWith(entries[0]);\r\n let result = [entries[0]];\r\n\r\n for (let ii=1; ii} users\r\n */\r\nfunction getUserName(auditData, users){\r\n if (auditData.UserId) {\r\n let user = users.get(auditData.UserId);\r\n if (user) {\r\n return user.displayName || 'Okänd användare';\r\n } else {\r\n return 'Okänd användare';\r\n }\r\n } else if (auditData.PersonId) {\r\n return auditData.Person?.display;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nfunction getIncidentText(incident) {\r\n switch (incident) {\r\n case auditIncidents.ceremonyReported: return 'Rapporterad';\r\n case auditIncidents.ceremonyRejected: return 'Avslagen';\r\n case auditIncidents.ceremonyAccepted: return 'Godkänd';\r\n case auditIncidents.ceremonyReset: return 'Närvaro borttagen';\r\n case auditIncidents.timeRequested: return 'Begärd';\r\n case auditIncidents.timeReported: return 'Rapporterad';\r\n case auditIncidents.timeRejected: return 'Avslagen';\r\n case auditIncidents.timeAccepted: return 'Godkänd';\r\n case auditIncidents.timeRecalled: return 'Återkallad';\r\n case auditIncidents.timeRemoved: return 'Återkallad';\r\n case auditIncidents.detachedMission: return 'Uppdrag borttaget';\r\n case auditIncidents.detachedEvent: return 'Närvaro borttagen';\r\n case auditIncidents.claimReported: return 'Rapporterad';\r\n case auditIncidents.claimRejected: return 'Avslagen';\r\n case auditIncidents.claimReset: return 'Återställd';\r\n case auditIncidents.claimAccepted: return 'Godkänd';\r\n case auditIncidents.claimRecalled: return 'Återkallad';\r\n case auditIncidents.certificationRequested: return 'Attest begärd';\r\n case auditIncidents.certificationRecalled: return 'Attest återkallad';\r\n case auditIncidents.certificationRejected: return 'Attest avslagen';\r\n case auditIncidents.certificationAccepted: return 'Attesterad';\r\n case auditIncidents.certificationClaimRejected: return 'Attest/anspråk avslaget';\r\n default: return 'Okänd händelse';\r\n }\r\n}\r\n\r\n// The important order is where two incidents have the same timestamp\r\n// Currently this is only known to be an issue for:\r\n// ClaimAccepted and CertificationRequested\r\nconst auditIncidentOrder = new Map([\r\n auditIncidents.ceremonyAccepted,\r\n auditIncidents.ceremonyReported,\r\n auditIncidents.ceremonyRejected,\r\n auditIncidents.ceremonyAccepted,\r\n auditIncidents.ceremonyReset,\r\n auditIncidents.timeRequested,\r\n auditIncidents.timeReported,\r\n auditIncidents.timeRejected,\r\n auditIncidents.timeAccepted,\r\n auditIncidents.timeRecalled,\r\n auditIncidents.timeRemoved,\r\n auditIncidents.detachedMission,\r\n auditIncidents.detachedEvent,\r\n auditIncidents.claimReported,\r\n auditIncidents.claimRejected,\r\n auditIncidents.claimReset,\r\n auditIncidents.claimAccepted,\r\n auditIncidents.certificationRequested,\r\n auditIncidents.certificationRecalled,\r\n auditIncidents.certificationRejected,\r\n auditIncidents.certificationAccepted,\r\n auditIncidents.certificationClaimRejected,\r\n].map((v, i) => [v, i]));\r\n\r\nconst trimRepeatIncidents = [auditIncidents.ceremonyReported, auditIncidents.timeReported, auditIncidents.claimReported];\r\n\r\nexport class AuditEntry {\r\n /**\r\n * @param {Date} timestamp \r\n * @param {string} incident \r\n * @param {string?} message \r\n * @param {string?} user \r\n */\r\n constructor(timestamp, incident, message, user) {\r\n this.timestamp = timestamp;\r\n this.incident = incident;\r\n this.message = message;\r\n this.user = user;\r\n }\r\n\r\n /**\r\n * @param {AuditData[]} src\r\n * @param {UserData[]} users\r\n * @param \r\n * @returns {AuditEntry[]}\r\n */\r\n static generateAudit(src, users) {\r\n if (!_.isArray(src)) return [];\r\n if (src.length === 0) return [];\r\n \r\n let userMap = new Map();\r\n _.forEach(users, x => userMap.set(x.Id, x));\r\n \r\n let ordered = _.orderBy(src, [x => x.Timestamp, x => auditIncidentOrder.get(x.Incident)]);\r\n let filtered = trimRepeats(ordered, x => x.Incident, trimRepeatIncidents);\r\n return _.map(filtered, x => new AuditEntry(x.Timestamp, getIncidentText(x.Incident), x.Message, getUserName(x, userMap)));\r\n }\r\n}\r\n\r\nclass AuditLogController {\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoAuditLog', {\r\n template: require('./auditlog.html'),\r\n bindings: {\r\n entries: '<',\r\n },\r\n controller: AuditLogController,\r\n});","import * as _ from 'lodash';\r\nimport * as reportLimits from '../reports/reportLimits';\r\n\r\nangular.module(\"tromanWeb\").controller('EmailListController', ['persons', 'reportService', 'downloadService', '$uibModalInstance', function (persons, reportService, downloadService, $uibModalInstance) {\r\n\r\n this.$onInit = function () {\r\n this.persons = persons;\r\n this.kind = 'public';\r\n this.separator = ';';\r\n this.emails = [];\r\n this.receivers = '';\r\n this.missing = [];\r\n this.noreceiver = '';\r\n this.format = 1;\r\n\r\n this.calculateEmails();\r\n };\r\n\r\n function getPublicEmails(person) {\r\n if (person.emailPublic && person.emailPublic.Email) {\r\n var email = person.emailPublic.Email.trim();\r\n if (email.length > 0) {\r\n return [email];\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n function getMessageEmails(person) {\r\n\r\n function includeEmail(list, obj) {\r\n if (obj && obj.UseForMessages && obj.Email) {\r\n var email = obj.Email.trim();\r\n if (email.length > 0)\r\n list.push(email);\r\n }\r\n }\r\n\r\n var ret = [];\r\n includeEmail(ret, person.emailPublic);\r\n includeEmail(ret, person.emailInternal);\r\n includeEmail(ret, person.emailPrivate);\r\n return ret;\r\n }\r\n\r\n function getAllEmails(person) {\r\n\r\n function includeEmail(list, obj) {\r\n if (obj && obj.Email) {\r\n var email = obj.Email.trim();\r\n if (email.length > 0)\r\n list.push(email);\r\n }\r\n }\r\n\r\n var ret = [];\r\n includeEmail(ret, person.emailPublic);\r\n includeEmail(ret, person.emailInternal);\r\n includeEmail(ret, person.emailPrivate);\r\n return ret;\r\n }\r\n\r\n this.calculateEmails = function calculateEmails() {\r\n var getEmails = (this.kind === 'public') ? getPublicEmails : (this.kind === 'message') ? getMessageEmails : getAllEmails;\r\n var emails = [];\r\n var missing = [];\r\n\r\n _.forEach(persons, x => {\r\n var pes = getEmails(x);\r\n if (pes.length > 0) {\r\n emails.push(pes);\r\n } else {\r\n missing.push(x);\r\n }\r\n });\r\n\r\n this.emails = _.flatten(emails);\r\n this.missing = missing;\r\n this.receivers = this.emails.join(this.separator);\r\n this.noreceiver = this.missing.map(x => x.name).join(', ');\r\n if (this.missing.length > reportLimits.MaxPersonIds) {\r\n this.error = 'Kan inte skapa etiketter till fler än ' + reportLimits.MaxPersonIds + ' personer.';\r\n } else {\r\n this.error = null;\r\n }\r\n };\r\n\r\n this.kindChanged = function () {\r\n this.calculateEmails();\r\n };\r\n\r\n this.separatorChanged = function () {\r\n this.receivers = this.emails.join(this.separator);\r\n };\r\n\r\n this.ok = function ok() {\r\n $uibModalInstance.close(true);\r\n };\r\n\r\n this.canGenerateLabels = function canGenerateLabels() {\r\n return this.missing.length > 0 && this.missing.length <= reportLimits.MaxPersonIds;\r\n };\r\n\r\n this.generateLabels = function generateLabels() {\r\n\r\n if (!this.canGenerateLabels()) return;\r\n\r\n this.isSaving = true;\r\n this.error = null;\r\n\r\n reportService\r\n .getPersonReports()\r\n .then(reports => {\r\n const report = _.find(reports, x => x.Id === 'Label_70x36');\r\n const args = reportService.getDefaultArguments(report);\r\n args.Query.PersonIds = this.missing.map(x => x.Id);\r\n args.Options.Format = this.format;\r\n\r\n return reportService\r\n .generate(report.Id, args)\r\n .finally(() => this.isSaving = false)\r\n .then(rsp => downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n })\r\n .catch(err => void (this.error = err));\r\n };\r\n}]);\r\n","angular.module('tromanWeb').factory('dialogService', ['$uibModal', 'alertDialog', 'errorDialog', 'Metadata', function ($uibModal, alertDialog, errorDialog, Metadata) {\r\n\r\n var so = {};\r\n\r\n so.confirmAdvanced = function confirmAdvanced(opts) {\r\n return alertDialog.confirmAdvanced(opts);\r\n };\r\n\r\n so.confirm = function confirm(message, title) {\r\n return alertDialog.confirm(message, title);\r\n };\r\n\r\n so.notify = function notify(message, title) {\r\n return alertDialog.notify(message, title);\r\n };\r\n\r\n so.warning = function warning(message) {\r\n return alertDialog.warning(message);\r\n };\r\n\r\n so.error = function error(err) {\r\n return errorDialog.show(err);\r\n };\r\n\r\n so.editMission = function editMission(mission, existingMissionsToCheck) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../missions/missionEdit.html'),\r\n controller: 'MissionEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n mission: function () { return mission; },\r\n existingMissionsToCheck: function () { return existingMissionsToCheck; },\r\n }\r\n }).result;\r\n };\r\n\r\n function updateMission(missions, organization, person) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../missions/missionUpdate.html'),\r\n controller: 'MissionUpdateController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n missions: function () { return missions; },\r\n organization: function () { return organization; },\r\n person: function () { return person; }\r\n }\r\n }).result;\r\n }\r\n\r\n so.updateOrganizationMissions = function updateOrganizationMissions(missions, organization) {\r\n return updateMission(missions, organization, null);\r\n };\r\n\r\n so.updatePersonMissions = function updatePersonMissions(missions, person) {\r\n return updateMission(missions, null, person);\r\n };\r\n\r\n so.editMandatePeriod = function editMandatePeriod(mandatePeriod) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../mandate/mandateEdit.html'),\r\n controller: 'MandateEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n mandatePeriod: function () { return mandatePeriod; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editAward = function editAward(award) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../awards/awardEdit.html'),\r\n controller: 'AwardEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n award: function () { return award; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editMissionType = function editMissionType(missionType) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../missionTypes/missionTypeEdit.html'),\r\n controller: 'MissionTypeEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n missionType: function () { return missionType; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editParty = function editParty(party) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../parties/partyEdit.html'),\r\n controller: 'PartyEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n party: function () { return party; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editDivision = function editDivision(division) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../divisions/divisionEdit.html'),\r\n controller: 'DivisionEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n division: function () { return division; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editOrganizationType = function editOrganizationType(organizationType) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../organizationType/organizationTypeEdit.html'),\r\n controller: 'OrganizationTypeEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n organizationType: function () { return organizationType; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editEquipment = function editEquipment(equipment) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../equipment/equipmentEdit.html'),\r\n controller: 'EquipmentEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n equipment: function () { return equipment; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editWageType = function editWageType(wageType) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../wageType/wageTypeEdit.html'),\r\n controller: 'WageTypeEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n wageType: function () { return wageType; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.editWageCalculation = function editWageCalculation(wageCalculation) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../wageCalculation/wageCalculationEdit.html'),\r\n controller: 'WageCalculationEditController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n wageCalculation: function () { return wageCalculation; }\r\n }\r\n }).result;\r\n };\r\n\r\n function showListBuilder(list, definition, title) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../lists/listBuilder.html'),\r\n controller: 'ListBuilderController as lbc',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n list: function () { return list; },\r\n definition: function () { return definition; },\r\n title: function () { return title; }\r\n }\r\n }).result;\r\n }\r\n\r\n so.createPersonList = function createPersonList(list) {\r\n return showListBuilder(list, Metadata.Person);\r\n };\r\n\r\n so.createPartyList = function createPartyList(list) {\r\n return showListBuilder(list, Metadata.Party);\r\n };\r\n\r\n so.createOrganizationList = function createOrganizationList(list) {\r\n return showListBuilder(list, Metadata.Organization);\r\n };\r\n\r\n so.createMissionList = function createMissionList(list) {\r\n return showListBuilder(list, Metadata.Mission);\r\n };\r\n\r\n so.createEquipmentList = function createEquipmentList(list, title) {\r\n return showListBuilder(list, Metadata.Equipment, title);\r\n };\r\n\r\n so.createAwardList = function createAwardList(list, title) {\r\n return showListBuilder(list, Metadata.Award, title);\r\n };\r\n\r\n so.createMissionTypeList = function createMissionTypeList(list) {\r\n return showListBuilder(list, Metadata.MissionType);\r\n };\r\n\r\n so.createDivisionList = function createDivisionList(list) {\r\n return showListBuilder(list, Metadata.Division);\r\n };\r\n\r\n so.createOrganizationTypeList = function (list) {\r\n return showListBuilder(list, Metadata.OrganizationType);\r\n };\r\n\r\n so.createMeetingList = function (list) {\r\n return showListBuilder(list, Metadata.Meeting);\r\n };\r\n\r\n so.createAttendanceModelList = function (list) {\r\n return showListBuilder(list, Metadata.AttendanceModel);\r\n };\r\n\r\n so.createWageTypeList = function (list) {\r\n return showListBuilder(list, Metadata.WageType);\r\n };\r\n\r\n so.createWageCalculationList = function (list) {\r\n return showListBuilder(list, Metadata.WageCalculation);\r\n };\r\n\r\n so.createWageGroupList = function (list) {\r\n return showListBuilder(list, Metadata.WageGroup);\r\n };\r\n\r\n so.createEmailList = function createEmailList(persons) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('./emailList.html'),\r\n controller: 'EmailListController as emailctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n persons: function () { return persons; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.createReport = function createReport(filter) {\r\n return $uibModal.open({\r\n component: 'ergoReportDialog',\r\n animation: true,\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n filter: function () { return filter; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.setAttendanceMission = function setAttendanceMission(missions, attendance) {\r\n return $uibModal.open({\r\n component: 'ergoAttendanceDialog',\r\n animation: true,\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n missions: function () { return missions; },\r\n attendance: function () { return attendance; }\r\n }\r\n }).result;\r\n };\r\n\r\n so.addToMissionGroup = function addToMissionGroup(missions, currentMissionGroupId) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../missionGroups/updateMissionGroup.html'),\r\n controller: 'UpdateMissionGroupController as ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n missions: function () { return missions; },\r\n currentMissionGroupId: function () { return currentMissionGroupId; },\r\n }\r\n }).result;\r\n };\r\n\r\n so.showPaymentGroup = function (paymentGroup) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../payroll/groupDialog/groupDialog.html'),\r\n controller: 'GroupDialogController as $ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n paymentGroup: function () { return paymentGroup; },\r\n }\r\n }).result;\r\n };\r\n\r\n so.showCeremony = function (ceremonyId) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../meetings/ceremony/dialog/ceremonyDialog.html'),\r\n controller: 'CeremonyDialogController as $ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n ceremonyId: function () { return ceremonyId; },\r\n }\r\n }).result;\r\n };\r\n\r\n so.showAttendanceTimeReport = function (attendance, canRecall) {\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('../meetings/timereport/timeReportDialog.html'),\r\n controller: 'TimeReportDialogController as $ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n attendance: function () { return attendance; },\r\n canRecall: function () { return canRecall; }\r\n }\r\n }).result;\r\n };\r\n\r\n return so;\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoCombo\", ['$parse', '$exceptionHandler', function ($parse, $exceptionHandler) {\r\n\r\n var optionsRe = /^\\s*([\\s\\S]+?)\\s+for\\s+([$\\w][$\\w]*)\\s+in\\s+([\\s\\S]+?)\\s+(track\\s+by|save\\s+as)\\s+([\\s\\S]+?)(\\s+group\\s+by\\s+([\\s\\S]+?))?\\s*$/;\r\n\r\n function parseConfiguration(scope, attributes) {\r\n\r\n var match = attributes.ergoOptions.match(optionsRe);\r\n if (match == null) {\r\n throw 'Invalid Expression: \"' + attributes.ergoOptions + '\"';\r\n }\r\n\r\n var locals = {};\r\n var name = match[2];\r\n var labelfn = $parse(match[1]);\r\n var idfn = $parse(match[5]);\r\n var colfn = $parse(match[3]);\r\n\r\n var hasGroup = !!match[6] && attributes.ergoGroup;\r\n var groupFn = hasGroup && $parse(match[7]);\r\n\r\n return {\r\n isMultiple: !!attributes.multiple,\r\n byreference: !!attributes.byreference,\r\n saveId: match[4].startsWith('s'),\r\n getLabel: function (obj) {\r\n locals[name] = obj;\r\n return labelfn(scope, locals);\r\n },\r\n getId: function (obj) {\r\n locals[name] = obj;\r\n return idfn(scope, locals);\r\n },\r\n getCollection: function getRawCollection() {\r\n var src = colfn(scope);\r\n if (_.isArray(src)) {\r\n return src;\r\n }\r\n },\r\n hasGroup: hasGroup,\r\n getGroup: hasGroup ? (function (obj) {\r\n locals[name] = obj;\r\n return groupFn(scope, locals);\r\n }) : (function () { }),\r\n groupName: attributes.ergoGroup,\r\n };\r\n }\r\n\r\n function parsePlaceholder(scope, attributes) {\r\n if (attributes.ergoPlaceholder) {\r\n try {\r\n return scope.$eval(attributes.ergoPlaceholder);\r\n } catch (err) {\r\n $exceptionHandler(err);\r\n }\r\n } else {\r\n return attributes.placeholder;\r\n }\r\n }\r\n\r\n function OptionsCollection(configuration, objs) {\r\n\r\n let map = Object.create(null);\r\n let root = [];\r\n let grouped = [];\r\n\r\n _.forEach(objs, obj => {\r\n let proxy = {\r\n id: configuration.getId(obj),\r\n text: configuration.getLabel(obj) || '',\r\n obj: obj,\r\n };\r\n proxy.query = proxy.text.toLowerCase();\r\n\r\n map[proxy.id] = proxy;\r\n\r\n if (configuration.hasGroup && configuration.getGroup(obj)) {\r\n proxy.group = true;\r\n grouped.push(proxy);\r\n } else {\r\n root.push(proxy);\r\n }\r\n });\r\n\r\n this.idToProxy = function (id) {\r\n return map[id];\r\n };\r\n\r\n this.objToProxy = function (obj) {\r\n return map[configuration.getId(obj)];\r\n };\r\n\r\n this.query = function (text) {\r\n var find = text.toLowerCase();\r\n\r\n var results = root.filter(proxy => proxy.query.indexOf(find) !== -1);\r\n if (configuration.hasGroup) {\r\n results.push({\r\n id: '$$ergo-combo-group$$',\r\n text: configuration.groupName,\r\n disabled: true,\r\n children: grouped.filter(proxy => proxy.query.indexOf(find) !== -1)\r\n });\r\n }\r\n\r\n return {\r\n results: results,\r\n };\r\n };\r\n }\r\n\r\n function notNull(x) {\r\n return x != null;\r\n }\r\n\r\n return {\r\n restrict: \"E\",\r\n require: \"ngModel\",\r\n template: '',\r\n link: function (scope, element, attributes, modelCtrl) {\r\n var inputEl = $('input', element);\r\n\r\n function forwardAttribute(name) {\r\n if (element.attr(name)) {\r\n var id = element.attr(name);\r\n element.removeAttr(name);\r\n inputEl.attr(name, id);\r\n }\r\n }\r\n\r\n forwardAttribute('id');\r\n forwardAttribute('tabindex');\r\n element.addClass('ergo-combo');\r\n\r\n var configuration = parseConfiguration(scope, attributes);\r\n /** @type {OptionsCollection} */\r\n var collection = new OptionsCollection(configuration, []);\r\n\r\n var proxy_to_model, model_to_proxy;\r\n\r\n if (configuration.saveId) {\r\n proxy_to_model = proxy => proxy && proxy.id;\r\n model_to_proxy = id => collection.idToProxy(id);\r\n } else {\r\n proxy_to_model = proxy => proxy && proxy.obj;\r\n model_to_proxy = obj => collection.objToProxy(obj);\r\n }\r\n\r\n if (configuration.isMultiple) {\r\n let ptm = proxy_to_model;\r\n proxy_to_model = proxies => _.filter(_.map(proxies, ptm), notNull);\r\n let mtp = model_to_proxy;\r\n model_to_proxy = models => _.filter(_.map(models, mtp), notNull);\r\n }\r\n\r\n if (configuration.isMultiple) {\r\n modelCtrl.$isEmpty = x => x == null || x.length == 0;\r\n } else {\r\n modelCtrl.$isEmpty = x => x == null;\r\n }\r\n\r\n /**\r\n * Determines if the model has changed.\r\n * Only checks if the newModel is empty/missing values that was in oldModel.\r\n * @param {any} oldModel\r\n * @param {any} newModel\r\n */\r\n function hasModelChanged(oldModel, newModel) {\r\n if (!modelCtrl.$isEmpty(oldModel)) {\r\n if (modelCtrl.$isEmpty(newModel)) {\r\n return true;\r\n }\r\n\r\n if (configuration.isMultiple) {\r\n if (oldModel.length !== newModel.length) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Callback when the collection changes.\r\n function watchCallback (newCollection, oldCollection) {\r\n // The view value is updated (at the end of this function) when the collection changes\r\n // and the new collection does not contain the old value.\r\n // This is done so that the view value always matches what is displayed in the control.\r\n // If the collection is empty/undefined, this means that the view value is cleared.\r\n //\r\n // For the first run, this behaviour is supressed so that the the collection can load\r\n // asynchronously even when the model/view value is immediately available.\r\n //\r\n // proxyCollection is already initialized with an empty list.\r\n if (newCollection === oldCollection && angular.isUndefined(newCollection)) return;\r\n\r\n var oldModel = modelCtrl.$viewValue;\r\n\r\n collection = new OptionsCollection(configuration, newCollection);\r\n\r\n var newProxy = model_to_proxy(oldModel);\r\n var newModel = proxy_to_model(newProxy);\r\n\r\n // Select new item (or null if the item is not in the new collection).\r\n inputEl.select2(\"data\", newProxy);\r\n\r\n if (hasModelChanged(oldModel, newModel)) {\r\n modelCtrl.$setViewValue(newModel);\r\n }\r\n }\r\n\r\n if (configuration.byreference) {\r\n scope.$watch(configuration.getCollection, watchCallback);\r\n } else {\r\n scope.$watchCollection(configuration.getCollection, watchCallback);\r\n }\r\n\r\n // Callback when the model changes.\r\n modelCtrl.$render = function $render() {\r\n // Update the data in Select2 with the view value.\r\n var proxy = model_to_proxy(modelCtrl.$viewValue);\r\n inputEl.select2(\"data\", proxy);\r\n };\r\n\r\n // Callback when an item is selected\r\n element.on(\"change\", function elementOnChange() {\r\n var proxy = inputEl.select2(\"data\");\r\n var model = proxy_to_model(proxy);\r\n\r\n scope.$apply(function () {\r\n // Update the view value with the selected item\r\n modelCtrl.$setViewValue(model);\r\n });\r\n });\r\n\r\n // Support for enabled/disabled\r\n attributes.$observe('disabled', function (value) {\r\n inputEl.select2(\"enable\", !value);\r\n });\r\n\r\n function formatSelectionCssClass(proxy) {\r\n if (proxy && proxy.group) {\r\n return 'group-selection';\r\n }\r\n }\r\n\r\n // Initialize Select2\r\n inputEl.select2({\r\n allowClear: true,\r\n multiple: configuration.isMultiple,\r\n query: queryOptions => queryOptions.callback(collection.query(queryOptions.term)),\r\n formatNoMatches: attributes.noMatches || \"Inga träffar\",\r\n placeholder: parsePlaceholder(scope, attributes),\r\n formatSelectionCssClass: formatSelectionCssClass,\r\n });\r\n\r\n // Cleanup\r\n element.on('$destroy', function () {\r\n inputEl.select2(\"destroy\");\r\n });\r\n }\r\n };\r\n}]);\r\n","angular.module(\"tromanWeb\").filter(\"duration\", [function () {\r\n\r\n function pad(num) {\r\n return num < 10 ? \"0\" + num : \"\" + num;\r\n }\r\n\r\n return function (dur) {\r\n if (typeof dur !== 'number')\r\n throw \"Expected number\";\r\n if (dur < 0)\r\n return \"\";\r\n dur = Math.floor(dur / (1000 * 60));\r\n var mins = dur % 60;\r\n dur = Math.floor(dur / 60);\r\n var hours = dur % 24;\r\n dur = Math.floor(dur / 24);\r\n\r\n var time = pad(hours) + \":\" + pad(mins);\r\n\r\n var days = dur;\r\n if (days === 1)\r\n return \"1 dag, \" + time;\r\n if (days > 0)\r\n return days + \" dagar, \" + time;\r\n return time;\r\n };\r\n}]);\r\n","angular.module(\"tromanWeb\").directive(\"ergoAdvancedSearch\", [function () {\r\n return {\r\n restrict: \"A\",\r\n template: require('./ergoAdvancedSearch.html'),\r\n scope: {\r\n title: '@'\r\n },\r\n transclude: true,\r\n link: function (scope, element, attributes) {\r\n scope.title = scope.title || \"Avancerad Sökning\";\r\n scope.isopen = !!scope.$parent.$eval(attributes.ergoAdvancedSearch);\r\n element.addClass('ergo-advanced-search');\r\n }\r\n };\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nclass CheckBoxController {\r\n constructor() {\r\n this.listeners = {};\r\n this.value = false;\r\n this.disabled = false;\r\n }\r\n\r\n register(name, handler) {\r\n this.listeners[name] = handler;\r\n }\r\n\r\n remove(name) {\r\n delete this.listeners[name];\r\n }\r\n\r\n _trigger(name) {\r\n _.each(this.listeners, (v, k) => {\r\n if (k !== name) {\r\n v();\r\n }\r\n });\r\n }\r\n\r\n updateDisabled(name, newvalue) {\r\n let value = !!newvalue;\r\n if (value !== this.disabled) {\r\n this.disabled = value;\r\n this._trigger(name);\r\n }\r\n }\r\n\r\n update(name, newvalue) {\r\n let value = !!newvalue;\r\n if (!this.disabled && value !== this.value) {\r\n this.value = value;\r\n this._trigger(name);\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoCheckbox\", [function () {\r\n return {\r\n restrict: \"EA\",\r\n require: ['ergoCheckbox', '?ngModel'],\r\n template: '',\r\n controller: CheckBoxController,\r\n link: function (scope, element, attributes, ctrls) {\r\n var ergoCheckbox = ctrls[0];\r\n var ngModel = ctrls[1];\r\n\r\n var checkbox = element.children('input');\r\n ergoCheckbox.register('dom', () => {\r\n checkbox[0].checked = ergoCheckbox.value;\r\n });\r\n\r\n checkbox.on('change', () => {\r\n ergoCheckbox.update('dom', checkbox[0].checked, ergoCheckbox.disabled);\r\n });\r\n\r\n if (attributes.ergoDisabled) {\r\n scope.$watch(attributes.ergoDisabled, disabled => {\r\n checkbox[0].disabled = disabled;\r\n ergoCheckbox.updateDisabled('disabled', disabled);\r\n });\r\n }\r\n\r\n if (ngModel) {\r\n ergoCheckbox.register('model', function () {\r\n ngModel.$setViewValue(ergoCheckbox.value);\r\n });\r\n\r\n ngModel.$render = () => {\r\n ergoCheckbox.update('model', ngModel.$viewValue);\r\n };\r\n\r\n ngModel.$isEmpty = function (value) {\r\n return value === false;\r\n };\r\n\r\n ngModel.$formatters.push(function (value) {\r\n return angular.equals(value, true);\r\n });\r\n\r\n ngModel.$parsers.push(function (value) {\r\n return value ? true : false;\r\n });\r\n }\r\n }\r\n };\r\n}]);\r\n","class GroupHandler {\r\n constructor(name) {\r\n this.name = name;\r\n this.masters = [];\r\n this.children = [];\r\n this.watchers = [];\r\n this.enabled = 0;\r\n this.selected = 0;\r\n }\r\n\r\n _isRegistered(cbc) {\r\n return this.masters.indexOf(cbc) >= 0 || this.children.indexOf(cbc) >= 0;\r\n }\r\n\r\n addChild(cbc) {\r\n if (this._isRegistered(cbc)) throw new Error(\"Already registered\");\r\n\r\n this.children.push(cbc);\r\n cbc.register('group', () => { this._updateMaster(); });\r\n this._updateMaster();\r\n }\r\n\r\n addMaster(cbc) {\r\n if (this._isRegistered(cbc)) throw new Error(\"Already registered\");\r\n\r\n this.masters.push(cbc);\r\n cbc.register('group', () => {\r\n this.enabled = this.children.reduce((a, x) => x.disabled ? a : a + 1, 0);\r\n this.children.forEach(target => target.update('group', cbc.value));\r\n this.selected = cbc.value ? this.enabled : 0;\r\n this.watchers.forEach(fn => fn(this));\r\n });\r\n }\r\n\r\n _updateMaster() {\r\n this.selected = this.children.reduce((a, x) => x.value ? a + 1 : a, 0);\r\n this.enabled = this.children.reduce((a, x) => x.disabled ? a : a + 1, 0);\r\n var all = this.selected > 0 && this.enabled === this.selected;\r\n this.masters.forEach(target => target.update('group', all));\r\n this.watchers.forEach(fn => fn(this));\r\n }\r\n\r\n removeChild(cbc) {\r\n var index = this.children.indexOf(cbc);\r\n if (index >= 0) {\r\n this.children.splice(index, 1);\r\n cbc.remove('group');\r\n this._updateMaster();\r\n }\r\n }\r\n\r\n removeMaster(cbc) {\r\n var index = this.masters.indexOf(cbc);\r\n if (index >= 0) {\r\n this.masters.splice(index, 1);\r\n cbc.remove('group');\r\n }\r\n }\r\n\r\n addWatcher(fn) {\r\n this.watchers.push(fn);\r\n }\r\n\r\n removeWatcher(fn) {\r\n var index = this.watchers.indexOf(fn);\r\n if (index >= 0) {\r\n this.watchers.splice(index, 1);\r\n }\r\n }\r\n}\r\n\r\nvar groups = {};\r\nfunction findGroup(name) {\r\n if (typeof name !== 'string') return;\r\n if (name.length === 0) return;\r\n\r\n var group = groups[name];\r\n if (!group) {\r\n groups[name] = group = new GroupHandler(name);\r\n }\r\n\r\n return group;\r\n}\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoCheckgroup\", [function () {\r\n const namere = /^(master )?(\\w+)$/;\r\n\r\n return {\r\n restrict: \"A\",\r\n require: [\"ergoCheckbox\", \"ergoCheckgroup\"],\r\n controller: function () {\r\n this.groups = [];\r\n },\r\n link: function (_scope, element, attributes, ctrls) {\r\n\r\n var ergoCheckbox = ctrls[0];\r\n var ergoCheckgroup = ctrls[1];\r\n\r\n var matches = attributes.ergoCheckgroup.split(',').map(x => x.match(namere));\r\n if (matches.some(x => !x)) return;\r\n\r\n matches.forEach(match => {\r\n if (!match) return;\r\n\r\n var group = findGroup(match[2]);\r\n if (!group) return;\r\n\r\n if (!match[1]) {\r\n group.addChild(ergoCheckbox);\r\n element.on('$destroy', function () { group.removeChild(ergoCheckbox); });\r\n } else {\r\n group.addMaster(ergoCheckbox);\r\n element.on('$destroy', function () { group.removeMaster(ergoCheckbox); });\r\n }\r\n\r\n ergoCheckgroup.groups.push(group);\r\n });\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoCheckgroupChanged\", [function () {\r\n return {\r\n restrict: \"A\",\r\n require: \"ergoCheckgroup\",\r\n priority: 0.5, // Post-link after ergoCheckgroup\r\n link: function (scope, element, attributes, ergoCheckgroup) {\r\n\r\n let watcher = function (group) {\r\n scope.$evalAsync(() => {\r\n scope.$evalAsync(attributes.ergoCheckgroupChanged, { $group: group.name, $selected: group.selected });\r\n });\r\n };\r\n\r\n for (let group of ergoCheckgroup.groups) {\r\n group.addWatcher(watcher);\r\n watcher(group);\r\n }\r\n\r\n element.on('$destroy', () => {\r\n for (let group of ergoCheckgroup.groups) {\r\n group.removeWatcher(watcher);\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n","function validDateCopy(date) {\r\n if (!angular.isDate(date))\r\n return null;\r\n if (isNaN(date.getTime()))\r\n return null;\r\n return new Date(date);\r\n}\r\n\r\nfunction validDateCopyZeroTime(date) {\r\n if (!angular.isDate(date))\r\n return null;\r\n if (isNaN(date.getTime()))\r\n return null;\r\n var ret = new Date(date);\r\n ret.setHours(0, 0, 0, 0);\r\n return ret;\r\n}\r\n\r\nfunction BootstrapDatepicker(input, options) {\r\n input.datepicker(angular.extend({\r\n format: \"yyyy-mm-dd\",\r\n autoclose: true,\r\n clearBtn: true,\r\n forceParse: true,\r\n todayHighlight: true,\r\n language: 'sv',\r\n todayBtn: 'linked'\r\n }, options));\r\n\r\n this.setDate = function (date) {\r\n date = validDateCopyZeroTime(date);\r\n input.datepicker(\"update\", date);\r\n };\r\n\r\n this.getDate = function () {\r\n var date = input.datepicker('getDate');\r\n return validDateCopyZeroTime(date);\r\n };\r\n\r\n this.onchange = function (handler) {\r\n input.on('changeDate', handler);\r\n input.on('clearDate', handler);\r\n };\r\n\r\n this.setMin = function (date) {\r\n var startdate = validDateCopyZeroTime(date);\r\n if (startdate == null)\r\n startdate = -Infinity;\r\n input.datepicker('setStartDate', date);\r\n };\r\n\r\n this.setMax = function (date) {\r\n var maxdate = validDateCopyZeroTime(date);\r\n if (maxdate == null)\r\n maxdate = Infinity;\r\n input.datepicker('setEndDate', date);\r\n };\r\n\r\n this.setDisabled = function (val) {\r\n input.prop(\"disabled\", !!val);\r\n };\r\n\r\n this.destroy = function () {\r\n input.datepicker(\"destroy\");\r\n };\r\n}\r\n\r\nErgoPickerController.$inject = ['$timeout', '$scope', '$attrs', '$log'];\r\nfunction ErgoPickerController($timeout, $scope, $attrs, $log) {\r\n\r\n var self = this;\r\n var picker;\r\n var mindate = null;\r\n var maxdate = null;\r\n\r\n this.ngModelCtrl = null;\r\n\r\n this.init = function (ngModelCtrl, _picker) {\r\n self.ngModelCtrl = ngModelCtrl;\r\n picker = _picker;\r\n\r\n picker.onchange(changeHandler);\r\n self.ngModelCtrl.$render = render;\r\n\r\n if (angular.isDefined($attrs.mindate)) {\r\n\r\n $scope.$parent.$watch($attrs.mindate, function (value) {\r\n mindate = validDateCopy(value);\r\n ngModelCtrl.$validate();\r\n });\r\n ngModelCtrl.$validators.mindate = function (modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n if (value == null)\r\n return true;\r\n if (mindate == null)\r\n return true;\r\n return mindate <= value;\r\n };\r\n }\r\n\r\n if (angular.isDefined($attrs.maxdate)) {\r\n $scope.$parent.$watch($attrs.maxdate, function (value) {\r\n maxdate = validDateCopy(value);\r\n ngModelCtrl.$validate();\r\n });\r\n ngModelCtrl.$validators.maxdate = function (modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n if (value == null)\r\n return true;\r\n if (maxdate == null)\r\n return true;\r\n return maxdate >= value;\r\n };\r\n }\r\n\r\n if (angular.isDefined($attrs.minlimit)) {\r\n $scope.$parent.$watch($attrs.minlimit, function (value) {\r\n picker.setMin(validDateCopy(value));\r\n });\r\n }\r\n\r\n if (angular.isDefined($attrs.maxlimit)) {\r\n $scope.$parent.$watch($attrs.maxlimit, function (value) {\r\n picker.setMax(validDateCopy(value));\r\n });\r\n }\r\n\r\n $scope.$watch(function () {\r\n return $attrs.disabled;\r\n }, function (value) {\r\n picker.setDisabled(value);\r\n });\r\n };\r\n\r\n this.changed = angular.noop;\r\n\r\n function setViewValue(date) {\r\n if (date == null) {\r\n if (self.ngModelCtrl.$viewValue == null) {\r\n $log.debug($attrs.ngModel + \" : ctrl.setViewValue() \");\r\n return;\r\n }\r\n date = undefined;\r\n } else if (angular.isDate(self.ngModelCtrl.$viewValue)) {\r\n if (self.ngModelCtrl.$viewValue.getTime() === date.getTime()) {\r\n $log.debug($attrs.ngModel + \" : ctrl.setViewValue() \");\r\n return;\r\n }\r\n }\r\n\r\n $log.debug($attrs.ngModel + \" : ctrl.setViewValue(\" + date + \")\");\r\n self.ngModelCtrl.$setViewValue(date);\r\n }\r\n\r\n function render() {\r\n var date = self.ngModelCtrl.$viewValue;\r\n $log.debug($attrs.ngModel + \" : ctrl.render(\" + date + \")\");\r\n picker.setDate(date);\r\n }\r\n\r\n function changeHandler() {\r\n var date = picker.getDate();\r\n $log.debug($attrs.ngModel + \" : ctrl.changeHandler(\" + self.ngModelCtrl.$viewValue + \", \" + date + \")\");\r\n $timeout(function () {\r\n setViewValue(date);\r\n self.changed();\r\n });\r\n }\r\n\r\n this.destroy = function destroy() {\r\n picker.destroy();\r\n };\r\n}\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoDatepicker\", [function () {\r\n\r\n return {\r\n restrict: \"E\",\r\n scope: {},\r\n controller: ErgoPickerController,\r\n require: [\"ergoDatepicker\", \"ngModel\"],\r\n template: '',\r\n link: function (_scope, element, _attributes, controllers) {\r\n var ctrl = controllers[0];\r\n var ngModelCtrl = controllers[1];\r\n\r\n element.addClass('ergo-datepicker');\r\n\r\n var options = {};\r\n var datepicker = new BootstrapDatepicker(element.find('input'), options);\r\n ctrl.init(ngModelCtrl, datepicker);\r\n\r\n element.on('$destroy', function () {\r\n ctrl.destroy();\r\n });\r\n }\r\n };\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nexport class FileResult {\r\n /**\r\n * @param {File} file\r\n * @param {string} data\r\n */\r\n constructor(file, data) {\r\n this.name = file.name;\r\n this.size = file.size;\r\n this.type = file.type;\r\n this.data = data;\r\n }\r\n\r\n /**\r\n * @param {File} file\r\n * @return {Promise}\r\n */\r\n static load(file) {\r\n return new Promise((resolve, reject) => {\r\n var reader = new FileReader();\r\n reader.addEventListener(\"load\", () => {\r\n resolve(new FileResult(file, reader.result));\r\n }, false);\r\n reader.addEventListener(\"abort\", () => {\r\n reject('Aborted');\r\n }, false);\r\n reader.addEventListener(\"error\", () => {\r\n reject('Error');\r\n }, false);\r\n\r\n reader.readAsDataURL(file);\r\n\r\n return file.name;\r\n });\r\n }\r\n}\r\n\r\nfunction allSettled(promises) {\r\n return Promise.all(promises.map(x => Promise.resolve(x).then(\r\n val => ({ status: 'fulfilled', value: val }),\r\n reason => ({ status: 'rejected', reason: reason })\r\n )));\r\n}\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoFileInput\", [function () {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n fileAdded: '&ergoFileInput',\r\n },\r\n link: function (scope, element, _attributes, _controller) {\r\n if (!scope.fileAdded) return;\r\n\r\n element.on('input', function (_event) {\r\n allSettled(_.map(element[0].files, FileResult.load)).then(result => {\r\n let files = [];\r\n\r\n for (let res of result) {\r\n if (res.status === 'fulfilled') {\r\n files.push(res.value);\r\n } else {\r\n console.log('Failed to load file', res.reason);\r\n }\r\n }\r\n\r\n element[0].value = null;\r\n\r\n scope.$applyAsync(() => {\r\n scope.fileAdded({\r\n $files: files,\r\n });\r\n });\r\n });\r\n });\r\n }\r\n };\r\n}]);\r\n","\r\nfunction filterLink($timeout, element, ngModelCtrl, stTableCtrl) {\r\n let timer = null;\r\n let input = element.find('input');\r\n\r\n input.on('input', function (evt) {\r\n evt = evt.originalEvent || evt;\r\n\r\n if (timer != null) {\r\n $timeout.cancel(timer);\r\n }\r\n\r\n timer = $timeout(() => {\r\n let value = evt.target.value || '';\r\n stTableCtrl.search(value, '');\r\n ngModelCtrl.$setViewValue(value);\r\n timer = null;\r\n }, 300);\r\n });\r\n\r\n ngModelCtrl.$render = function () {\r\n stTableCtrl.search(this.$viewValue, '');\r\n input.val(this.$viewValue);\r\n };\r\n}\r\n\r\n// This functions as a replacement for st-search that integrates with ngModel.\r\nangular.module(\"tromanWeb\").directive(\"ergoFilterInput\", ['$timeout', function ($timeout) {\r\n return {\r\n restrict: 'E',\r\n require: ['ngModel', '^stTable'],\r\n template: function (_tElement, tAttrs) {\r\n return ``;\r\n },\r\n link: function (_scope, element, _attributes, [ngModelCtrl, stTableCtrl]) {\r\n return filterLink($timeout, element, ngModelCtrl, stTableCtrl);\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoFilterPanel\", ['$timeout', function ($timeout) {\r\n return {\r\n restrict: 'E',\r\n template: require('./ergoFilterPanel.html'),\r\n require: ['ergoFilterPanel', '^ergoTable', 'ngModel', '^stTable'],\r\n controllerAs: 'ctrl',\r\n scope: {},\r\n link: function (_scope, element, _attributes, [ergoFilterPanel, ergoTable, ngModelCtrl, stTableCtrl]) {\r\n ergoFilterPanel.table = ergoTable;\r\n return filterLink($timeout, element, ngModelCtrl, stTableCtrl);\r\n },\r\n controller: function () { },\r\n };\r\n}]);","import * as _ from 'lodash';\r\n\r\nimport { wageModelInfos } from '../objects/WageType';\r\nimport { TimeString } from '../misc/TimeString';\r\nimport { formatDateDuration } from '../misc/DateCalculator';\r\nimport { formatDurationMinutes } from '../misc/textHelper';\r\n\r\nangular.module(\"tromanWeb\").filter(\"ergoPnDate\", [function () {\r\n\r\n return function (pn) {\r\n if (pn == null) return \"\";\r\n if (!angular.isString(pn)) return \"\";\r\n\r\n pn = pn.trim();\r\n\r\n if (pn.length === 6) return pn;\r\n if (pn.length === 8) return pn;\r\n if (pn.length === 10) return pn.slice(0, 6);\r\n if (pn.length === 11) return pn.slice(0, 6);\r\n if (pn.length === 12) return pn.slice(0, 8);\r\n if (pn.length === 13) return pn.slice(0, 8);\r\n\r\n return pn.slice(0, 6);\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter(\"ergoAddress\", [function () {\r\n return function (addr) {\r\n var ret = \"\";\r\n if (addr == null)\r\n return ret;\r\n var a = (addr.Address || \"\").trim();\r\n var z = (addr.ZipCode || \"\").trim();\r\n var p = (addr.City || \"\").trim();\r\n\r\n ret += a;\r\n if (a.length > 0 && (z.length > 0 || p.length > 0)) {\r\n ret += \", \";\r\n }\r\n ret += z;\r\n if (z.length > 0 && p.length > 0) {\r\n ret += \" \";\r\n }\r\n ret += p;\r\n\r\n return ret;\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter(\"ergoEnumWageModel\", [function () {\r\n\r\n return function (val) {\r\n var vm = wageModelInfos[val];\r\n return vm ? vm.name : undefined;\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter(\"ergoTimespanDuration\", [function () {\r\n return function (val) {\r\n if (_.isUndefined(val)) {\r\n return;\r\n }\r\n\r\n var ts = TimeString.parse(val);\r\n if (ts == null) {\r\n return;\r\n }\r\n\r\n let h = Math.trunc(ts.duration / 60);\r\n let m = ts.duration % 60;\r\n \r\n if (m > 0) {\r\n return `${h} timmar ${m} minuter`;\r\n } else {\r\n return `${h} timmar`;\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter(\"ergoDateDuration\", [function () {\r\n return formatDateDuration;\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter(\"ergoDurationMinutes\", [function () {\r\n return function (val) {\r\n if (_.isFinite(val)) {\r\n return formatDurationMinutes(val);\r\n }\r\n return;\r\n };\r\n}]);","import './ergoMunicipalityCodeList.less';\r\n\r\nimport * as _ from 'lodash';\r\n\r\nconst validCodeRe = /^[0-9]{2}([0-9]{2})?$/;\r\n\r\nclass MunicipalityCodeListController {\r\n constructor() {\r\n this.isDisabled = false;\r\n this.onChange = null;\r\n this.list = [];\r\n this.editing = null;\r\n this.form = null;\r\n }\r\n\r\n /**\r\n * \r\n * @param {string} value\r\n */\r\n render(value) {\r\n this.editing = null;\r\n\r\n if (_.isArray(value)) {\r\n if (!value.every(x => validCodeRe.test(x))) {\r\n throw 'Invalid municipality code list';\r\n }\r\n this.list = value.map(x => ({ code: x }));\r\n } else {\r\n this.list = [];\r\n }\r\n }\r\n\r\n publish() {\r\n if (this.onChange) {\r\n this.onChange(this.list.map(x => x.code));\r\n }\r\n }\r\n\r\n setDisabled(value) {\r\n this.isDisabled = !!value;\r\n }\r\n\r\n canAdd() {\r\n if (this.isDisabled) {\r\n return false;\r\n }\r\n\r\n if (this.editing != null && !this.canApply()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n add() {\r\n if (this.canAdd()) {\r\n this.list.push({ code: '' });\r\n this.editing = this.list[this.list.length - 1];\r\n this.applyfocus = true;\r\n }\r\n }\r\n\r\n isEditing(row) {\r\n return this.editing === row;\r\n }\r\n\r\n canEdit(_row) {\r\n return this.editing == null;\r\n }\r\n\r\n edit(row) {\r\n if (this.canEdit(row)) {\r\n this.editing = row;\r\n this.applyfocus = true;\r\n }\r\n }\r\n\r\n canApply() {\r\n return this.form != null && this.form.$valid;\r\n }\r\n\r\n apply() {\r\n if (this.canApply() && this.editing != null) {\r\n if (this.editing.code == null || this.editing.code === '' || _.some(this.list, x => x !== this.editing && x.code === this.editing.code)) {\r\n this.remove();\r\n } else {\r\n this.editing = null;\r\n this.publish();\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n remove() {\r\n let pos = this.list.indexOf(this.editing);\r\n if (pos >= 0) {\r\n this.editing = null;\r\n this.list.splice(pos, 1);\r\n this.publish();\r\n }\r\n }\r\n\r\n onKeyDown($event) {\r\n if ($event.key === 'Enter') {\r\n if (this.editing != null) {\r\n if (this.apply()) {\r\n this.add();\r\n }\r\n }\r\n }\r\n }\r\n\r\n onFocusOut($event) {\r\n if ($event.relatedTarget != null) {\r\n if ($event.currentTarget.contains($event.relatedTarget)) {\r\n return;\r\n }\r\n }\r\n\r\n this.apply();\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoMunicipalityCodeList\", [function () {\r\n return {\r\n restrict: \"E\",\r\n require: ['ergoMunicipalityCodeList', '?ngModel'],\r\n template: require('./ergoMunicipalityCodeList.html'),\r\n controller: MunicipalityCodeListController,\r\n controllerAs: '$ctrl',\r\n link: function (scope, _element, attributes, ctrls) {\r\n var ergoMunicipalityCodeList = ctrls[0];\r\n var ngModel = ctrls[1];\r\n\r\n if (ngModel) {\r\n ergoMunicipalityCodeList.onChange = (val) => {\r\n ngModel.$setViewValue(val);\r\n };\r\n\r\n ngModel.$render = () => {\r\n ergoMunicipalityCodeList.render(ngModel.$viewValue);\r\n };\r\n\r\n ngModel.$isEmpty = function (value) {\r\n return value == null || value.length === 0;\r\n };\r\n }\r\n\r\n if (attributes.disabled) {\r\n scope.$watch(attributes.disabled, value => {\r\n ergoMunicipalityCodeList.setDisabled(value);\r\n });\r\n }\r\n }\r\n };\r\n}]);\r\n","angular.module(\"tromanWeb\").directive(\"ergoParseIntarray\", [function () {\r\n\r\n var splitre = /\\s*,\\s*/;\r\n\r\n function notEmpty(s) {\r\n return s.length > 0;\r\n }\r\n\r\n function parseDec(s) {\r\n return parseInt(s, 10);\r\n }\r\n\r\n function parseArray(val) {\r\n if (!angular.isString(val))\r\n return undefined;\r\n\r\n var items = val.split(splitre);\r\n var nonempty = items.filter(notEmpty);\r\n var asnum = nonempty.map(parseDec);\r\n if (items.some(isNaN))\r\n return undefined;\r\n\r\n return asnum;\r\n }\r\n\r\n return {\r\n restrict: \"A\",\r\n require: \"?ngModel\",\r\n link: function (_scope, _element, _attributes, ngModelController) {\r\n if (!ngModelController) return;\r\n ngModelController.$parsers.push(parseArray);\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoInvert\", [function () {\r\n\r\n function invert(val) {\r\n return !val;\r\n }\r\n\r\n return {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n link: function (_scope, _element, _attr, ngModelCtrl) {\r\n if (!ngModelCtrl) return;\r\n ngModelCtrl.$parsers.push(invert);\r\n ngModelCtrl.$formatters.push(invert);\r\n }\r\n };\r\n}]);","angular.module(\"tromanWeb\").directive(\"ergoScroll\", [function () {\r\n return {\r\n restrict: \"A\",\r\n link: function (_scope, element, _attributes, _ctrls) {\r\n\r\n function needsScroll(elm) {\r\n const rc = elm.getBoundingClientRect();\r\n\r\n if (rc.top < 0) return true;\r\n if (rc.left < 0) return true;\r\n\r\n const viewWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\r\n if (rc.right > viewWidth) return true;\r\n\r\n const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n if (rc.viewWidth > viewHeight) return true;\r\n\r\n return false;\r\n }\r\n\r\n if (element.length > 0) {\r\n if (needsScroll(element[0])) {\r\n element[0].scrollIntoView();\r\n }\r\n }\r\n }\r\n };\r\n}]);","angular.module(\"tromanWeb\").directive(\"ergoSelectText\", ['$timeout', function ($timeout) {\r\n return {\r\n restrict: \"A\",\r\n priority: -1,\r\n require: [\"?ngModel\"],\r\n link: function (_scope, element, _attributes, controllers) {\r\n\r\n var ngModelController = controllers[0];\r\n if (!ngModelController) return;\r\n\r\n var oldRender = ngModelController.$render;\r\n ngModelController.$render = function () {\r\n oldRender.apply(this, arguments);\r\n $timeout(function () {\r\n element.select();\r\n element.focus();\r\n });\r\n };\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoFocusOn\", ['$parse', function ($parse) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attr) {\r\n var getter = $parse(attr.ergoFocusOn);\r\n if (!getter) return;\r\n var setter = getter.assign;\r\n if (!setter) return;\r\n\r\n scope.$watch(getter, function (val) {\r\n if (val) {\r\n element.focus();\r\n setter(scope, false);\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n","angular.module(\"tromanWeb\").controller(\"ErgoTableController\", ['$scope', function ($scope) {\r\n\r\n var self = this;\r\n var stTableCtrl;\r\n var sourceGetter;\r\n\r\n self.selectionCount = 0;\r\n self.totalCount = 0;\r\n self.filteredCount = 0;\r\n\r\n var sourceCollection;\r\n var filteredCollection;\r\n\r\n function countSelected() {\r\n return Array.prototype.reduce.call(sourceCollection, function (a, v) {\r\n return a + (v.$$selected ? 1 : 0);\r\n }, 0);\r\n }\r\n\r\n self._init = function init(_stTableCtrl, source, selectionFilter) {\r\n sourceGetter = source;\r\n stTableCtrl = _stTableCtrl;\r\n\r\n var oldPipe = stTableCtrl.pipe;\r\n stTableCtrl.pipe = function () {\r\n oldPipe.apply(stTableCtrl, arguments);\r\n\r\n sourceCollection = sourceGetter($scope) || [];\r\n filteredCollection = stTableCtrl.getFilteredCollection() || [];\r\n if (selectionFilter) {\r\n sourceCollection = sourceCollection.filter(selectionFilter);\r\n filteredCollection = filteredCollection.filter(selectionFilter);\r\n }\r\n\r\n self.totalCount = sourceCollection.length;\r\n self.filteredCount = filteredCollection.length;\r\n self.selectionCount = countSelected();\r\n };\r\n };\r\n\r\n self._selectionChanged = function _selectionChanged(_item) {\r\n self.selectionCount = countSelected();\r\n };\r\n\r\n self.selectedItems = function selectedItems() {\r\n return Array.prototype.filter.call(sourceCollection, function (v) {\r\n return v.$$selected;\r\n });\r\n };\r\n\r\n self.selectFiltered = function selectFiltered(predicate) {\r\n if (predicate) {\r\n angular.forEach(filteredCollection, function (item) {\r\n let result = predicate(item);\r\n if (result === true || result === false) {\r\n item.$$selected = result;\r\n }\r\n });\r\n } else {\r\n angular.forEach(filteredCollection, function (item) {\r\n item.$$selected = true;\r\n });\r\n }\r\n self.selectionCount = countSelected();\r\n };\r\n\r\n self.deselectAll = function deselectAll() {\r\n angular.forEach(sourceCollection, function (item) {\r\n item.$$selected = false;\r\n });\r\n self.selectionCount = 0;\r\n };\r\n\r\n self.search = function search(input, predicate, comparator) {\r\n stTableCtrl.search(input, predicate, comparator);\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoTable\", ['$parse', function ergoSelectDirective($parse) {\r\n\r\n return {\r\n restrict: \"A\",\r\n controller: \"ErgoTableController\",\r\n require: [\"ergoTable\", \"stTable\"],\r\n link: {\r\n pre: function (scope, _element, attributes, controllers) {\r\n var source = attributes.stSafeSrc || attributes.stTable;\r\n var ergoTableCtrl = controllers[0];\r\n var stTableCtrl = controllers[1];\r\n\r\n if (source && ergoTableCtrl && stTableCtrl) {\r\n var getter = $parse(source);\r\n\r\n var selectionFilter = null;\r\n if (attributes.ergoSelectionFilter) {\r\n var selectionFilterFn = $parse(attributes.ergoSelectionFilter);\r\n selectionFilter = function (item) {\r\n return selectionFilterFn(scope, { $item: item });\r\n };\r\n }\r\n\r\n ergoTableCtrl._init(stTableCtrl, getter, selectionFilter);\r\n\r\n var setter = attributes.ergoTable.length && $parse(attributes.ergoTable).assign;\r\n if (setter) {\r\n setter(scope, ergoTableCtrl);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoCheckboxSelect\", [function () {\r\n return {\r\n restrict: \"A\",\r\n require: ['ergoCheckbox', '?^ergoTable'],\r\n scope: {\r\n item: ' {\r\n if (scope.item) {\r\n scope.item.$$selected = ergoCheckbox.value;\r\n if (ergoTableCtrl) {\r\n ergoTableCtrl._selectionChanged(scope.item);\r\n }\r\n }\r\n });\r\n });\r\n\r\n scope.$watch('item.$$selected', function (val) {\r\n ergoCheckbox.update('select', val);\r\n });\r\n }\r\n };\r\n}]);","import { TimeString } from '../misc/TimeString';\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoPersonalnumber\", [function () {\r\n\r\n function checkPersonalNumber(pn) {\r\n if (pn.length !== 10) return false;\r\n\r\n var ii, digit;\r\n var sum = 0;\r\n\r\n for (ii = 0; ii < 9; ++ii) {\r\n digit = parseInt(pn[ii], 10);\r\n if (isNaN(digit) || digit < 0 || digit > 9) return false;\r\n\r\n digit = digit * (2 - ii % 2);\r\n sum += (digit < 10 ? digit : digit - 9);\r\n }\r\n\r\n return parseInt(pn[9]) === ((10 - sum % 10) % 10);\r\n }\r\n\r\n var pnre = /^([0-9]{8})(?:-?([0-9]{4}))?$/;\r\n\r\n function isValidAsPersonalNumber(value) {\r\n if (typeof (value) !== 'string') return false;\r\n\r\n var match = pnre.exec(value.trim());\r\n if (!match) return false;\r\n if (!match[2]) return true;\r\n\r\n return checkPersonalNumber(match[1].substring(2) + match[2]);\r\n }\r\n\r\n return {\r\n restrict: \"A\",\r\n require: '?ngModel',\r\n link: function (_scope, _element, _attributes, ctrl) {\r\n if (!ctrl) return;\r\n\r\n // TODO: Should this use viewValue?\r\n ctrl.$validators.personalnumber = function (_modelValue, viewValue) {\r\n return ctrl.$isEmpty(viewValue) || isValidAsPersonalNumber(viewValue);\r\n };\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoZipcode\", [function () {\r\n\r\n var zre = /^(?:(\\d\\d\\d) ?(\\d\\d)|([A-Za-z].*))$/;\r\n\r\n function isValidAsZipcode(value) {\r\n if (typeof (value) !== 'string') return false;\r\n return zre.test(value);\r\n }\r\n\r\n return {\r\n restrict: \"A\",\r\n require: '?ngModel',\r\n link: function (_scope, _element, _attributes, ctrl) {\r\n if (!ctrl) return;\r\n\r\n // TODO: Should this use viewValue?\r\n ctrl.$validators.zipcode = function (_modelValue, viewValue) {\r\n return ctrl.$isEmpty(viewValue) || isValidAsZipcode(viewValue);\r\n };\r\n }\r\n };\r\n}]);\r\n\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoTimespan\", [function () {\r\n \r\n return {\r\n restrict: \"A\",\r\n require: '?ngModel',\r\n link: function (scope, element, attributes, ctrl) {\r\n if (!ctrl) return;\r\n \r\n element.on('blur', function () {\r\n // Use $applyAsync as the event might be fired synchronously\r\n // see ng-blur directive.\r\n scope.$applyAsync(function () {\r\n let ts = TimeString.parse(ctrl.$viewValue);\r\n if (ts != null && ctrl.$viewValue !== ts.str) {\r\n ctrl.$setViewValue(ts.str);\r\n ctrl.$render();\r\n }\r\n });\r\n });\r\n\r\n if (attributes.ergoTimespan !== 'allowopen') {\r\n ctrl.$validators.timespan = function (value) {\r\n var ts = TimeString.parse(value);\r\n if (ts == null)\r\n return false;\r\n return ts.isClosed;\r\n };\r\n }\r\n \r\n ctrl.$parsers.push(value => {\r\n var ts = TimeString.parse(value);\r\n if (ts == null) {\r\n return undefined;\r\n }\r\n return ts.str;\r\n });\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoTimespanWithin\", [function () {\r\n\r\n const emptyTarget = TimeString.parse('');\r\n\r\n return {\r\n restrict: \"A\",\r\n require: '?ngModel',\r\n link: function (scope, _element, attributes, ctrl) {\r\n if (!ctrl) return;\r\n\r\n /**@type {TimeString} */\r\n let target = emptyTarget;\r\n scope.$watch(attributes.ergoTimespanWithin, function (val) {\r\n if (typeof val === 'string') {\r\n target = TimeString.parse(val);\r\n } else {\r\n target = emptyTarget;\r\n }\r\n \r\n ctrl.$validate();\r\n });\r\n\r\n ctrl.$validators.timewithin = value => {\r\n let ts = TimeString.parse(value);\r\n return target.contains(ts);\r\n };\r\n }\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoDivides\", [function () {\r\n\r\n return {\r\n restrict: \"A\",\r\n require: '?ngModel',\r\n link: function (scope, _element, attributes, ctrl) {\r\n if (!ctrl) return;\r\n if (!attributes.ergoDivides) return;\r\n\r\n var numerator = 0;\r\n\r\n scope.$watch(attributes.ergoDivides, function (val) {\r\n if (typeof val === 'number' && !isNaN(val)) {\r\n numerator = val;\r\n } else {\r\n numerator = 0;\r\n }\r\n ctrl.$validate();\r\n });\r\n\r\n ctrl.$validators.divides = function checkDivides(value) {\r\n if (ctrl.$isEmpty(value))\r\n return true;\r\n if (typeof value !== 'number')\r\n return false;\r\n if (isNaN(value))\r\n return false;\r\n\r\n var mod = numerator % value;\r\n return mod === 0;\r\n }; \r\n }\r\n };\r\n}]);\r\n\r\nangular.module('tromanWeb').directive('ergoFormError', [function () {\r\n return {\r\n restrict: 'A',\r\n require: '?^form',\r\n link: function (scope, element, attributes, formController) {\r\n if (!formController) return;\r\n\r\n var match = /(\\w+)\\s+on\\s+(.*)/.exec(attributes.ergoFormError);\r\n if (!match) return;\r\n\r\n var key = match[1];\r\n var expr = match[2];\r\n\r\n function setError(val) {\r\n element.toggleClass('has-error', val);\r\n formController.$setValidity(key, !val, formController);\r\n }\r\n\r\n scope.$watch(expr, setError);\r\n scope.$on('$destroy', function () {\r\n setError(false);\r\n });\r\n }\r\n };\r\n}]);\r\n","import { formatPaymentMonth, PaymentRound } from '../objects/PaymentRound';\r\n\r\nangular.module(\"tromanWeb\").directive(\"ergoYearmonth\", [function () {\r\n\r\n const pmre = /(\\d\\d\\d\\d)-(0[1-9]|1[0-2])/;\r\n\r\n return {\r\n restrict: \"A\",\r\n require: '?ngModel',\r\n link: function (scope, _element, attributes, ctrl) {\r\n if (!ctrl) return;\r\n\r\n let round = null;\r\n scope.$watch(attributes.ergoYearmonth, function (value) {\r\n if (value instanceof PaymentRound) {\r\n round = value;\r\n } else {\r\n round = null;\r\n }\r\n ctrl.$validate();\r\n });\r\n\r\n ctrl.$validators.yearmonth = function (mv) {\r\n if (mv == null) return false;\r\n if (round == null) return true;\r\n\r\n if (mv.year < round.Year) return false;\r\n if (mv.year > round.Year) return true;\r\n\r\n return mv.month > round.Month;\r\n };\r\n\r\n ctrl.$formatters.push(val => {\r\n if (val && (0 <= val.year && val.year <= 9999) && (1 <= val.month && val.month <= 12)) {\r\n return formatPaymentMonth(val.year, val.month);\r\n }\r\n return \"\";\r\n });\r\n\r\n ctrl.$parsers.push(val => {\r\n const m = pmre.exec(val);\r\n if (m) {\r\n return {\r\n year: parseInt(m[1]),\r\n month: parseInt(m[2])\r\n };\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n","angular.module(\"tromanWeb\").controller('DivisionEditController', ['DialogControllerBase', '$scope', 'tromanServer', 'division', function (DialogControllerBase, $scope, tromanServer, division) {\r\n\r\n var self = this;\r\n DialogControllerBase.call(self, tromanServer.Divisions, $scope);\r\n\r\n self.getTitle = function () { return 'valkretsen \"' + self.division.Name + '\"'; };\r\n self.getItem = function () { return self.division; };\r\n\r\n self.loadItem(division).then(function (data) {\r\n self.division = data;\r\n });\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { Division } from '../objects/Division';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('DivisionsController', ['stateService', 'tromanServer', 'dialogService', 'sortDialog', function (stateService, tromanServer, dialogService, sortDialog) {\r\n\r\n this.loading = true;\r\n this.showAdvancedSearch = false;\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refresh();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refresh();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this._refresh = function _refresh() {\r\n this.loading = true;\r\n tromanServer.Divisions.search(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createDivisionList(list);\r\n };\r\n\r\n this.changeSorting = function changeSorting() {\r\n if (this.items != null) {\r\n sortDialog.sortDivisions(tromanServer.Divisions.list()).then(() => this._refresh());\r\n }\r\n };\r\n\r\n this.add = function add() {\r\n dialogService.editDivision(new Division()).then(() => this._refresh());\r\n };\r\n\r\n this.edit = function edit(item) {\r\n dialogService.editDivision(item).then(() => this._refresh());\r\n };\r\n}]);\r\n","import { equipmentTypes } from '../objects/Equipment';\r\n\r\nangular.module(\"tromanWeb\").controller('EquipmentEditController', ['$q', 'DialogControllerBase', '$scope', 'tromanServer', 'ObjectCache', 'equipment', function ($q, DialogControllerBase, $scope, tromanServer, ObjectCache, equipment) {\r\n\r\n var self = this;\r\n DialogControllerBase.call(self, tromanServer.Equipment, $scope);\r\n\r\n self.getTitle = function () { return '\"' + self.equipment.Name + '\"'; };\r\n self.getItem = function () { return self.equipment; };\r\n\r\n function load() {\r\n self.equipmentTypes = equipmentTypes;\r\n\r\n self.loadItem(equipment)\r\n .then(loadRelated)\r\n .then(loaded)\r\n .catch(self.showError);\r\n }\r\n\r\n function loaded(data) {\r\n angular.extend(self, data);\r\n }\r\n\r\n function loadRelated(equipment) {\r\n return $q.all({\r\n equipment: $q.when(equipment),\r\n organizations: ObjectCache.getOrganizations(equipment.Organization)\r\n });\r\n }\r\n\r\n load();\r\n\r\n}]);\r\n","import './frontpage.less';\r\n\r\nangular.module('tromanWeb').controller('FrontController', ['tromanServer', 'systemInfo', function FrontController(tromanServer, systemInfo) {\r\n this.systemInfo = systemInfo;\r\n tromanServer.Notifications.getFrontPagenotifications().then(result => {\r\n this.notifications = result;\r\n });\r\n}]);","import '../common/css/common.less';\r\nimport \"./css/twapp.less\";\r\nimport '../common/angular-locale_sv-se.js';\r\n\r\nrequire('../common/twshared');\r\n\r\nrequire(\"./app\");\r\n//require(\"./debug\");\r\n\r\nrequire(\"./directives/comboDirective\");\r\nrequire(\"./directives/ergoDatepicker\");\r\nrequire(\"./directives/ergoTable\");\r\nrequire(\"./directives/ergoCheckbox\");\r\nrequire('./directives/ergoCheckgroup');\r\nrequire(\"./directives/durationFilter\");\r\nrequire(\"./directives/ergoFilters\");\r\nrequire(\"./directives/ergoSelectText\");\r\nrequire(\"./directives/ergoValidation\");\r\nrequire(\"./directives/ergoFilterPanel\");\r\nrequire(\"./directives/ergoParsers\");\r\nrequire(\"./directives/ergoAdvancedSearch\");\r\nrequire(\"./directives/ergoScroll\");\r\nrequire(\"./directives/ergoYearmonth\");\r\nrequire(\"./directives/ergoMunicipalityCodeList\");\r\nrequire(\"./directives/ergoFileInput\");\r\n\r\nrequire(\"./components/auditlog/auditlogComponent\");\r\n\r\nrequire(\"./attachments/AttachmentComponent\");\r\n\r\nrequire(\"./services/downloadService\");\r\nrequire(\"./services/browserService\");\r\nrequire(\"./services/filterBuilder\");\r\nrequire(\"./services/DialogControllerBase\");\r\nrequire('./services/tromanServer');\r\nrequire('./services/tromanErrorParser');\r\n\r\nrequire(\"./lists/ListBuilderController\");\r\nrequire(\"./lists/ListConfiguration\");\r\nrequire(\"./lists/listService\");\r\n\r\nrequire(\"./misc/Metadata\");\r\nrequire(\"./misc/ObjectCache\");\r\n\r\nrequire(\"./dialogs/dialogService\");\r\nrequire(\"./dialogs/EmailListController\");\r\n\r\nrequire(\"./sortDialog/sortDialog\");\r\nrequire(\"./sortDialog/SorterController\");\r\nrequire(\"./sortDialog/GroupSortController\");\r\n\r\nrequire(\"./front/FrontController\");\r\nrequire(\"./navbar/NavbarController\");\r\n\r\nrequire(\"./profile/ProfileController\");\r\n\r\nrequire(\"./persons/PersonsController\");\r\nrequire(\"./persons/PersonState\");\r\nrequire(\"./persons/PersonController\");\r\nrequire(\"./persons/PersonEditController\");\r\nrequire(\"./persons/PersonMissionsController\");\r\nrequire(\"./persons/PersonEquipmentController\");\r\nrequire(\"./persons/PersonAwardsController\");\r\nrequire(\"./persons/personArchive/personArchive\");\r\nrequire(\"./persons/personArchive/PersonArchiveController\");\r\n\r\nrequire(\"./equipment/EquipmentEditController\");\r\n\r\nrequire(\"./awards/AwardEditController\");\r\n\r\nrequire(\"./system/SystemSettingsController\");\r\n\r\nrequire(\"./politikerSettings/PolitikerSettingsController\");\r\n\r\nrequire(\"./missions/MissionEditController\");\r\nrequire(\"./missions/MissionUpdateController\");\r\nrequire(\"./missions/MissionListController\");\r\n\r\nrequire(\"./missionTypes/MissionTypesController\");\r\nrequire(\"./missionTypes/MissionTypeEditController\");\r\n\r\nrequire(\"./parties/PartiesController\");\r\nrequire(\"./parties/PartyEditController\");\r\n\r\nrequire(\"./divisions/DivisionEditController\");\r\nrequire(\"./divisions/DivisionsController\");\r\n\r\nrequire(\"./organizations/organizationService\");\r\nrequire(\"./organizations/OrganizationState\");\r\nrequire(\"./organizations/OrganizationController\");\r\nrequire(\"./organizations/OrganizationEditController\");\r\nrequire(\"./organizations/OrganizationMissionsController\");\r\nrequire(\"./organizations/OrganizationsController\");\r\n\r\nrequire(\"./mandate/MandateEditController\");\r\n\r\nrequire(\"./organizationType/OrganizationTypeEditController\");\r\nrequire(\"./organizationType/OrganizationTypesController\");\r\n\r\nrequire(\"./meetings/form/MeetingFormComponent\");\r\n\r\nrequire(\"./meetings/detail/MeetingState\");\r\nrequire(\"./meetings/detail/MeetingController\");\r\nrequire(\"./meetings/detail/MeetingEditController\");\r\nrequire(\"./meetings/detail/AttendanceController\");\r\nrequire(\"./meetings/detail/AttendanceDialogComponent\");\r\nrequire(\"./meetings/detail/PayrollController\");\r\n\r\nrequire(\"./meetings/search/RootMeetingsController\");\r\nrequire(\"./meetings/search/MeetingsShared\");\r\nrequire(\"./meetings/search/RegularMeetingsController\");\r\nrequire(\"./meetings/search/MeetingsToHandleController\");\r\nrequire(\"./meetings/search/CeremonyMeetingsController\");\r\nrequire(\"./meetings/search/PendingMeetingsController\");\r\n\r\nrequire(\"./meetings/timereport/TimeReportDialogController\");\r\n\r\nrequire(\"./meetings/ceremony/CeremonyController\");\r\nrequire(\"./meetings/ceremony/attach/AttachCeremonyComponent\");\r\nrequire(\"./meetings/ceremony/attach/MeetingFinderComponent\");\r\nrequire(\"./meetings/ceremony/dialog/CeremonyDialogController\");\r\n\r\nrequire(\"./reports/reportOptions\");\r\nrequire(\"./reports/ReportDialogController\");\r\nrequire(\"./reports/ReportsController\");\r\nrequire(\"./reports/reportService\");\r\n\r\nrequire(\"./wageType/WageTypeEditController\");\r\nrequire(\"./wageType/WageTypesController\");\r\n\r\nrequire(\"./wageCalculation/WageCalculationEditController\");\r\nrequire(\"./wageCalculation/WageCalculationsController\");\r\n\r\nrequire(\"./wageGroup/WageGroupsController\");\r\nrequire(\"./wageGroup/WageGroupState\");\r\nrequire(\"./wageGroup/WageGroupController\");\r\nrequire(\"./wageGroup/WageGroupDetailsController\");\r\nrequire(\"./wageGroup/WageGroupOrganizationsController\");\r\nrequire(\"./wageGroup/WageGroupTransactionsController\");\r\nrequire(\"./wageGroup/WageGroupHistoryController\");\r\n\r\nrequire(\"./missionGroups/MissionGroupState\");\r\nrequire(\"./missionGroups/MissionGroupController\");\r\nrequire(\"./missionGroups/MissionGroupDetailsController\");\r\nrequire(\"./missionGroups/MissionGroupMissionsController\");\r\nrequire(\"./missionGroups/MissionGroupsController\");\r\nrequire(\"./missionGroups/UpdateMissionGroupController\");\r\n\r\nrequire(\"./payroll/editor/PaymentEditor\");\r\nrequire(\"./payroll/groupDialog/GroupDialogController\");\r\nrequire(\"./payroll/PayslipComponent\");\r\nrequire(\"./payroll/PayslipListComponent\");\r\nrequire(\"./payroll/paymentsList/PaymentsListComponent\");\r\nrequire(\"./payroll/proposed/ProposedRemunerationComponent\");\r\nrequire(\"./payroll/proposedTime/ProposedTimeComponent\");\r\nrequire(\"./payroll/simple/SimpleRemunerationComponent\");\r\nrequire(\"./payroll/complex/ComplexRemunerationComponent\");\r\n\r\nrequire('./pendingCertification/PendingCertificationController');","import './listbuilder.less';\r\nimport { Setting } from '../objects/Setting';\r\n\r\nangular.module(\"tromanWeb\").controller('ListBuilderController',\r\n ['tromanServer', 'ObjectCache', '$scope', 'dialogService', 'downloadService', 'browserService', 'listService', 'ListConfiguration', 'list', 'definition', 'title',\r\n function (tromanServer, ObjectCache, $scope, dialogService, downloadService, browserService, listService, ListConfiguration, list, definition, title) {\r\n /// The list of items to include\r\n /// Definition from listService\r\n var self = this;\r\n\r\n self.cfg = new ListConfiguration(definition);\r\n if (!angular.isUndefined(title))\r\n self.cfg.title = title;\r\n\r\n var defaultSetting = new Setting();\r\n defaultSetting.isDefault = true;\r\n defaultSetting.Id = 'DEFAULT_SETTING';\r\n defaultSetting.Name = \"Standardmall\";\r\n defaultSetting.title = \"Standardmall\";\r\n defaultSetting.Value = self.cfg.store();\r\n defaultSetting.SettingType = definition.settingType;\r\n\r\n self.template = defaultSetting;\r\n self.templates = [defaultSetting];\r\n self.editTemplate = defaultSetting.clone();\r\n\r\n ObjectCache.getSettings({\r\n IncludeShared: true,\r\n SettingType: definition.settingType\r\n }).then(function (data) {\r\n self.templates = [defaultSetting].concat(data);\r\n self.template = defaultSetting;\r\n }).catch(dialogService.error);\r\n\r\n self.templateChanged = function templateChanged() {\r\n if (self.template != null) {\r\n if (self.template.Value != null) {\r\n self.cfg.load(self.template.Value);\r\n }\r\n self.editTemplate = self.template.clone();\r\n if (self.editTemplate.SharedBy != null) {\r\n self.editTemplate.IsPublic = false;\r\n }\r\n }\r\n };\r\n\r\n function templateStored(rsp) {\r\n const setting = rsp.result;\r\n var pos = self.templates.findIndex(function (x) { return x.Id === setting.Id; });\r\n if (pos < 0) {\r\n self.templates.push(setting);\r\n } else {\r\n self.templates[pos] = setting;\r\n self.templates = self.templates.slice();\r\n }\r\n self.template = setting;\r\n self.templateChanged();\r\n }\r\n\r\n function isNameDuplicate(tpl, isAdding) {\r\n\r\n var newName = tpl.Name.trim().toLocaleLowerCase();\r\n var sameName = self.templates.findIndex(function (x) {\r\n if (x.SharedBy != null)\r\n return false;\r\n if (!isAdding && angular.isString(x.Id) && x.Id === tpl.Id)\r\n return false;\r\n return x.Name.toLocaleLowerCase() === newName;\r\n });\r\n\r\n return sameName >= 0;\r\n }\r\n\r\n self.canUpdate = function canUpdate() {\r\n if (self.templateForm.$invalid)\r\n return false;\r\n if (self.editTemplate.SharedBy != null)\r\n return false;\r\n if (self.editTemplate.isDefault)\r\n return false;\r\n return true;\r\n };\r\n\r\n self.saveTemplate = function saveTemplate() {\r\n if (!self.canUpdate())\r\n return;\r\n if (isNameDuplicate(self.editTemplate, false)) {\r\n dialogService.error(\"Namnet används redan.\");\r\n return;\r\n }\r\n\r\n self.editTemplate.Value = self.cfg.store();\r\n tromanServer.Settings.updateEntity(self.editTemplate).then(templateStored).catch(dialogService.error);\r\n };\r\n\r\n self.canAdd = function canAdd() {\r\n if (self.templateForm.$invalid)\r\n return false;\r\n return true;\r\n };\r\n\r\n self.addTemplate = function addTemplate() {\r\n if (!self.canAdd())\r\n return;\r\n if (isNameDuplicate(self.editTemplate, true)) {\r\n dialogService.error(\"Namnet används redan.\");\r\n return;\r\n }\r\n\r\n self.editTemplate.Id = undefined;\r\n self.editTemplate.Value = self.cfg.store();\r\n tromanServer.Settings.addEntity(self.editTemplate).then(templateStored).catch(dialogService.error);\r\n };\r\n\r\n self.canRemove = function canRemove() {\r\n if (self.template == null)\r\n return false;\r\n if (self.template.Id == null)\r\n return false;\r\n if (self.template.isDefault)\r\n return false;\r\n if (self.template.SharedBy != null)\r\n return false;\r\n return true;\r\n };\r\n\r\n self.removeTemplate = function removeTemplate() {\r\n if (!self.canRemove()) return;\r\n\r\n var confirmMsg = 'Radera mallen';\r\n if (self.template.IsPublic) {\r\n confirmMsg = confirmMsg + ', den är delad av dig och kommer inte heller finnas kvar för andra användare.';\r\n }\r\n dialogService.confirm([confirmMsg, 'Är du säker?']).then(function () {\r\n var id = self.template.Id;\r\n tromanServer.Settings.hardRemove(id).then(function () {\r\n self.templates = self.templates.filter(function (x) {\r\n return x.Id !== id;\r\n });\r\n self.template = defaultSetting;\r\n self.templateChanged();\r\n }).catch(dialogService.error);\r\n });\r\n };\r\n\r\n self.cancel = function cancel() {\r\n $scope.$dismiss(\"cancelled\");\r\n };\r\n\r\n self.saveExcel = function saveExcel() {\r\n var csv = listService.toCsv(list, self.cfg);\r\n downloadService.downloadText(csv, self.cfg.title + \".csv\", \"text/csv\");\r\n };\r\n\r\n self.showPreview = function showPreview() {\r\n var pars = {\r\n title: self.cfg.title,\r\n content: listService.render(list, self.cfg)\r\n };\r\n browserService.openChildWindow('../print/print.html', 'printWindow', pars);\r\n };\r\n}]);\r\n","angular.module(\"tromanWeb\").factory('ListConfiguration', ['$log', function ($log) {\r\n\r\n function ListConfiguration(metadata) {\r\n /// Definition\r\n\r\n this._properties = metadata.properties.filter(function (x) {\r\n return angular.isDefined(x.list);\r\n }).map(function (x) {\r\n return angular.copy(x);\r\n });\r\n\r\n this.title = (metadata.title || \"\").toString();\r\n\r\n this.selectedColumns = this._properties.filter(function (x) { return x.list.defcol > 0; });\r\n this.availableColumns = this._properties.filter(function (x) { return x.list.defcol === 0; });\r\n\r\n this.selectedSorters = this._properties.filter(function (x) { return x.list.defsort > 0; });\r\n this.availableSorters = this._properties.filter(function (x) { return x.list.defsort === 0; });\r\n }\r\n\r\n function moveItem(dst, src, key) {\r\n var pos = src.findIndex(function (x) { return x.key === key; });\r\n if (pos < 0) {\r\n $log.debug(\"Property not found.\");\r\n return;\r\n }\r\n\r\n var item = src[pos];\r\n dst.push(item);\r\n src.splice(pos, 1);\r\n return item;\r\n }\r\n\r\n function compareProperty(a, b) {\r\n return a.order - b.order;\r\n }\r\n\r\n ListConfiguration.prototype.addColumn = function addColumn(item) {\r\n moveItem(this.selectedColumns, this.availableColumns, item.key);\r\n };\r\n ListConfiguration.prototype.removeColumn = function removeColumn(item) {\r\n moveItem(this.availableColumns, this.selectedColumns, item.key);\r\n this.availableColumns.sort(compareProperty);\r\n };\r\n ListConfiguration.prototype.addSorter = function addSorter(item) {\r\n moveItem(this.selectedSorters, this.availableSorters, item.key);\r\n };\r\n ListConfiguration.prototype.removeSorter = function removeSorter(item) {\r\n moveItem(this.availableSorters, this.selectedSorters, item.key);\r\n this.availableSorters.sort(compareProperty);\r\n };\r\n\r\n ListConfiguration.prototype.store = function store() {\r\n return {\r\n title: this.title,\r\n columns: this.selectedColumns.map(function (x) { return x.key; }),\r\n sorters: this.selectedSorters.map(function (x) {\r\n return {\r\n key: x.key,\r\n asc: !!x.ascending\r\n };\r\n })\r\n };\r\n };\r\n\r\n ListConfiguration.prototype.load = function load(data) {\r\n var self = this;\r\n\r\n self.title = data.title;\r\n self.selectedColumns = [];\r\n self.selectedSorters = [];\r\n self.availableColumns = self._properties.slice();\r\n self.availableSorters = self._properties.slice();\r\n\r\n data.columns.forEach(function (x) {\r\n moveItem(self.selectedColumns, self.availableColumns, x);\r\n });\r\n data.sorters.forEach(function (x) {\r\n var item = moveItem(self.selectedSorters, self.availableSorters, x.key);\r\n item.ascending = x.asc;\r\n });\r\n };\r\n\r\n return ListConfiguration;\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"tromanWeb\").factory('listService', ['ergoDateFilter', function (ergoDateFilter) {\r\n\r\n var so = {};\r\n\r\n so.separator = ';';\r\n\r\n function makeCsvProperty(val) {\r\n if (val == null) {\r\n return '';\r\n } else if (_.isArray(val)) {\r\n return val.join(', ');\r\n } else {\r\n return val.toString();\r\n }\r\n }\r\n\r\n function makeCsvRow(row) {\r\n /// An array to convert to a csv row\r\n var ret = [];\r\n for (var i = 0; i < row.length; ++i) {\r\n var str = makeCsvProperty(row[i]);\r\n str = str.replace('\"', '\"\"');\r\n ret.push('\"' + str + '\"');\r\n }\r\n return ret.join(so.separator);\r\n }\r\n\r\n function buildTable(list, columnProperties, sortingProperties) {\r\n /// List of items\r\n /// An html table definition as a string\r\n\r\n function getProperty(item, prop) {\r\n try {\r\n var val = prop.fn(item);\r\n if (val == null)\r\n return null;\r\n return val;\r\n } catch (err) {\r\n return null;\r\n }\r\n }\r\n\r\n function getRow(item) {\r\n return {\r\n columns: columnProperties.map(function (prop) { return getProperty(item, prop); }),\r\n order: sortingProperties.map(function (prop) { return getProperty(item, prop); })\r\n };\r\n }\r\n\r\n function compareRow(a, b) {\r\n var sortprops = sortingProperties;\r\n\r\n for (var i = 0; i < sortprops.length; ++i) {\r\n var asc = sortprops[i].ascending;\r\n var av = a.order[i];\r\n var bv = b.order[i];\r\n\r\n if (av == null || bv == null) {\r\n if (av != null) return asc ? 1 : -1;\r\n if (bv != null) return asc ? -1 : 1;\r\n } else {\r\n if (av < bv) return asc ? -1 : 1;\r\n if (bv < av) return asc ? 1 : -1;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n var rows = list.map(getRow);\r\n rows.sort(compareRow);\r\n return rows.map(function (x) { return x.columns; });\r\n }\r\n\r\n function escapeElementCharacter(ch) {\r\n if (ch === '&') return '&';\r\n if (ch === '<') return '<';\r\n if (ch === '>') return '>';\r\n if (ch === '\"') return '"';\r\n if (ch === \"'\") return ''';\r\n if (ch === '/') return '/';\r\n throw new Error(\"Invalid escape\");\r\n }\r\n\r\n function renderValue(val) {\r\n if (val == null) {\r\n return '';\r\n } else {\r\n var str = val.toString();\r\n return str.replace(/[&<>\"'/]/g, escapeElementCharacter);\r\n }\r\n }\r\n\r\n function renderProperty(val) {\r\n if (_.isArray(val)) {\r\n return val.map(renderValue).join('
');\r\n } else {\r\n return renderValue(val);\r\n }\r\n }\r\n\r\n so.render = function render(list, lc) {\r\n\r\n var table = buildTable(list, lc.selectedColumns, lc.selectedSorters);\r\n\r\n var headerRow = '' + lc.selectedColumns.map(prop => renderValue(prop.title)).join('') + '';\r\n var tableRows = table.map(row => '' + row.map(renderProperty).join('') + '');\r\n\r\n var html = [\r\n '
',\r\n '
',\r\n '

',\r\n renderValue(lc.title) || '',\r\n '

',\r\n '',\r\n ' (' + renderValue(ergoDateFilter(new Date()) || '') + ')',\r\n '',\r\n '
',\r\n '',\r\n '',\r\n headerRow,\r\n '',\r\n '',\r\n tableRows.join('\\n'),\r\n '',\r\n '
'\r\n ];\r\n\r\n return html.join('\\n');\r\n };\r\n\r\n so.toCsv = function toCsv(list, lc) {\r\n\r\n var table = buildTable(list, lc.selectedColumns, lc.selectedSorters);\r\n\r\n var header = makeCsvRow(lc.selectedColumns.map(function (prop) { return prop.title; }));\r\n var rows = table.map(makeCsvRow);\r\n rows.splice(0, 0, header);\r\n\r\n return rows.join('\\r\\n');\r\n };\r\n\r\n return so;\r\n\r\n}]);\r\n","angular.module(\"tromanWeb\").controller('MandateEditController', ['DialogControllerBase', '$scope', 'tromanServer', 'mandatePeriod', function (DialogControllerBase, $scope, tromanServer, mandatePeriod) {\r\n\r\n var self = this;\r\n DialogControllerBase.call(self, tromanServer.MandatePeriods, $scope);\r\n\r\n self.getTitle = function () {\r\n return 'mandatperioden \"' + self.mandatePeriod.display + '\" i \"' + self.mandatePeriod.Organization.Name + '\"';\r\n };\r\n self.getItem = function () { return self.mandatePeriod; };\r\n\r\n self.loadItem(mandatePeriod).then(function (data) {\r\n self.mandatePeriod = data;\r\n });\r\n\r\n}]);\r\n","import './ceremony.less';\r\n\r\nimport * as _ from 'lodash';\r\nimport { Meeting, MeetingAccountSource, MeetingCertifierSource } from '../../objects/Meeting';\r\nimport { MeetingFormModel } from '../form/MeetingFormModel';\r\nimport { AttachCeremonyModel } from './attach/AttachCeremonyComponent';\r\nimport { TromanError } from '../../../common/TromanError';\r\nimport { ceremonyStates } from '../../objects/Ceremony';\r\nimport { formatDurationMinutes, getClaimTypeText } from '../../misc/textHelper';\r\nimport { claimTypes } from '../../objects/Claim';\r\nimport { auditIncidents } from '../../objects/Audit';\r\n\r\n/**\r\n * \r\n * @typedef { import('../../objects/Ceremony').CeremonyDetails } CeremonyDetails\r\n * @typedef { import('../../objects/Claim').ClaimNugget } ClaimNugget\r\n */\r\n\r\nconst OPTION_NEW = 'new';\r\nconst OPTION_EXISTING = 'existing';\r\nconst OPTION_REJECT = 'reject';\r\n\r\n/**\r\n * @param {ClaimNugget} nugget\r\n */\r\nfunction getNuggetDetail(nugget) {\r\n switch (nugget.ClaimType) {\r\n case claimTypes.travel:\r\n return `${nugget.DrivingDistance?.toFixed(0)} km, ${nugget.RouteFrom} till ${nugget.RouteTo}`;\r\n case claimTypes.parking:\r\n return `${nugget.Parking?.toFixed(2)} kr`;\r\n case claimTypes.congestion:\r\n return `${nugget.Congestion?.toFixed(2)} kr`;\r\n case claimTypes.publicTransport:\r\n return `${nugget.PublicTransport?.toFixed(2)} kr`;\r\n case claimTypes.travelTime:\r\n return formatDurationMinutes(nugget.TravelTime);\r\n case claimTypes.expense:\r\n return `${nugget.Amount?.toFixed(2)} kr, ${nugget.Purpose}`;\r\n case claimTypes.lostIncomeAmount:\r\n return `${nugget.Amount?.toFixed(2)} kr, ${nugget.Employer}`;\r\n case claimTypes.lostIncomeNumber:\r\n return `${nugget.Hours?.toFixed(2)} tim, ${nugget.Employer}`;\r\n case claimTypes.lostIncomeRate:\r\n return `${nugget.Hours?.toFixed(2)} tim à ${nugget.HourlyRate?.toFixed(2)}, ${nugget.Employer}`;\r\n \r\n case claimTypes.legacyTravel: {\r\n let parts = [];\r\n if (nugget.DrivingDistance) {\r\n parts.push(`Km-ersättning: ${nugget.DrivingDistance?.toFixed(0)} km, ${nugget.RouteFrom} till ${nugget.RouteTo}`);\r\n }\r\n if (nugget.Parking) {\r\n parts.push(`Parkering: ${nugget.Parking?.toFixed(2)} kr`);\r\n }\r\n if (nugget.Congestion) {\r\n parts.push(`Trängselskatt: ${nugget.Congestion?.toFixed(2)} kr`);\r\n }\r\n if (nugget.PublicTransport) {\r\n parts.push(`Kollektivtrafik: ${nugget.PublicTransport?.toFixed(2)} kr`);\r\n }\r\n if (nugget.TravelTime) {\r\n parts.push(`Restid: ${formatDurationMinutes(nugget.TravelTime)}`);\r\n }\r\n return parts.join(', ');\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('CeremonyController', ['$q', 'stateService', 'tromanServer', 'ObjectCache', 'dialogService', 'systemInfo', 'eventId', function ($qservice, stateService, tromanServer, ObjectCache, dialogService, systemInfo, eventId) {\r\n\r\n /**\r\n * \r\n * @param {CeremonyDetails} ceremony\r\n */\r\n function convertCeremony(ceremony) {\r\n var meeting = new Meeting();\r\n meeting.Organization = ceremony.Mission.MandatePeriod.Organization;\r\n meeting.WageCalculation = meeting.Organization?.WageCalculation;\r\n meeting.Designation = ceremony.Designation;\r\n meeting.Location = ceremony.Location;\r\n meeting.MeetingTime = ceremony.CeremonyTime;\r\n meeting.Date = ceremony.CeremonyDate;\r\n meeting.MeetingType = 1;\r\n meeting.AccountSource = MeetingAccountSource.missionOrganization;\r\n meeting.CertifierSource = MeetingCertifierSource.missionOrganization;\r\n\r\n return new MeetingFormModel(meeting, systemInfo.IsPolitikerEnabled, ceremony.Attachments);\r\n }\r\n\r\n this._isSaving = false;\r\n this.targetSelection = OPTION_EXISTING;\r\n this.parentForm = null;\r\n this.newform = null;\r\n this.existingform = null;\r\n this.rejectform = null;\r\n this.previousRejection = null;\r\n this.rejectionMessage = '';\r\n /** @type {CeremonyDetails} */\r\n this.ceremony = null;\r\n /** @type {MeetingFormModel} */\r\n this.newMeetingModel = null;\r\n /** @type {AttachCeremonyModel} */\r\n this.attachCeremonyModel = null;\r\n\r\n this.canSave = function () {\r\n if (this._isSaving) return false;\r\n if (this.ceremony == null) return false;\r\n\r\n if (this.targetSelection === OPTION_NEW) {\r\n return this.newMeetingModel != null && this.newform?.$valid && this.newMeetingModel.isValid();\r\n } else if (this.targetSelection === OPTION_EXISTING) {\r\n return this.attachCeremonyModel != null && this.attachCeremonyModel.isValid && this.existingform != null && this.existingform.$valid;\r\n } else if (this.targetSelection === OPTION_REJECT) {\r\n return this.rejectform?.$valid;\r\n }\r\n };\r\n\r\n this._saveNew = function () {\r\n this._isSaving = true;\r\n tromanServer.Ceremonies\r\n .convertCeremony(this.ceremony.EventId, this.newMeetingModel.createAdd())\r\n .then(meetingId => {\r\n stateService.forceGo('meeting.payroll', { meetingId: meetingId }, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => this._isSaving = false);\r\n };\r\n\r\n this._saveExisting = function () {\r\n this._isSaving = true;\r\n tromanServer.Ceremonies\r\n .attachCeremony(this.ceremony.EventId, this.attachCeremonyModel.createAttach())\r\n .then(meetingId => {\r\n stateService.forceGo('meeting.payroll', { meetingId: meetingId }, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => this._isSaving = false);\r\n };\r\n\r\n this._reject = function () {\r\n this._isSaving = true;\r\n tromanServer.Ceremonies\r\n .rejectCeremony(this.ceremony.EventId, {\r\n RejectionMessage: this.rejectionMessage,\r\n })\r\n .then(() => {\r\n stateService.forceGo('meetings.ceremony', {}, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => this._isSaving = false);\r\n };\r\n\r\n this.save = function save() {\r\n this.parentForm.$commitViewValue();\r\n this.parentForm.$setSubmitted();\r\n\r\n if (!this.canSave()) return;\r\n\r\n if (this.targetSelection === OPTION_NEW) {\r\n this._saveNew();\r\n } else if (this.targetSelection === OPTION_EXISTING) {\r\n this._saveExisting();\r\n } else if (this.targetSelection === OPTION_REJECT) {\r\n this._reject();\r\n }\r\n };\r\n\r\n this.$onInit = function $onInit() {\r\n $qservice\r\n .all({\r\n organizations: ObjectCache.getOrganizations(),\r\n wageCalculations: ObjectCache.getWageCalculations(),\r\n ceremony: tromanServer.Ceremonies.getCeremony(eventId),\r\n })\r\n .then(result => {\r\n if (result.ceremony.State === ceremonyStates.accepted) {\r\n throw new TromanError('process-ceremony-already-accepted', 'Förrättningen har redan godkänts');\r\n }\r\n\r\n if (result.ceremony.State !== ceremonyStates.reported) {\r\n throw new TromanError('process-ceremony-already-rejected', 'Förrättningen har dragits tillbaka');\r\n }\r\n\r\n this.organizations = result.organizations; // TODO include ceremony.Mission.MandatePeriod.Organization\r\n this.wageCalculations = result.wageCalculations; // TODO ceremony.Mission.MandatePeriod.Organization.WageCalculation\r\n /** @type {CeremonyDetails} */\r\n this.ceremony = result.ceremony;\r\n this.newMeetingModel = convertCeremony(result.ceremony);\r\n this.attachCeremonyModel = new AttachCeremonyModel(result.ceremony);\r\n this.targetSelection = OPTION_EXISTING;\r\n this.previousRejection = _.chain(this.ceremony.AuditEntries).filter(x => x.Incident === auditIncidents.ceremonyRejected).maxBy(x => x.Timestamp).value();\r\n this.claims = _.map(this.ceremony.Claims, x => ({ id: x.Id, title: getClaimTypeText(x.ClaimType), detail: getNuggetDetail(x.Nugget) }));\r\n\r\n stateService.guard(() => {\r\n if (this.targetSelection === OPTION_NEW) {\r\n return this.newform?.$dirty;\r\n } else if (this.targetSelection === OPTION_EXISTING) {\r\n return this.attachCeremonyModel?.hasChanges;\r\n } else if (this.targetSelection === OPTION_REJECT) {\r\n return this.rejectform?.$dirty;\r\n }\r\n });\r\n })\r\n .catch(dialogService.error);\r\n };\r\n}]);\r\n","import './attachCeremony.less';\r\nimport * as _ from 'lodash';\r\nimport { TimeString } from '../../../misc/TimeString';\r\nimport { AttachmentCollection, compareByTitle } from '../../../attachments/AttachmentCollection';\r\n\r\n/**\r\n * @typedef { import('../../../objects/Ceremony').Ceremony } Ceremony\r\n * @typedef { import('../../../objects/Meeting').Meeting } Meeting\r\n */\r\n\r\nexport class AttachCeremonyModel {\r\n /**\r\n * @param {Ceremony}\r\n */\r\n constructor(ceremony) {\r\n this.ceremony = ceremony;\r\n /** @type {Meeting} */\r\n this.meeting = null;\r\n this.presentTime = ceremony.CeremonyTime;\r\n this.attachments = new AttachmentCollection(null, ceremony.Attachments, compareByTitle);\r\n }\r\n\r\n get isValid() {\r\n return this.meeting != null;\r\n }\r\n\r\n get hasChanges() {\r\n if (this.meeting != null) return true;\r\n if (this.presentTime !== this.ceremony.CeremonyTime) return true;\r\n if (_.some(this.ceremonyFiles, x => x.isSelected)) return true;\r\n return false;\r\n }\r\n\r\n createAttach() {\r\n let selectedFiles = _.filter(this.ceremonyFiles, x => x.isSelected);\r\n\r\n return {\r\n MeetingId: this.meeting.Id,\r\n PresentTime: this.presentTime,\r\n CopyAttachments: _.map(selectedFiles, x => x.createCopy()),\r\n };\r\n }\r\n}\r\n\r\nclass AttachCeremonyController {\r\n\r\n static get $inject() {\r\n return ['tromanServer', 'downloadService'];\r\n }\r\n\r\n constructor(tromanServer, downloadService) {\r\n this._tromanServer = tromanServer;\r\n this._downloadService = downloadService;\r\n /** @type {AttachCeremonyModel} */\r\n this.model = null;\r\n }\r\n\r\n /**\r\n * \r\n * @param {any} changed\r\n */\r\n $onChanges(changed) {\r\n if (changed.model) {\r\n if (this.model) {\r\n this.ceremony = this.model.ceremony;\r\n } else {\r\n this.ceremony = null;\r\n }\r\n }\r\n }\r\n\r\n isAttendanceWithin() {\r\n if (this.model && this.model.meeting && this.model.presentTime) {\r\n let meetingTs = TimeString.parse(this.model.meeting.MeetingTime);\r\n let presentTs = TimeString.parse(this.model.presentTime);\r\n return meetingTs.contains(presentTs);\r\n }\r\n return true;\r\n }\r\n\r\n downloadCeremonyAttachment(id) {\r\n this._tromanServer.Files.downloadAttachment(id)\r\n .then(rsp => this._downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n }\r\n\r\n downloadMeetingAttachment(id) {\r\n this._tromanServer.Files.downloadMeetingAttachment(id)\r\n .then(rsp => this._downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n }\r\n \r\n meetingChanged(meeting) {\r\n if (this.model) {\r\n this.model.meeting = meeting;\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoAttachCeremony', {\r\n template: require('./attachCeremony.html'),\r\n bindings: {\r\n model: '<',\r\n organizations: '<',\r\n },\r\n controller: AttachCeremonyController\r\n});\r\n\r\n","import * as _ from 'lodash';\r\nimport { MeetingType } from '../../../objects/Meeting';\r\nimport './meetingFinder.less';\r\n\r\nclass MeetingFinderController {\r\n\r\n static get $inject() {\r\n return ['tromanServer'];\r\n }\r\n\r\n constructor(tromanServer) {\r\n this._tromanServer = tromanServer;\r\n this.isSearching = false;\r\n this.selectedMeetingId = null;\r\n this.selectedOrganizationId = null;\r\n }\r\n\r\n search() {\r\n this.selectedMeetingId = null;\r\n this.selectedMeetingChanged(null);\r\n\r\n if (this.date) {\r\n this.isSearching = true;\r\n this._tromanServer.Meetings.search({\r\n WithoutPersonId: this.withoutPersonId,\r\n DateFrom: new Date(this.date.getFullYear(), this.date.getMonth(), this.date.getDate()),\r\n DateTo: new Date(this.date.getFullYear(), this.date.getMonth(), this.date.getDate()),\r\n }).then(result => {\r\n this.allmeetings = _.sortBy(result, [x => x.Organization.Name, x => x.Date, x => x.MeetingTime]);\r\n this.filterOrganization();\r\n }).catch(err => {\r\n this.meetings = null;\r\n this.error = err;\r\n }).finally(() => {\r\n this.isSearching = false;\r\n });\r\n }\r\n }\r\n\r\n filterOrganization() {\r\n if (this.selectedOrganizationId) {\r\n this.meetings = _.filter(this.allmeetings, x => x.OrganizationId === this.selectedOrganizationId);\r\n if (this.selectedMeetingId != null) {\r\n if (!_.some(this.meetings, x => x.Id === this.selectedMeetingId)) {\r\n this.selectedMeetingId = null;\r\n this.selectedMeetingChanged(null);\r\n }\r\n }\r\n } else {\r\n this.meetings = this.allmeetings;\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {any} changed\r\n */\r\n $onChanges(changed) {\r\n if (changed.date || changed.withoutPersonId) {\r\n this.search();\r\n }\r\n }\r\n\r\n dateChanged() {\r\n this.search();\r\n }\r\n\r\n organizationChanged() {\r\n this.filterOrganization();\r\n }\r\n\r\n selectedMeetingChanged(meeting) {\r\n this.meetingSelected({ value: meeting });\r\n }\r\n\r\n formatMeetingType(meeting) {\r\n switch (meeting.MeetingType) {\r\n case MeetingType.regular: return 'Ordinarie';\r\n case MeetingType.other: return 'Annat';\r\n default: return 'foo';\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoMeetingFinder', {\r\n template: require('./meetingFinder.html'),\r\n bindings: {\r\n date: '<',\r\n organizationId: '<',\r\n withoutPersonId: '<',\r\n organizations: '<',\r\n meetingSelected: '&',\r\n },\r\n controller: MeetingFinderController\r\n});\r\n\r\n","import * as _ from 'lodash';\r\nimport './ceremonyDialog.less';\r\nimport { AuditEntry } from '../../../components/auditlog/auditlogComponent';\r\nimport { ceremonyStates } from '../../../objects/Ceremony';\r\n\r\n/**\r\n * @typedef { import('../../../objects/Ceremony').Ceremony } Ceremony\r\n * @typedef { import('../../../server/ApiServer').ApiServer } ApiServer\r\n */\r\n\r\nfunction getCeremonyStateText(ceremonyState) {\r\n switch (ceremonyState) {\r\n case ceremonyStates.none: return '';\r\n case ceremonyStates.created: return 'Ej rapporterad';\r\n case ceremonyStates.reported: return 'Rapporterad';\r\n case ceremonyStates.rejected: return 'Avslagen';\r\n case ceremonyStates.accepted: return 'Godkänd';\r\n default: return 'Okänd';\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('CeremonyDialogController', ['$q', 'tromanServer', 'ObjectCache', 'downloadService', '$scope', 'ceremonyId', \r\n /**\r\n * @param {any} $q\r\n * @param {ApiServer} tromanServer\r\n * @param {any} ObjectCache\r\n * @param {any} downloadService\r\n * @param {any} $scope\r\n * @param {string} ceremonyId\r\n */\r\n function ($q, tromanServer, ObjectCache, downloadService, $scope, ceremonyId) {\r\n this.close = function () {\r\n $scope.$close();\r\n };\r\n $q.all({\r\n users: ObjectCache.getAllUsers(),\r\n ceremony: tromanServer.Ceremonies.getCeremony(ceremonyId),\r\n }).then(result => {\r\n /** @type {Ceremony} */\r\n this.ceremony = result.ceremony;\r\n this.status = getCeremonyStateText(this.ceremony.State);\r\n this.audit = AuditEntry.generateAudit(this.ceremony.AuditEntries, result.users);\r\n\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n\r\n this.close = function () {\r\n $scope.$close();\r\n };\r\n\r\n this.downloadAttachment = function (attachment) {\r\n tromanServer.Files.downloadAttachment(attachment.Id)\r\n .then(rsp => downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n };\r\n }\r\n]);\r\n","import * as _ from 'lodash';\r\nimport { compareCalendarDate } from '../../misc/utility';\r\nimport { AttendanceModel } from './AttendanceModel';\r\n\r\n/**\r\n * @typedef { import('../../objects/Attendance').AttendanceList } AttendanceList\r\n * @typedef { import('../../objects/Attendance').Attendance } Attendance\r\n * @typedef { import('../../objects/Mission').Mission } Mission\r\n * @typedef { import('../../objects/MissionGroup').MissionGroup } MissionGroup\r\n */\r\n\r\nexport class AttendanceCollection {\r\n /**\r\n * @param {AttendanceList} attendanceList\r\n * @param {Mission[]} missions\r\n * @param {MissionGroup[]} missionGroups\r\n * @param {boolean} isPolitikerEnabled\r\n */\r\n constructor(attendanceList, missions, missionGroups, isPolitikerEnabled) {\r\n this.meeting = attendanceList.Meeting;\r\n this.attendances = _.map(attendanceList.Attendances, x => AttendanceModel.createExisting(x, isPolitikerEnabled));\r\n this.missions = missions;\r\n this.missionGroups = _.sortBy(missionGroups, x => x.Name);\r\n this.isPolitikerEnabled = isPolitikerEnabled;\r\n this.missionsById = null;\r\n this.removed = [];\r\n\r\n const grouped = _.groupBy(missions, x => x.PersonId);\r\n const groups = _.map(grouped, x => ({ PersonId: x[0].PersonId, Person: x[0].Person, Missions: x }));\r\n this.groups = _.orderBy(groups, [x => x.Person.LastName, x => x.Person.firstName]);\r\n\r\n this._updateAvailable();\r\n this._updateOrder();\r\n }\r\n\r\n get isChanged() {\r\n return this.removed.length > 0 || _.some(this.attendances, x => x.isAdded || x.isChanged);\r\n }\r\n\r\n _updateOrder() {\r\n this.attendances = AttendanceModel.order(this.attendances);\r\n this.attendances.forEach((item, index) => void (item.$$order = index));\r\n }\r\n\r\n _updateAvailable() {\r\n var persons = _.map(this.attendances, x => x.getPersonId());\r\n this.available = _.filter(this.groups, x => !_.includes(persons, x.PersonId));\r\n }\r\n\r\n /**\r\n * @param {Mission} mission\r\n */\r\n _addMission(mission) {\r\n const att = AttendanceModel.createNew(this.meeting, mission, this.isPolitikerEnabled);\r\n if (compareCalendarDate(this.meeting.Date, new Date()) < 0) {\r\n att.presentTime = this.meeting.MeetingTime;\r\n }\r\n this.attendances.push(att);\r\n }\r\n\r\n /**\r\n * @param {AttendanceModel} existing\r\n * @param {AttendanceModel} replacement\r\n */\r\n replaceAttendance(existing, replacement) {\r\n if (replacement.attendance.isLegacy()) throw \"Invalid replacement, missing mission\";\r\n if (existing.attendance.isLegacy()) throw \"Invalid existing, missing mission\";\r\n if (existing.attendance.MissionId !== replacement.attendance.MissionId) throw \"Incompatible mission\";\r\n\r\n let pos = this.attendances.indexOf(existing);\r\n if (pos >= 0) {\r\n this.attendances[pos] = replacement;\r\n this._updateAvailable();\r\n this._updateOrder();\r\n }\r\n }\r\n\r\n /**\r\n * @param {AttendanceModel} attendanceModel\r\n */\r\n getAvailableMissions(attendanceModel) {\r\n var attendancePersonId = attendanceModel.getPersonId();\r\n var group = _.find(this.groups, x => x.PersonId === attendancePersonId);\r\n return (group == null) ? null : group.Missions;\r\n }\r\n\r\n /**\r\n * @param {AttendanceModel} attendanceModel\r\n * @param {Mission} mission\r\n */\r\n specifyMission(attendanceModel, mission) {\r\n attendanceModel.specifyMission(mission);\r\n this._updateAvailable();\r\n this._updateOrder();\r\n }\r\n\r\n /**\r\n * @param {boolean} withSubstitutes\r\n */\r\n includeMembers(withSubstitutes) {\r\n let changed = false;\r\n\r\n for (let mission of this.missions) {\r\n if (mission.MandatePeriod.OrganizationId !== this.meeting.OrganizationId)\r\n continue;\r\n if (!withSubstitutes && mission.MissionType.IsSubstitute)\r\n continue;\r\n\r\n if (this.include(mission)) {\r\n changed = true;\r\n }\r\n }\r\n\r\n if (changed) {\r\n this._updateOrder();\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n /**\r\n * @param {Mission} mission\r\n */\r\n include(mission) {\r\n\r\n var index = _.findIndex(this.available, x => x.PersonId === mission.PersonId);\r\n\r\n if (index < 0)\r\n return false;\r\n\r\n this.available.splice(index, 1);\r\n this._addMission(mission);\r\n this._updateOrder();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @param {AttendanceModel} am\r\n */\r\n _removeAttendanceModel(am) {\r\n var index = this.attendances.indexOf(am);\r\n if (index >= 0) {\r\n this.attendances.splice(index, 1);\r\n\r\n if (am.attendance.Id) {\r\n this.removed.push(am.attendance.Id);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param { AttendanceModel[] } attendanceModels\r\n */\r\n exclude(attendanceModels) {\r\n for (let am of attendanceModels) {\r\n this._removeAttendanceModel(am);\r\n }\r\n this._updateAvailable();\r\n }\r\n\r\n /**\r\n * @param {string[]} missionIds\r\n */\r\n includeMissionIds(missionIds) {\r\n if (this.missionsById == null) {\r\n this.missionsById = _.mapKeys(this.missions, x => x.Id);\r\n }\r\n\r\n let changed = false;\r\n\r\n for (let addId of missionIds) {\r\n const mission = this.missionsById[addId];\r\n if (!mission) continue;\r\n\r\n var index = _.findIndex(this.available, x => x.PersonId === mission.PersonId);\r\n if (index < 0) continue;\r\n\r\n changed = true;\r\n this.available.splice(index, 1);\r\n this._addMission(mission);\r\n }\r\n\r\n if (changed) {\r\n this._updateOrder();\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n createUpdate() {\r\n return {\r\n Added: this.attendances.filter(x => x.isAdded).map(x => x.createAdd()),\r\n Updated: this.attendances.filter(x => x.isChanged).map(x => x.createUpdate()),\r\n Removed: this.removed,\r\n };\r\n }\r\n}","import './attendance.less';\r\nimport * as _ from 'lodash';\r\n\r\nimport { AttendanceCollection } from './AttendanceCollection';\r\nimport { Attendance } from '../../objects/Attendance';\r\n\r\n/**\r\n * @typedef { import('./AttendanceModel').AttendanceModel } AttendanceModel\r\n */\r\n\r\nangular.module(\"tromanWeb\").controller('AttendanceController', ['$q', 'stateService', 'tromanServer', 'dialogService', 'systemInfo', 'meetingShared', function ($q, stateService, tromanServer, dialogService, systemInfo, meetingShared) {\r\n\r\n var isBusy = false;\r\n\r\n this.table = null;\r\n this.attendanceForm = null;\r\n this.toadd = null;\r\n this.hasButtons = false;\r\n this.showRequestAllTimeReports = false;\r\n this.canRequestAllTimeReports = false;\r\n\r\n this._updateButtons = function () {\r\n /** @type {AttendanceCollection}*/\r\n const ac = this.ac;\r\n if (ac != null) {\r\n this.hasButtons = ac.attendances.some(x => x.attendance.CeremonyId || x.hasTimeReport || x.canRequestTimeReport || x.canSpecifyMission());\r\n this.showRequestAllTimeReports = ac.attendances.some(x => x.canRequestTimeReport);\r\n this.canRequestAllTimeReports = ac.attendances.some(x => x.canRequestTimeReport && !x.isRequestingTimeReport);\r\n } else {\r\n this.hasButtons = false;\r\n this.canRequestAllTimeReports = false;\r\n this.showRequestAllTimeReports = false;\r\n }\r\n };\r\n\r\n this.personChanged = function personChanged() {\r\n var candidates = [];\r\n if (this.ac != null && this.toadd != null) {\r\n candidates = _.filter(this.toadd.Missions, x => x.MandatePeriod.OrganizationId === this.ac.meeting.OrganizationId);\r\n }\r\n this.addingMission = candidates.length === 1 ? candidates[0] : null;\r\n };\r\n\r\n this.add = function add() {\r\n if (this.addingMission == null) return;\r\n if (this.ac == null) return;\r\n\r\n this.ac.include(this.addingMission);\r\n this._updateButtons();\r\n this.toadd = null;\r\n this.attendanceForm.$setDirty();\r\n };\r\n\r\n this.addMembers = function addMembers(withsubs) {\r\n if (this.ac == null) return;\r\n\r\n if (this.ac.includeMembers(withsubs)) {\r\n this._updateButtons();\r\n this.attendanceForm.$setDirty();\r\n }\r\n };\r\n\r\n this.canAddMissionGroup = function canAddMissionGroup() {\r\n if (isBusy) return false;\r\n if (this.ac == null) return false;\r\n if (this.selectedMissionGroupId == null) return false;\r\n\r\n return true;\r\n };\r\n\r\n this.addMissionGroup = function addMissionGroup() {\r\n if (!this.canAddMissionGroup()) return;\r\n\r\n isBusy = true;\r\n\r\n return tromanServer.Missions\r\n .search({ MissionGroupId: this.selectedMissionGroupId })\r\n .then(result => {\r\n let missionIds = _.map(result, x => x.Id);\r\n if (this.ac.includeMissionIds(missionIds)) {\r\n this._updateButtons();\r\n this.attendanceForm.$setDirty();\r\n }\r\n this.selectedMissionGroupId = null;\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => isBusy = false);\r\n };\r\n\r\n /**\r\n * @param {AttendanceModel} attendanceModel\r\n */\r\n this.setLegacyMission = function setLegacyMission(attendanceModel) {\r\n if (this.ac == null) return;\r\n\r\n var missions = this.ac.getAvailableMissions(attendanceModel);\r\n dialogService.setAttendanceMission(missions, attendanceModel.attendance)\r\n .catch(() => null) // dismissed\r\n .then(mission => {\r\n if (mission) {\r\n this.ac.specifyMission(attendanceModel, mission);\r\n this._updateButtons();\r\n }\r\n })\r\n .catch(dialogService.error);\r\n };\r\n\r\n this.removeSelected = function removeSelected() {\r\n if (this.ac == null) return;\r\n if (this.table == null) return;\r\n if (this.table.selectionCount === 0) return;\r\n\r\n /** @type {AttendanceModel[]} */\r\n let items = this.table.selectedItems();\r\n if (items.length === 0) return;\r\n\r\n let message = [items.length === 1 ? 'Ta bort 1 närvaropost' : `Ta bort ${items.length} närvaroposter`];\r\n\r\n let [withPayments, withoutPayments] = _.partition(items, x => x.attendance.HasPayments);\r\n\r\n if (withoutPayments.length === 0) {\r\n dialogService.error('Alla markerade närvaroposter har arvoden och kan inte tas bort.');\r\n return;\r\n }\r\n\r\n if (withPayments.length === 1) {\r\n message.push('1 närvaropost har arvoden och kan inte tas bort.');\r\n } else if (withPayments.length > 1) {\r\n message.push(withPayments.length + ' närvaroposter har arvoden och kan inte tas bort.');\r\n }\r\n\r\n let [withCeremony, withoutCeremony] = _.partition(withoutPayments, x => x.attendance.CeremonyId != null);\r\n if (withCeremony.length === 1) {\r\n message.push('1 närvaropost har rapporterats som förrättning, förättningen kommer finnas kvar och blir tillgänglig att knyta till ett annat möte.');\r\n } else if (withCeremony.length > 1) {\r\n message.push(withCeremony.length + ' närvaroposter har rapporterats som förrättning, förättningen kommer finnas kvar och blir tillgänglig att knyta till ett annat möte.');\r\n }\r\n\r\n let [withPolitikerInfo, _remaining] = _.partition(withoutCeremony, x => x.attendance.HasClaims || x.attendance.TimeReport != null);\r\n // TODO should the warning only happen when TimeReport.State === timeReportState.recalled\r\n if (withPolitikerInfo.length === 1) {\r\n message.push('1 närvaropost har registrerade anspråk/tidrapporter. Dessa kommer fortsatt visas i Troman Politiker, men kommer inte längre kunna behandlas i Troman.');\r\n } else if (withPolitikerInfo.length > 1) {\r\n message.push(withPolitikerInfo.length + ' närvaroposter har registrerade anspråk/tidrapporter. Dessa kommer fortsatt visas i Troman Politiker, men kommer inte längre kunna behandlas i Troman.');\r\n }\r\n\r\n if (message.length > 1) {\r\n message.push('Vill du ta bort närvaroposter?');\r\n dialogService.confirm(message).then(() => {\r\n this.ac.exclude(withoutPayments);\r\n this._updateButtons();\r\n });\r\n } else {\r\n this.ac.exclude(withoutPayments);\r\n this._updateButtons();\r\n }\r\n };\r\n\r\n this.canSave = function canSave() {\r\n if (this.ac == null) return false;\r\n if (isBusy) return false;\r\n\r\n return this.ac.isChanged && this.attendanceForm?.$valid;\r\n };\r\n\r\n this.save = function save() {\r\n if (!this.canSave()) return;\r\n\r\n isBusy = true;\r\n\r\n tromanServer.Payroll.updateMeetingPayroll(meetingShared.meeting.Id, this.ac.createUpdate())\r\n .then(() => {\r\n stateService.forceReload('meeting');\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => { isBusy = false; });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createAttendanceModelList(list);\r\n };\r\n\r\n this.emailList = function emailList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems().map(x => x.getPerson());\r\n dialogService.createEmailList(list);\r\n };\r\n\r\n this.showCeremonyInfo = function (attendanceModel) {\r\n dialogService.showCeremony(attendanceModel.attendance.CeremonyId);\r\n };\r\n\r\n this.requestTimeReport = function(attendanceModel) {\r\n if (!attendanceModel.canRequestTimeReport) return;\r\n if (attendanceModel.isRequestingTimeReport) return;\r\n attendanceModel.isRequestingTimeReport = true;\r\n this._updateButtons();\r\n };\r\n\r\n this.undoRequestTimeReport = function(attendanceModel) {\r\n if (!attendanceModel.canRequestTimeReport) return;\r\n if (!attendanceModel.isRequestingTimeReport) return;\r\n attendanceModel.isRequestingTimeReport = false;\r\n this._updateButtons();\r\n };\r\n\r\n this.requestAllTimeReports = function() {\r\n if (!this.canRequestAllTimeReports) return;\r\n _.forEach(this.ac.attendances, x => {\r\n if (x.canRequestTimeReport && !x.isRequestingTimeReport) {\r\n x.isRequestingTimeReport = true;\r\n }\r\n });\r\n this._updateButtons();\r\n };\r\n\r\n /**\r\n * @param {AttendanceModel} attendanceModel\r\n */\r\n this.showTimeReportInfo = function (attendanceModel) {\r\n dialogService.showAttendanceTimeReport(attendanceModel.attendance, true).then(result => {\r\n let newAttendance = result?.newAttendance;\r\n if (newAttendance instanceof Attendance) {\r\n let replacement = attendanceModel.withAttendance(newAttendance);\r\n this.ac.replaceAttendance(attendanceModel, replacement);\r\n this._updateButtons();\r\n }\r\n });\r\n };\r\n\r\n this.isRemote = function (item) {\r\n var org = item.getOrganization();\r\n return (org == null) ? false : (org.Id !== this.meeting.OrganizationId);\r\n };\r\n\r\n this.$onInit = function () {\r\n let meeting = meetingShared.meeting;\r\n\r\n $q.all({\r\n attendanceList: tromanServer.Payroll.getAttendance(meeting.Id),\r\n missions: tromanServer.Missions.search({ Start: meeting.Date, End: meeting.Date, IsVacant: false }),\r\n missionGroups: tromanServer.MissionGroups.search({ HasMissions: true }),\r\n }).then(result => {\r\n this.ac = new AttendanceCollection(result.attendanceList, result.missions, result.missionGroups, systemInfo.IsPolitikerEnabled);\r\n this._updateButtons();\r\n stateService.guard(() => this.attendanceForm?.$dirty || this.ac.isChanged);\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n };\r\n}]);\r\n","import './attendance.less';\r\nimport * as _ from 'lodash';\r\n\r\nAttendanceDialogController.$inject = [];\r\nfunction AttendanceDialogController() {\r\n this.$onInit = function () {\r\n this.attendance = this._resolve.attendance;\r\n var candidates = this._resolve.missions;\r\n if (candidates == null || candidates.length === 0) {\r\n this.missions = null;\r\n this.selectedMission = null;\r\n } else {\r\n if (this.attendance.MissionId != null) {\r\n // Already specified, but not saved yet.\r\n this.selectedMission = _.find(candidates, x => x.Id === this.attendance.MissionId);\r\n } else {\r\n const attOrgId = this.attendance.OrganizationId || this.attendance.Meeting.OrganizationId;\r\n this.selectedMission = _.find(candidates, x => x.MissionTypeId === this.attendance.MissionTypeId && x.MandatePeriod.OrganizationId === attOrgId);\r\n }\r\n this.missions = _.sortBy(candidates, [x => x.MandatePeriod.Organization.Name, x => x.Start, x => x.End]);\r\n }\r\n };\r\n\r\n this.canSave = function () {\r\n return this.form && this.form.$valid && this.selectedMission != null;\r\n };\r\n\r\n this.save = function save() {\r\n if (!this.canSave()) return;\r\n this._close({ $value: this.selectedMission });\r\n };\r\n\r\n this.cancel = function () {\r\n this._dismiss();\r\n };\r\n}\r\n\r\nangular.module(\"tromanWeb\").component(\"ergoAttendanceDialog\", {\r\n template: require('./attendanceDialog.html'),\r\n bindings: {\r\n _close: '&close',\r\n _dismiss: '&dismiss',\r\n _resolve: ' x.attendance);\r\n\r\n/**\r\n * Check if \"a\" and \"b\" is the same treating null and empty string as equal.\r\n * @param {string} a\r\n * @param {string} b\r\n */\r\nfunction isChangedString(a, b) {\r\n if (a && b) {\r\n return a !== b;\r\n } else if (a || b) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport class AttendanceModel {\r\n /**\r\n * @param {Attendance} attendance\r\n * @param {boolean} isPolitikerEnabled\r\n * @param {boolean} isNew\r\n */\r\n constructor(attendance, isPolitikerEnabled, isNew) {\r\n this.originalAttendance = null;\r\n this.attendance = attendance;\r\n this.comment = attendance.Comment;\r\n this.isPolitikerEnabled = isPolitikerEnabled;\r\n\r\n this.canRequestTimeReport = false;\r\n this.isRequestingTimeReport = false;\r\n this.isWaitingTimeReport = false;\r\n this.timeReportStatusText = null;\r\n\r\n if (isPolitikerEnabled && !attendance.isLegacy() && !attendance.CeremonyId) {\r\n if (this.hasTimeReport) {\r\n switch (this.attendance.TimeReport.State) {\r\n case timeReportState.requested:\r\n case timeReportState.reported:\r\n this.timeReportStatusText = 'Väntar på svar';\r\n this.isWaitingTimeReport = true;\r\n break;\r\n case timeReportState.rejected:\r\n this.timeReportStatusText = 'Avslaget, väntar på nytt svar';\r\n this.isWaitingTimeReport = true;\r\n }\r\n } else if (attendance.getPerson().hasPolitikerNow) {\r\n this.canRequestTimeReport = true;\r\n this.isRequestingTimeReport = attendance.Meeting.EnableTimereport && isNew;\r\n this.timeReportStatusText = 'Väntar på svar';\r\n }\r\n }\r\n\r\n this._presentTime = attendance.PresentTime;\r\n this._servingTime = attendance.ServingTime;\r\n\r\n this._isPresent = !!this.presentTime;\r\n this._isServing = !!this.servingTime;\r\n }\r\n\r\n get isAdded() {\r\n return !this.attendance.Id;\r\n }\r\n\r\n get hasTimeReport() {\r\n return !!this.attendance.TimeReport;\r\n }\r\n\r\n get isChanged() {\r\n if (this.isAdded) return false;\r\n if (this.originalAttendance != null) return true;\r\n if (this.canRequestTimeReport && this.isRequestingTimeReport) return true;\r\n if (!this.isWaitingTimeReport && !this.isRequestingTimeReport) {\r\n if (isChangedString(this.presentTime, this.attendance.PresentTime)) return true;\r\n if (isChangedString(this.servingTime, this.attendance.ServingTime)) return true;\r\n }\r\n if (isChangedString(this.comment, this.attendance.Comment)) return true;\r\n return false;\r\n }\r\n\r\n get isPresent() {\r\n return this._isPresent;\r\n }\r\n\r\n set isPresent(value) {\r\n value = !!value;\r\n if (this._isPresent !== value) {\r\n this._isPresent = value;\r\n if (value) {\r\n this.presentTime = this.attendance.Meeting.MeetingTime;\r\n } else {\r\n this.presentTime = \"\";\r\n this.isServing = false;\r\n }\r\n }\r\n }\r\n\r\n get presentTime() {\r\n return this._presentTime;\r\n }\r\n\r\n set presentTime(value) {\r\n this._presentTime = value;\r\n this._isPresent = !!value;\r\n }\r\n\r\n get isServing() {\r\n return this._isServing;\r\n }\r\n\r\n set isServing(value) {\r\n value = !!value;\r\n if (this._isServing !== value) {\r\n this._isServing = value;\r\n if (value) {\r\n this.servingTime = this.presentTime;\r\n } else {\r\n this.servingTime = \"\";\r\n }\r\n }\r\n }\r\n\r\n get servingTime() {\r\n return this._servingTime;\r\n }\r\n\r\n set servingTime(value) {\r\n this._servingTime = value;\r\n this._isServing = !!value;\r\n }\r\n\r\n get displayPerson() {\r\n return this.attendance.displayPerson;\r\n }\r\n\r\n get displayMissionType() {\r\n return this.attendance.displayMissionType;\r\n }\r\n\r\n canServeAsSubstitute() {\r\n return this.attendance.canServeAsSubstitute();\r\n }\r\n\r\n getPerson() {\r\n return this.attendance.getPerson();\r\n }\r\n\r\n getPersonId() {\r\n return this.attendance.getPersonId();\r\n }\r\n\r\n /**\r\n * \r\n * @param {Meeting} meeting\r\n * @param {Mission} mission\r\n * @param {boolean} isPolitikerEnabled\r\n */\r\n static createNew(meeting, mission, isPolitikerEnabled) {\r\n const att = Attendance.createNew(meeting, mission);\r\n return new AttendanceModel(att, isPolitikerEnabled, true);\r\n }\r\n\r\n /**\r\n * \r\n * @param {Attendance} attendance\r\n * @param {boolean} isPolitikerEnabled\r\n */\r\n static createExisting(attendance, isPolitikerEnabled) {\r\n return new AttendanceModel(attendance, isPolitikerEnabled, false);\r\n }\r\n\r\n /**\r\n * @param {Attendance} attendance\r\n */\r\n withAttendance(attendance) {\r\n let ret = AttendanceModel.createExisting(attendance, this.isPolitikerEnabled);\r\n ret.comment = this.comment;\r\n return ret;\r\n }\r\n\r\n /**\r\n * \r\n * @param {AttendanceModel[]} collection\r\n */\r\n static order(collection) {\r\n return _.orderBy(collection, attendanceOrdering);\r\n }\r\n\r\n createUpdate() {\r\n let ret = {\r\n AttendanceId: this.attendance.Id,\r\n RowVersion: this.attendance.RowVersion,\r\n Attendance: {\r\n PresentTime: this.presentTime,\r\n ServingTime: this.servingTime,\r\n Comment: this.comment,\r\n SpecifyMissionId: this.originalAttendance != null ? this.attendance.MissionId : null,\r\n }\r\n };\r\n\r\n if (this.canRequestTimeReport && this.isRequestingTimeReport) {\r\n ret.Attendance.TimeReportOperation = timeReportCommand.add;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n createAdd() {\r\n let ret = {\r\n Attendance: {\r\n MissionId: this.attendance.MissionId,\r\n PresentTime: this.presentTime,\r\n ServingTime: this.servingTime,\r\n Comment: this.comment,\r\n }\r\n };\r\n\r\n if (this.canRequestTimeReport && this.isRequestingTimeReport) {\r\n ret.Attendance.RequestTimeReport = true;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n isLegacy() {\r\n return this.attendance.isLegacy();\r\n }\r\n\r\n canSpecifyMission() {\r\n return !!(this.attendance.isLegacy() || this.originalAttendance != null);\r\n }\r\n\r\n specifyMission(mission) {\r\n if (this.originalAttendance == null) {\r\n this.originalAttendance = this.attendance;\r\n }\r\n this.attendance = this.originalAttendance.specifyMission(mission);\r\n }\r\n}","import './meeting.less';\r\n\r\nclass MeetingController {\r\n static get $inject() {\r\n return ['meetingShared', 'systemInfo'];\r\n }\r\n\r\n constructor(meetingShared, systemInfo) {\r\n this.meeting = meetingShared.meeting;\r\n this.systemInfo = systemInfo;\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('MeetingController', MeetingController);\r\n","import * as _ from 'lodash';\r\nimport { MeetingFormModel } from '../form/MeetingFormModel';\r\n\r\nangular.module(\"tromanWeb\").controller('MeetingEditController', ['$q', 'stateService', '$transition$', 'tromanServer', 'ObjectCache', 'dialogService', 'systemInfo', 'meetingShared', function ($qservice, stateService, $transition$, tromanServer, ObjectCache, dialogService, systemInfo, meetingShared) {\r\n\r\n let isSaving = false;\r\n\r\n this.canSave = function () {\r\n if (isSaving) return false;\r\n if (this.formModel == null) return false;\r\n if (!this.formModel.isValid()) return false;\r\n\r\n return this.form.$dirty || this.formModel.hasChanges();\r\n };\r\n\r\n this.save = function save() {\r\n if (!this.canSave()) return;\r\n\r\n this.form.$commitViewValue();\r\n this.form.$setSubmitted();\r\n\r\n if (this.form.$invalid) return;\r\n\r\n isSaving = true;\r\n if (this.formModel.meeting.Id == null) {\r\n tromanServer.Meetings.addMeeting(this.formModel.createAdd())\r\n .finally(() => isSaving = false)\r\n .then(rsp => {\r\n stateService.forceGo('meeting.details', { meetingId: rsp.result.Id }, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error);\r\n } else {\r\n tromanServer.Meetings.updateMeeting(this.formModel.createUpdate())\r\n .finally(() => isSaving = false)\r\n .then(() => { stateService.forceReload('meeting'); })\r\n .catch(dialogService.error);\r\n }\r\n };\r\n\r\n this.hardRemove = function hardRemove() {\r\n if (this.formModel == null || this.formModel.meeting.Id == null) return;\r\n\r\n dialogService.confirm(['Radera mötet permanent.', 'Detta kan inte ångras', 'Är du säker?']).then(() => {\r\n tromanServer.Meetings.hardRemove(this.formModel.meeting.Id)\r\n .then(() => {\r\n stateService.forceGo('meetings.regular');\r\n })\r\n .catch(err => { dialogService.error(err); });\r\n });\r\n };\r\n\r\n this.$onInit = function $onInit() {\r\n $qservice\r\n .all({\r\n organizations: ObjectCache.getOrganizations(meetingShared.meeting.Organization),\r\n wageCalculations: ObjectCache.getWageCalculations(meetingShared.meeting.WageCalculation),\r\n })\r\n .then(result => {\r\n this.organizations = result.organizations;\r\n this.wageCalculations = result.wageCalculations;\r\n\r\n let meeting = meetingShared.meeting.clone();\r\n\r\n if (!meeting.Id) {\r\n const orgId = $transition$.params().initialOrganizationId;\r\n if (orgId != null) {\r\n meeting.Organization = _.find(this.organizations, x => x.Id === orgId);\r\n\r\n meeting.EnableTimereport = !!meeting.Organization?.EnableTimereport;\r\n\r\n if (meeting.Organization?.WageCalculationId) {\r\n meeting.WageCalculation = _.find(this.wageCalculations, x => x.Id === meeting.Organization.WageCalculationId);\r\n } else {\r\n meeting.WageCalculation = null;\r\n }\r\n }\r\n }\r\n\r\n this.isAdding = !meeting.Id;\r\n this.formModel = new MeetingFormModel(meeting, systemInfo.IsPolitikerEnabled);\r\n\r\n stateService.guard(() => this.form.$dirty || this.formModel.hasChanges());\r\n })\r\n .catch(dialogService.error);\r\n };\r\n}]);\r\n","import { Meeting, MeetingAccountSource, MeetingCertifierSource } from '../../objects/Meeting';\r\n\r\nangular.module(\"tromanWeb\").factory('MeetingState', ['$q', 'tromanServer', 'dialogService', function ($q, tromanServer, dialogService) {\r\n\r\n function getMeeting(id) {\r\n if (id) {\r\n return tromanServer.Meetings.get(id);\r\n } else {\r\n var meeting = new Meeting();\r\n meeting.MeetingType = 0;\r\n meeting.AccountSource = MeetingAccountSource.missionOrganization;\r\n meeting.CertifierSource = MeetingCertifierSource.missionOrganization;\r\n return $q.when(meeting);\r\n }\r\n }\r\n\r\n class MeetingState {\r\n constructor(meeting) {\r\n this.meeting = meeting;\r\n }\r\n\r\n static create(id) {\r\n return getMeeting(id)\r\n .then(x => new MeetingState(x))\r\n .catch(err => {\r\n dialogService.error(err);\r\n return $q.reject(err);\r\n });\r\n }\r\n }\r\n\r\n return MeetingState;\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nimport { PayslipCollection } from \"../../payroll/PayslipCollection\";\r\nimport { PaymentLock } from '../../payroll/PaymentLock';\r\n\r\n/**\r\n * @typedef { import('../../payroll/PayslipModel').PayslipModel } PayslipModel\r\n */\r\n\r\nangular.module(\"tromanWeb\").controller('PayrollController', ['$q', 'stateService', 'tromanServer', 'ObjectCache', 'dialogService', 'tromanGlobals', 'meetingShared', function ($qservice, stateService, tromanServer, ObjectCache, dialogService, tromanGlobals, meetingShared) {\r\n\r\n this.isSaving = false;\r\n this.paymentLock = new PaymentLock();\r\n this.selectionCount = 0;\r\n\r\n /** @type {PayslipCollection} */\r\n this.collection = null;\r\n this.IsWarningMissingMeetingPaymentEnabled = tromanGlobals.systemInfo.IsWarningMissingMeetingPaymentEnabled;\r\n\r\n this.$onInit = function $onInit() {\r\n $qservice\r\n .all({\r\n payslips: tromanServer.Payroll.getMeetingPayroll(meetingShared.meeting.Id),\r\n wageTypes: ObjectCache.getWageTypes(null, {\r\n Archived: 1,\r\n ValidAt: meetingShared.meeting.Date\r\n }),\r\n wageCalculations: ObjectCache.getWageCalculations(meetingShared.meeting.WageCalculation),\r\n politikerSettings: tromanServer.Politiker.getSettings(),\r\n })\r\n .then(result => {\r\n this.paymentLock.reset();\r\n\r\n this.wageCalculations = result.wageCalculations;\r\n this.selectedCalculation = _.find(result.wageCalculations, x => x.Id === meetingShared.meeting.WageCalculationId);\r\n\r\n this.collection = new PayslipCollection(meetingShared.meeting, result.payslips, result.politikerSettings, this.selectedCalculation);\r\n\r\n this.isMissingWageGroup = !meetingShared.meeting.Organization.WageGroup;\r\n\r\n let usedWageTypes = new Set();\r\n result.payslips.forEach(ps => ps.Remunerations.forEach(rem => rem.Payments.forEach(y => usedWageTypes.add(y.WageTypeId))));\r\n\r\n this.wageTypes = result.wageTypes.filter(x => x.Active || usedWageTypes.has(x.Id));\r\n\r\n // The childforms will propagate $dirty to parentForm, but that value is not reset after they are removed.\r\n // There is no good place to reset parentForm without being \"hacky\".\r\n // Check children directly instead (children.length should be 0 or 1)\r\n stateService.guard(() => this.collection.hasChanges || _.some(this.parentForm?.$getControls(), x => x.$dirty));\r\n })\r\n .catch(dialogService.error);\r\n };\r\n\r\n this.canFilter = function canFilter() {\r\n return !this.paymentLock.isLocked;\r\n };\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n */\r\n this.payslipVisible = function payslipVisible(payslipModel) {\r\n switch (this.filter) {\r\n case 'txissue': return payslipModel.hasTransactionIssues;\r\n case 'warning': return payslipModel.hasWarnings;\r\n case 'missingmeeting': return payslipModel.isMissingMeetingPayment;\r\n case 'newclaim': return payslipModel.hasPolitikerTasks;\r\n case 'certrejected': return payslipModel.hasRejectedCertification;\r\n case 'certrecalled': return payslipModel.hasRecalledCertification;\r\n default: return true;\r\n }\r\n };\r\n\r\n this.selectionChanged = function () {\r\n this.selectionCount = this.collection.countSelectedPayments();\r\n };\r\n\r\n this.canCalculate = function () {\r\n if (this.selectedCalculation == null) return false;\r\n if (this.paymentLock.isLocked) return false;\r\n return true;\r\n };\r\n\r\n this.calculate = function () {\r\n if (!this.canCalculate()) return;\r\n\r\n try {\r\n this.collection.calculate(this.selectedCalculation, x => this.payslipVisible(x));\r\n if (this.filter === 'missingmeeting') {\r\n this.filter = '';\r\n }\r\n } catch (err) {\r\n dialogService.error(err);\r\n }\r\n };\r\n\r\n this.canApproveAllPolitiker = function () {\r\n return this.collection != null && this.collection.hasAnyPolitikerTasks;\r\n };\r\n\r\n this.approveAllPolitiker = function () {\r\n if (!this.canApproveAllPolitiker()) return;\r\n\r\n this.collection?.approveAllPolitiker();\r\n this.filter = '';\r\n };\r\n\r\n this.canRemoveSelected = function () {\r\n if (this.paymentLock.isLocked) return false;\r\n if (this.selectionCount === 0) return false;\r\n return true;\r\n };\r\n\r\n this.removeSelected = function () {\r\n if (!this.canRemoveSelected()) return;\r\n\r\n this.collection.removeSelectedPayments();\r\n };\r\n\r\n this.canSave = function () {\r\n if (this.paymentLock.isLocked) return false;\r\n if (this.isSaving) return false;\r\n if (this.collection == null) return false;\r\n if (!this.collection.hasChanges) return false;\r\n if (!this.parentForm) return false;\r\n if (this.parentForm.$invalid) return false;\r\n\r\n return true;\r\n };\r\n\r\n this.save = function () {\r\n if (!this.canSave()) return;\r\n\r\n let cmd = this.collection.createUpdate();\r\n\r\n this.isSaving = true;\r\n tromanServer.Payroll.updateMeetingPayroll(meetingShared.meeting.Id, cmd)\r\n .finally(() => this.isSaving = false)\r\n .then(() => {\r\n stateService.forceReload('meeting');\r\n })\r\n .catch(dialogService.error);\r\n };\r\n}]);\r\n","import './meetingform.less';\r\n\r\nimport * as _ from 'lodash';\r\n\r\n/**\r\n * @typedef { import('./MeetingFormModel').MeetingFormModel } MeetingFormModel\r\n */\r\n\r\nclass MeetingFormController {\r\n constructor() {\r\n /** @type {MeetingFormModel} */\r\n this.model = null;\r\n }\r\n\r\n hasValidAttachments() {\r\n if (this.model == null) return true;\r\n return this.model.attachments.isValid();\r\n }\r\n\r\n $onChanges(changed) {\r\n if (changed.model) {\r\n if (this.model) {\r\n this.meeting = this.model.meeting;\r\n } else {\r\n this.meeting = null;\r\n }\r\n }\r\n }\r\n\r\n organizationChanged() {\r\n if (this.meeting && !this.meeting.Id) {\r\n this.meeting.EnableTimereport = !!this.meeting.Organization?.EnableTimereport;\r\n\r\n if (this.meeting.Organization?.WageCalculationId) {\r\n this.meeting.WageCalculation = _.find(this.wageCalculations, x => x.Id === this.meeting.Organization.WageCalculationId);\r\n } else {\r\n this.meeting.WageCalculation = null;\r\n }\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component(\"ergoMeetingForm\", {\r\n template: require('./meetingform.html'),\r\n bindings: {\r\n model: '<',\r\n organizations: '<',\r\n wageCalculations: '<',\r\n },\r\n controller: MeetingFormController\r\n});\r\n","import { AttachmentCollection, compareByTitle } from '../../attachments/AttachmentCollection';\r\n\r\n/**\r\n * @typedef { import('../../objects/Meeting').Meeting } Meeting\r\n * @typedef { import('../../directives/ergoFileInput').FileResult } FileResult\r\n */\r\n\r\nexport class MeetingFormModel {\r\n /**\r\n * @param {Meeting} meeting\r\n */\r\n constructor(meeting, isPolitikerEnabled, copyFiles) {\r\n this.meeting = meeting;\r\n this.isPolitikerEnabled = isPolitikerEnabled;\r\n this.attachments = new AttachmentCollection(this.meeting.Attachments, copyFiles, compareByTitle);\r\n }\r\n\r\n isValid() {\r\n return this.attachments.isValid();\r\n }\r\n\r\n hasChanges() {\r\n return this.attachments.hasChanges();\r\n }\r\n\r\n createAdd() {\r\n return this.createUpdate();\r\n }\r\n\r\n createUpdate() {\r\n let result = {};\r\n result.Meeting = this.meeting;\r\n result.Attachments = this.attachments.createUpdate();\r\n return result;\r\n }\r\n}\r\n","import './meetings.less';\r\nimport * as _ from 'lodash';\r\n\r\nfunction createCriteria(paramCriteria) {\r\n\r\n let criteria = {\r\n OrganizationIds: [],\r\n };\r\n\r\n if (paramCriteria) {\r\n _.extend(criteria, _.cloneDeep(paramCriteria));\r\n }\r\n\r\n return criteria;\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('CeremonyMeetingsController', ['$q', 'stateService', 'tromanServer', 'ObjectCache', 'meetingsShared', function ($q, stateService, tromanServer, ObjectCache, meetingsShared) {\r\n\r\n this.items = null;\r\n this.displayedItems = [];\r\n\r\n function searchWithCriteria(criteria) {\r\n let sc = _.cloneDeep(criteria);\r\n return tromanServer.Ceremonies.getCeremonies(sc);\r\n }\r\n\r\n this._loadItems = function _loadItems(resultPromise) {\r\n this.items = null;\r\n this.busy = true;\r\n resultPromise.then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.busy = false;\r\n });\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._loadItems(searchWithCriteria(this.criteria));\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.$onInit = function () {\r\n const params = stateService.getParams();\r\n this.criteria = createCriteria(params.criteria);\r\n this.filter = params.filter;\r\n\r\n meetingsShared.getAddIdCallback = () => this.getAddId();\r\n\r\n this._loadItems($q.all({\r\n organizations: ObjectCache.getOrganizations(),\r\n meetings: searchWithCriteria(this.criteria),\r\n }).then(data => {\r\n this.organizations = data.organizations;\r\n return data.meetings;\r\n }));\r\n };\r\n\r\n this.canSearch = function canSearch() {\r\n if (this.busy) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n this.search = function search() {\r\n if (!this.canSearch()) return;\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function () {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.getAddId = function getAddId() {\r\n if (this.criteria.OrganizationIds && this.criteria.OrganizationIds.length > 0) {\r\n return this.criteria.OrganizationIds[0];\r\n } else {\r\n return null;\r\n }\r\n };\r\n}]);\r\n","import './meetings.less';\r\n\r\nangular.module(\"tromanWeb\").factory('MeetingsShared', [function () {\r\n\r\n class MeetingsShared {\r\n constructor() {\r\n this.getAddIdCallback = null;\r\n }\r\n\r\n getAddId() {\r\n if (this.getAddIdCallback == null) {\r\n return null;\r\n }\r\n\r\n return this.getAddIdCallback();\r\n }\r\n }\r\n\r\n return MeetingsShared;\r\n}]);\r\n","import './meetings.less';\r\nimport * as _ from 'lodash';\r\n\r\nfunction createCriteria(paramCriteria) {\r\n\r\n let criteria = {\r\n OrganizationIds: [],\r\n };\r\n\r\n if (paramCriteria) {\r\n _.extend(criteria, _.cloneDeep(paramCriteria));\r\n }\r\n\r\n return criteria;\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('MeetingsToHandleController', ['$q', 'stateService', 'tromanServer', 'dialogService', 'ObjectCache', 'meetingsShared', function ($q, stateService, tromanServer, dialogService, ObjectCache, meetingsShared) {\r\n\r\n this.items = null;\r\n this.displayedItems = [];\r\n\r\n function searchWithCriteria(criteria) {\r\n let sc = _.cloneDeep(criteria);\r\n return tromanServer.Meetings.getMeetingsWithClaims(sc);\r\n }\r\n\r\n this._loadItems = function _loadItems(resultPromise) {\r\n this.items = null;\r\n this.busy = true;\r\n resultPromise.then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.busy = false;\r\n });\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._loadItems(searchWithCriteria(this.criteria));\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.$onInit = function () {\r\n const params = stateService.getParams();\r\n this.criteria = createCriteria(params.criteria);\r\n this.filter = params.filter;\r\n\r\n meetingsShared.getAddIdCallback = () => this.getAddId();\r\n\r\n this._loadItems($q.all({\r\n organizations: ObjectCache.getOrganizations(),\r\n meetings: searchWithCriteria(this.criteria),\r\n }).then(data => {\r\n this.organizations = data.organizations;\r\n return data.meetings;\r\n }));\r\n };\r\n\r\n this.canSearch = function canSearch() {\r\n if (this.busy) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n this.search = function search() {\r\n if (!this.canSearch()) return;\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function () {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = _.map(this.table.selectedItems(), x => x.Meeting);\r\n dialogService.createMeetingList(list);\r\n };\r\n\r\n this.getAddId = function getAddId() {\r\n if (this.criteria.OrganizationIds && this.criteria.OrganizationIds.length > 0) {\r\n return this.criteria.OrganizationIds[0];\r\n } else {\r\n return null;\r\n }\r\n };\r\n}]);\r\n","import './meetings.less';\r\nimport * as _ from 'lodash';\r\n\r\nfunction createCriteria(paramCriteria) {\r\n\r\n let criteria = {\r\n OrganizationIds: [],\r\n CertifierIds: [],\r\n CertifyingOrganizationIds: [],\r\n IsAbandoned: false,\r\n };\r\n\r\n if (paramCriteria) {\r\n _.extend(criteria, _.cloneDeep(paramCriteria));\r\n }\r\n\r\n return criteria;\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('PendingMeetingsController', ['$q', 'stateService', 'tromanServer', 'dialogService', 'ObjectCache', 'meetingsShared', function ($q, stateService, tromanServer, dialogService, ObjectCache, meetingsShared) {\r\n\r\n this.items = null;\r\n this.displayedItems = [];\r\n\r\n function searchWithCriteria(criteria) {\r\n let sc = _.cloneDeep(criteria);\r\n return tromanServer.Meetings.getMeetingsWithPending(sc);\r\n }\r\n\r\n this._loadItems = function _loadItems(resultPromise) {\r\n this.items = null;\r\n this.busy = true;\r\n resultPromise.then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.busy = false;\r\n });\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._loadItems(searchWithCriteria(this.criteria));\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.$onInit = function () {\r\n const params = stateService.getParams();\r\n this.criteria = createCriteria(params.criteria);\r\n this.filter = params.filter;\r\n\r\n meetingsShared.getAddIdCallback = () => this.getAddId();\r\n\r\n this._loadItems($q.all({\r\n organizations: ObjectCache.getOrganizations(),\r\n persons: ObjectCache.getPersons(),\r\n meetings: searchWithCriteria(this.criteria),\r\n }).then(data => {\r\n this.organizations = data.organizations;\r\n this.persons = data.persons;\r\n return data.meetings;\r\n }));\r\n };\r\n\r\n this.canSearch = function canSearch() {\r\n if (this.busy) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n this.search = function search() {\r\n if (!this.canSearch()) return;\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function () {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = _.map(this.table.selectedItems(), x => x.Meeting);\r\n dialogService.createMeetingList(list);\r\n };\r\n\r\n this.getAddId = function getAddId() {\r\n if (this.criteria.OrganizationIds && this.criteria.OrganizationIds.length > 0) {\r\n return this.criteria.OrganizationIds[0];\r\n } else {\r\n return null;\r\n }\r\n };\r\n}]);\r\n","import './meetings.less';\r\nimport * as _ from 'lodash';\r\nimport * as utility from '../../misc/utility';\r\n\r\nfunction updateCriteriaDate(criteria) {\r\n var today = utility.todayDate();\r\n\r\n if (criteria.PersonId != null || (criteria.OrganizationIds != null && criteria.OrganizationIds.length > 0)) {\r\n criteria.DateFrom = new Date(today.getFullYear() - 1, today.getMonth(), today.getDate());\r\n criteria.DateTo = new Date(today.getFullYear(), today.getMonth() + 1, today.getDate());\r\n } else {\r\n criteria.DateFrom = new Date(today.getFullYear(), today.getMonth() - 1, today.getDate());\r\n criteria.DateTo = new Date(today.getFullYear(), today.getMonth() + 1, today.getDate());\r\n }\r\n}\r\n\r\nfunction createCriteria(paramCriteria) {\r\n\r\n let criteria = {\r\n OrganizationIds: [],\r\n PersonId: null,\r\n MeetingType: null,\r\n };\r\n\r\n if (paramCriteria) {\r\n _.extend(criteria, _.cloneDeep(paramCriteria));\r\n } else {\r\n updateCriteriaDate(criteria);\r\n }\r\n\r\n return criteria;\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('RegularMeetingsController', ['$q', 'stateService', 'tromanServer', 'dialogService', 'ObjectCache', 'meetingsShared', function ($q, stateService, tromanServer, dialogService, ObjectCache, meetingsShared) {\r\n\r\n this.items = null;\r\n this.displayedItems = [];\r\n\r\n function searchWithCriteria(criteria) {\r\n let sc = _.cloneDeep(criteria);\r\n return tromanServer.Meetings.search(sc);\r\n }\r\n\r\n this._loadItems = function _loadItems(resultPromise) {\r\n this.items = null;\r\n this.busy = true;\r\n resultPromise.then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.busy = false;\r\n });\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._loadItems(searchWithCriteria(this.criteria));\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.$onInit = function () {\r\n const params = stateService.getParams();\r\n this.criteria = createCriteria(params.criteria);\r\n this.filter = params.filter;\r\n\r\n meetingsShared.getAddIdCallback = () => this.getAddId();\r\n\r\n this._loadItems($q.all({\r\n organizations: ObjectCache.getOrganizations(),\r\n persons: ObjectCache.getPersons(),\r\n meetings: searchWithCriteria(this.criteria),\r\n }).then(data => {\r\n this.organizations = data.organizations;\r\n this.persons = data.persons;\r\n return data.meetings;\r\n }));\r\n };\r\n\r\n this.hasValidCriteria = function () {\r\n if (this.criteria.PersonId != null) {\r\n return true;\r\n }\r\n\r\n if (this.criteria.OrganizationIds != null && this.criteria.OrganizationIds.length > 0) {\r\n return true;\r\n }\r\n\r\n if (this.criteria.DateFrom != null && this.criteria.DateTo != null) {\r\n var diff = this.criteria.DateTo - this.criteria.DateFrom;\r\n\r\n if (diff < (93 * 24 * 60 * 60 * 1000)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.setDefaultDate = function setDefaultDate() {\r\n updateCriteriaDate(this.criteria);\r\n };\r\n\r\n this.canSearch = function canSearch() {\r\n if (this.busy) {\r\n return false;\r\n }\r\n\r\n return this.hasValidCriteria();\r\n };\r\n\r\n this.search = function search() {\r\n if (!this.canSearch()) return;\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function () {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createMeetingList(list);\r\n };\r\n\r\n this.getAddId = function getAddId() {\r\n if (this.criteria.OrganizationIds && this.criteria.OrganizationIds.length > 0) {\r\n return this.criteria.OrganizationIds[0];\r\n } else {\r\n return null;\r\n }\r\n };\r\n}]);\r\n","import './meetings.less';\r\n\r\nangular.module(\"tromanWeb\").controller('RootMeetingsController', ['systemInfo', 'meetingsShared', function (systemInfo, meetingsShared) {\r\n\r\n this.isPolitikerEnabled = systemInfo.IsPolitikerEnabled;\r\n\r\n this.getAddId = function getAddId() {\r\n return meetingsShared.getAddId();\r\n };\r\n}]);\r\n","import { AuditEntry } from '../../components/auditlog/auditlogComponent';\r\nimport { timeReportState } from '../../objects/Attendance';\r\nimport './timeReportDialog.less';\r\n\r\n/**\r\n * @typedef { import('../../server/ApiServer').ApiServer } ApiServer\r\n * @typedef { import('../../objects/Attendance').Attendance } Attendance\r\n */\r\n\r\nangular.module(\"tromanWeb\").controller('TimeReportDialogController', ['ObjectCache', 'tromanServer', 'dialogService', '$uibModalInstance', 'attendance', 'canRecall',\r\n /**\r\n * @param {any} ObjectCache\r\n * @param {ApiServer} tromanServer\r\n * @param {any} dialogService\r\n * @param {any} $uibModalInstance\r\n * @param {Attendance} attendance\r\n */\r\n function (ObjectCache, tromanServer, dialogService, $uibModalInstance, attendance, canRecall) {\r\n this.attendance = attendance;\r\n this.timeReport = attendance.TimeReport;\r\n this.isRejected = false;\r\n this.canRecall = false;\r\n this.canReactivate = false;\r\n this.showReportedTimes = false;\r\n\r\n ObjectCache.getAllUsers().then(users => {\r\n this.audit = AuditEntry.generateAudit(this.timeReport.AuditEntries, users);\r\n });\r\n\r\n switch (this.timeReport.State) {\r\n case timeReportState.accepted:\r\n this.status = 'Godkänd';\r\n this.showReportedTimes = true;\r\n break;\r\n case timeReportState.rejected:\r\n this.status = 'Avslagen, väntar på svar';\r\n this.canRecall = canRecall;\r\n this.isRejected = true;\r\n break;\r\n case timeReportState.recalled:\r\n this.status = 'Avslagen, begäran återkallad';\r\n this.canReactivate = true;\r\n break;\r\n case timeReportState.reported:\r\n this.status = 'Svar mottaget, ej behandlat';\r\n this.showReportedTimes = true;\r\n break;\r\n case timeReportState.requested:\r\n this.status = 'Väntar på svar';\r\n this.canRecall = canRecall;\r\n break;\r\n }\r\n\r\n this.recallTimereport = function () {\r\n dialogService.confirm(['Återkalla begäran om tidrapport']).then(() => {\r\n tromanServer.Payroll.recallTimereport(attendance.Meeting.Id, {\r\n AttendanceId: attendance.Id,\r\n RowVersion: attendance.RowVersion,\r\n }).then(newAttendance => {\r\n $uibModalInstance.close({\r\n action: 'recalled',\r\n newAttendance: newAttendance,\r\n });\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n });\r\n };\r\n\r\n this.reactivateTimereport = function () {\r\n dialogService.confirm(['Aktivera begäran om tidrapport']).then(() => {\r\n tromanServer.Payroll.reactivateTimereport(attendance.Meeting.Id, {\r\n AttendanceId: attendance.Id,\r\n RowVersion: attendance.RowVersion,\r\n }).then(newAttendance => {\r\n $uibModalInstance.close({\r\n action: 'reactivated',\r\n newAttendance: newAttendance,\r\n });\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n });\r\n };\r\n\r\n this.close = function () {\r\n $uibModalInstance.close(null);\r\n };\r\n }\r\n]);\r\n","import { DateTime, Interval } from 'luxon';\r\n\r\n/**\r\n * @typedef { import('../objects/Mission').Mission } Mission\r\n * @typedef {{years: number, days: number}} TotalTime\r\n*/\r\n\r\n/**\r\n * Gets the total time according to Troman rules, a year is always 365 days.\r\n * @param {Interval[]} intervals\r\n * @returns {TotalTime}\r\n */\r\nfunction getTotalTime(intervals) {\r\n let merged = Interval.merge(intervals);\r\n let days = 0;\r\n\r\n for (let interval of merged) {\r\n let diff = interval.end.diff(interval.start, 'days');\r\n days = days + Math.floor(diff.days);\r\n }\r\n\r\n return { years: Math.floor(days / 365), days: days % 365 };\r\n}\r\n\r\n/**\r\n * \r\n * @param {Date} dt\r\n */\r\nfunction toDateTimeOnlyDate(dt) {\r\n return DateTime.fromObject({ year: dt.getFullYear(), month: dt.getMonth() + 1, day: dt.getDate() });\r\n}\r\n\r\n/**\r\n * \r\n * @param {Date} dt\r\n * @param {number} days\r\n */\r\nexport function addCalendarDays(dt, days) {\r\n if (dt == null) {\r\n return null;\r\n }\r\n return new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + days);\r\n}\r\n\r\n/**\r\n * \r\n * @param {Mission[]} missions\r\n * @param {Date} cutoff (inclusive)\r\n */\r\nexport function getMissionDateDuration(missions, cutoff) {\r\n let intervals = [];\r\n let cutoffDateTime = toDateTimeOnlyDate(cutoff).plus({ days: 1 });\r\n for (let mission of missions) {\r\n if (mission.Start < cutoff) {\r\n let start = toDateTimeOnlyDate(mission.Start);\r\n\r\n let end = cutoffDateTime;\r\n if (mission.End != null && mission.End < cutoff) {\r\n end = toDateTimeOnlyDate(mission.End).plus({ days: 1 });\r\n }\r\n\r\n let interval = Interval.fromDateTimes(start, end);\r\n if (interval.isValid) {\r\n intervals.push(interval);\r\n }\r\n }\r\n }\r\n return getTotalTime(intervals);\r\n}\r\n\r\n/**\r\n * \r\n * @param {TotalTime} totalTime\r\n */\r\nexport function formatDateDuration(totalTime) {\r\n if (totalTime == null) return '';\r\n\r\n const years = totalTime.years + ' år';\r\n const days = totalTime.days + (totalTime.days === 1 ? ' dag' : ' dagar');\r\n\r\n if (totalTime.years === 0) {\r\n return days;\r\n } else if (totalTime.days === 0) {\r\n return years;\r\n } else {\r\n return years + ' ' + days;\r\n }\r\n}","import * as _ from 'lodash';\r\n\r\n/**\r\n * @typedef {{Id: string, ...}} IEntity\r\n * \r\n * @callback IEntityPredicate\r\n * @param {IEntity} entity\r\n * @returns {boolean}\r\n */\r\n\r\nexport class EntityCollection {\r\n /**\r\n *\r\n * @param {IEntity[]} entities\r\n */\r\n constructor(entities) {\r\n this.list = entities;\r\n }\r\n\r\n /**\r\n * Finds the object with corresponding id\r\n * @param {string} id\r\n * @returns {IEntity}\r\n */\r\n find(id) {\r\n if (this._map == null) {\r\n this._map = _.keyBy(this.list, x => x.Id);\r\n }\r\n return this._map[id];\r\n }\r\n\r\n /**\r\n * Returns true if predicate returns true for any entity with id in ids.\r\n * If no entity with matching id is found, the id is ignored.\r\n * @param {any} ids\r\n * @param {IEntityPredicate} predicate\r\n */\r\n some(ids, predicate) {\r\n return _.some(ids, x => {\r\n let obj = this.find(x);\r\n return obj && predicate(obj);\r\n });\r\n }\r\n}\r\n","export var AddressType = {\r\n Home: 0,\r\n Distribution: 1,\r\n Visitation: 2\r\n};\r\n\r\nexport var PhoneType = {\r\n Home: 0,\r\n Mobile: 1,\r\n Work: 2,\r\n Holiday: 3\r\n};\r\n\r\nexport var EmailType = {\r\n Public: 0,\r\n Private: 1,\r\n Internal: 2\r\n};\r\n\r\nexport var UrlType = {\r\n NotSet: 0,\r\n Documents: 1,\r\n Photo: 2,\r\n HomePage: 3\r\n};\r\n\r\nexport var Gender = {\r\n NotSet: 0,\r\n Man: 1,\r\n Woman: 2\r\n};\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"tromanWeb\").factory('Property', ['$parse', function ($parse) {\r\n\r\n function Property(key, title, fnOrExpr, order) {\r\n this.key = key;\r\n this.fn = _.isFunction(fnOrExpr) ? fnOrExpr : $parse(fnOrExpr);\r\n this.title = title;\r\n this.ascending = true;\r\n this.order = order;\r\n }\r\n\r\n Property.prototype.listable = function listable(columnDefault, sorterDefault) {\r\n this.list = {\r\n defcol: columnDefault || 0,\r\n defsort: sorterDefault || 0\r\n };\r\n return this;\r\n };\r\n\r\n Property.prototype.descending = function descending() {\r\n this.ascending = false;\r\n return this;\r\n };\r\n\r\n return Property;\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").factory('Metadata', ['Property', 'isTroman', function (Property, isTroman) {\r\n\r\n function Metadata() {\r\n this.properties = [];\r\n this.propertyMap = Object.create(null);\r\n this.nextorder = 0;\r\n }\r\n\r\n Metadata.prototype.add = function add(key, title, expr) {\r\n var prop = new Property(key, title, expr || key, this.nextorder++);\r\n this.propertyMap[key] = prop;\r\n this.properties.push(prop);\r\n return prop;\r\n };\r\n\r\n Metadata.prototype.setSortingProperty = function setSortingProperty(key) {\r\n this.sortingProperty = this.propertyMap[key];\r\n };\r\n\r\n Metadata.prototype.setListTitle = function setListTitle(title) {\r\n this.title = title;\r\n };\r\n\r\n Metadata.prototype.setSettingType = function setSettingType(settingType) {\r\n this.settingType = settingType;\r\n };\r\n\r\n Metadata.Person = new Metadata();\r\n Metadata.Person.add(\"name\", \"Namn\").listable(1, 1);\r\n Metadata.Person.add(\"FirstName\", \"Förnamn\", \"firstName\").listable();\r\n Metadata.Person.add(\"LastName\", \"Efternamn\").listable();\r\n Metadata.Person.add(\"PersonalNumber\", \"Personnummer (komplett)\").listable(2);\r\n Metadata.Person.add(\"PersonalNumberDate\", \"Personnummer (datum)\", \"PersonalNumber | ergoPnDate\").listable();\r\n Metadata.Person.add(\"Title\", \"Sysselsättning\").listable();\r\n Metadata.Person.add(\"Area\", \"Område\").listable();\r\n Metadata.Person.add(\"Comment\", \"Kommentar\").listable();\r\n Metadata.Person.add(\"emailPublic.Email\", \"E-post (offentlig)\").listable();\r\n Metadata.Person.add(\"emailInternal.Email\", \"E-post (2)\").listable();\r\n Metadata.Person.add(\"emailPrivate.Email\", \"E-post (3)\").listable();\r\n Metadata.Person.add(\"phoneWork.Number\", \"Tel (arbete)\").listable();\r\n Metadata.Person.add(\"phoneMobile.Number\", \"Tel (mobil)\").listable();\r\n Metadata.Person.add(\"phoneHome.Number\", \"Tel (bostad)\").listable();\r\n Metadata.Person.add(\"phoneHoliday.Number\", \"Tel (fritid)\").listable();\r\n Metadata.Person.add(\"homeAddress\", \"Adress (bostad)\", \"homeAddress | ergoAddress\").listable();\r\n Metadata.Person.add(\"homeAddress.Address\", \"Gatuadress (bostad)\").listable();\r\n Metadata.Person.add(\"homeAddress.ZipCode\", \"Postnummer (bostad)\").listable();\r\n Metadata.Person.add(\"homeAddress.City\", \"Postort (bostad)\").listable();\r\n Metadata.Person.add(\"distributionAddress\", \"Adress (utskick)\", \"distributionAddress | ergoAddress\").listable();\r\n Metadata.Person.add(\"distributionAddress.Address\", \"Gatuadress (utskick)\").listable();\r\n Metadata.Person.add(\"distributionAddress.ZipCode\", \"Postnummer (utskick)\").listable();\r\n Metadata.Person.add(\"distributionAddress.City\", \"Postort (utskick)\").listable();\r\n Metadata.Person.add(\"urlHomePage.Url\", \"Hemsida\", \"Website\").listable();\r\n Metadata.Person.add(\"urlPhoto.Url\", \"Foto\", \"PhotoUrl\").listable();\r\n Metadata.Person.add(\"Party.Name\", isTroman ? \"Partinamn\" : \"Kategorinamn\").listable(3);\r\n Metadata.Person.add(\"Party.Abbreviation\", isTroman ? \"Partibeteckning\" : \"Kategoriförkortning\").listable();\r\n Metadata.Person.add(\"Division.Name\", \"Valkrets\").listable();\r\n Metadata.Person.add(\"ConsentDate\", \"Medgivandedatum\", \"ConsentDate | ergoDate\").listable();\r\n Metadata.Person.add(\"LastLookupTimestamp\", \"Senast uppdaterad från SPAR\", \"LastLookupTimestamp | ergoDateTime\").listable();\r\n Metadata.Person.setListTitle('Lista - Personer');\r\n Metadata.Person.setSettingType(0);\r\n\r\n Metadata.Party = new Metadata();\r\n Metadata.Party.add(\"Name\", \"Namn\").listable(1);\r\n Metadata.Party.add(\"Abbreviation\", isTroman ? \"Partibeteckning\" : \"Förkortning\").listable(2);\r\n Metadata.Party.add(\"SortingCode\", \"Sorteringskod\", \"Active ? SortingCode : ''\").listable(0, 1);\r\n Metadata.Party.setSortingProperty('SortingCode');\r\n Metadata.Party.setListTitle(isTroman ? 'Lista - Partier' : 'Lista - Kategorier');\r\n Metadata.Party.setSettingType(1);\r\n\r\n Metadata.Organization = new Metadata();\r\n Metadata.Organization.add(\"Name\", \"Namn\").listable(1);\r\n Metadata.Organization.add(\"Abbreviation\", \"Förkortning\").listable();\r\n Metadata.Organization.add(\"SortingCode\", \"Sorteringskod\", \"Active ? SortingCode : ''\").listable(0, 1);\r\n Metadata.Organization.add(\"Comment\", \"Information (offentlig)\", \"PublicInformation\").listable(2);\r\n Metadata.Organization.add(\"Information\", \"Kommentar (intern)\", \"InternalComment\").listable();\r\n Metadata.Organization.add(\"Account\", \"Konto\").listable();\r\n Metadata.Organization.add(\"Email.Email\", \"E-post\").listable();\r\n Metadata.Organization.add(\"PhoneNumber.Number\", \"Telefon\", \"Phone\").listable();\r\n Metadata.Organization.add(\"MainAddress\", \"Adress\", \"MainAddress | ergoAddress\").listable();\r\n Metadata.Organization.add(\"VisitationAddress\", \"Besöksadress\", \"VisitationAddress | ergoAddress\").listable();\r\n Metadata.Organization.add(\"OrganizationType.Name\", \"Organisationstyp\").listable();\r\n Metadata.Organization.add(\"%CurrentMandate.Start\", \"Nuvarande mandatperiod - Start\", \"getCurrentMandate().Start | ergoDate\").listable();\r\n Metadata.Organization.add(\"%CurrentMandate.End\", \"Nuvarande mandatperiod - Slut\", \"getCurrentMandate().End | ergoDate\").listable();\r\n Metadata.Organization.add(\"%LastMandate.Start\", \"Sista mandatperiod - Start\", \"getLastMandate().Start | ergoDate\").listable();\r\n Metadata.Organization.add(\"%LastMandate.End\", \"Sista mandatperiod - Slut\", \"getLastMandate().End | ergoDate\").listable();\r\n Metadata.Organization.setSortingProperty('SortingCode');\r\n Metadata.Organization.setListTitle('Lista - Organisationer');\r\n Metadata.Organization.setSettingType(2);\r\n\r\n Metadata.Mission = new Metadata();\r\n Metadata.Mission.add(\"Person.name\", \"Person - Namn\", \"Person != null ? Person.name : 'Vakant'\").listable(1);\r\n Metadata.Mission.add(\"Person.FirstName\", \"Person - Förnamn\", \"Person != null ? Person.firstName : ''\").listable();\r\n Metadata.Mission.add(\"Person.LastNameOrVacant\", \"Person - Efternamn\", \"Person != null ? Person.LastName : 'Vakant'\").listable();\r\n Metadata.Mission.add(\"Person.PersonalNumber\", \"Person - Personnummer (komplett)\").listable();\r\n Metadata.Mission.add(\"Person.PersonalNumberDate\", \"Person - Personnummer (datum)\", \"Person.PersonalNumber | ergoPnDate\").listable();\r\n Metadata.Mission.add(\"Person.Comment\", \"Person - Kommentar\").listable();\r\n Metadata.Mission.add(\"Person.emailPublic.Email\", \"Person - E-post (offentlig)\").listable();\r\n Metadata.Mission.add(\"Person.emailInternal.Email\", \"Person - E-post (2)\").listable();\r\n Metadata.Mission.add(\"Person.emailPrivate.Email\", \"Person - E-post (3)\").listable();\r\n Metadata.Mission.add(\"Person.phoneWork.Number\", \"Person - Tel (arbete)\").listable();\r\n Metadata.Mission.add(\"Person.phoneMobile.Number\", \"Person - Tel (mobil)\").listable();\r\n Metadata.Mission.add(\"Person.phoneHome.Number\", \"Person - Tel (bostad)\").listable();\r\n Metadata.Mission.add(\"Person.phoneHoliday.Number\", \"Person - Tel (fritid)\").listable();\r\n Metadata.Mission.add(\"Person.homeAddress\", \"Person - Adress (bostad)\", \"Person.homeAddress | ergoAddress\").listable();\r\n Metadata.Mission.add(\"Person.distributionAddress\", \"Person - Adress (utskick)\", \"Person.distributionAddress | ergoAddress\").listable();\r\n Metadata.Mission.add(\"MandatePeriod.Organization.Name\", \"Organisation\").listable();\r\n Metadata.Mission.add(\"MandatePeriod.Start\", \"Mandatperiod - Start\", \"MandatePeriod.Start | ergoDate\").listable();\r\n Metadata.Mission.add(\"MandatePeriod.End\", \"Mandatperiod - Slut\", \"MandatePeriod.End | ergoDate\").listable();\r\n Metadata.Mission.add(\"Party.Name\", isTroman ? \"Partinamn (Uppdrag)\" : \"Kategorinamn\").listable();\r\n Metadata.Mission.add(\"Party.Abbreviation\", isTroman ? \"Partibeteckning (Uppdrag)\" : \"Kategoriförkortning (Uppdrag)\").listable();\r\n Metadata.Mission.add(\"MissionType.Name\", \"Uppdragstyp\").listable(2);\r\n Metadata.Mission.add(\"OrderNumber\", \"Ordningsnummer\").listable(0, 1);\r\n Metadata.Mission.add(\"Start\", \"Uppdrag Start\", \"Start | ergoDate\").listable();\r\n Metadata.Mission.add(\"End\", \"Uppdrag Slut\", \"End | ergoDate\").listable();\r\n Metadata.Mission.add(\"DecisionClause\", \"Beslutsparagraf\").listable();\r\n Metadata.Mission.add(\"Comment\", \"Kommentar\").listable();\r\n Metadata.Mission.add(\"EmployeeNumber\", \"Anställningsnummer\").listable();\r\n Metadata.Mission.add(\"%PersonalSubstitutes\", \"Personliga ersättare\", function formatSubstitutes(mission) {\r\n let sorted = _.sortBy(mission.Substitutes, \"name\");\r\n return _.map(sorted, x => x.name);\r\n }).listable();\r\n Metadata.Mission.add(\"%Divisions\", \"Valkretsar\", function formatDivisions(mission) {\r\n let sorted = _.sortBy(mission.Divisions, \"Name\");\r\n return _.map(sorted, x => x.Name);\r\n }).listable();\r\n Metadata.Mission.setSortingProperty('OrderNumber');\r\n Metadata.Mission.setListTitle('Lista - Uppdrag');\r\n Metadata.Mission.setSettingType(3);\r\n\r\n Metadata.MissionType = new Metadata();\r\n Metadata.MissionType.add(\"Name\", \"Namn\").listable(1, 1);\r\n Metadata.MissionType.add(\"Abbreviation\", \"Förkortning\").listable(2);\r\n Metadata.MissionType.add(\"TrustMission\", \"Förtroendeuppdrag\", \"TrustMission | ergoYesEmpty\").listable(3);\r\n Metadata.MissionType.add(\"IsSubstitute\", \"Ersättare\", \"IsSubstitute | ergoYesEmpty\").listable();\r\n Metadata.MissionType.add(\"IsGroundForGratuity\", \"Gratifikation\", \"IsGroundForGratuity | ergoYesEmpty\").listable();\r\n Metadata.MissionType.add(\"IsPresidium\", \"Presidium\", \"IsPresidium | ergoYesEmpty\").listable();\r\n Metadata.MissionType.setListTitle('Lista - Uppdragstyper');\r\n Metadata.MissionType.setSettingType(4);\r\n\r\n Metadata.Division = new Metadata();\r\n Metadata.Division.add(\"Name\", \"Namn\").listable(1);\r\n Metadata.Division.add(\"Abbreviation\", \"Förkortning\").listable(2);\r\n Metadata.Division.add(\"SortingCode\", \"Sorteringskod\", \"Active ? SortingCode : ''\").listable(0, 1);\r\n Metadata.Division.setSortingProperty('SortingCode');\r\n Metadata.Division.setListTitle('Lista - Valkretsar');\r\n Metadata.Division.setSettingType(5);\r\n\r\n Metadata.OrganizationType = new Metadata();\r\n Metadata.OrganizationType.add(\"Name\", \"Namn\").listable(1);\r\n Metadata.OrganizationType.add(\"SortingCode\", \"Sorteringskod\", \"Active ? SortingCode : ''\").listable(0, 1);\r\n Metadata.OrganizationType.add(\"Description\", \"Beskrivning\").listable(2);\r\n Metadata.OrganizationType.setSortingProperty('SortingCode');\r\n Metadata.OrganizationType.setListTitle('Lista - Organisationstyper');\r\n Metadata.OrganizationType.setSettingType(6);\r\n\r\n Metadata.Meeting = new Metadata();\r\n Metadata.Meeting.add(\"Organization.Name\", \"Organisation\").listable(1);\r\n Metadata.Meeting.add(\"Designation\", \"Mötesbenämning\").listable(2);\r\n Metadata.Meeting.add(\"Location\", \"Lokal\").listable();\r\n Metadata.Meeting.add(\"Date\", \"Datum\", \"Date | ergoDate\").listable(3, 1);\r\n Metadata.Meeting.add(\"ActiveMeetingTime\", \"Tid\", \"MeetingTime\").listable(4, 2);\r\n Metadata.Meeting.add(\"PublicInformation\", \"Information (offentlig)\").listable();\r\n Metadata.Meeting.add(\"InternalComment\", \"Kommentar (intern)\").listable();\r\n Metadata.Meeting.add(\"IsPublic\", \"Offentligt\", \"IsPublic | ergoYesEmpty\").listable();\r\n Metadata.Meeting.setListTitle('Lista - Möten');\r\n Metadata.Meeting.setSettingType(7);\r\n\r\n // This used to be Metadata.Attendance which is no longer used.\r\n // The same setting type and keys has been used to preserve backward compatibility.\r\n Metadata.AttendanceModel = new Metadata();\r\n Metadata.AttendanceModel.add(\"Person.name\", \"Namn\", \"getPerson().name\").listable(1);\r\n Metadata.AttendanceModel.add(\"Person.PersonalNumber\", \"Personnummer\", \"getPerson().PersonalNumber\").listable();\r\n Metadata.AttendanceModel.add(\"Person.PersonalNumberDate\", \"Personnummer (datum)\", \"getPerson().PersonalNumber | ergoPnDate\").listable();\r\n Metadata.AttendanceModel.add(\"PresentTimeString\", \"Närvarande\", \"presentTime\").listable(2);\r\n Metadata.AttendanceModel.add(\"PresentSubstituteTimeString\", \"Närvarande (ersättare)\", \"servingTime\").listable();\r\n Metadata.AttendanceModel.add(\"Organization.Name\", \"Organisation\", \"attendance.getOrganization().Name\").listable();\r\n Metadata.AttendanceModel.add(\"MissionType.Name\", \"Uppdragstyp\", \"attendance.getMissionType().Name\").listable();\r\n Metadata.AttendanceModel.add(\"Comment\", \"Kommentar\", \"comment\").listable(3);\r\n Metadata.AttendanceModel.add(\"$$order\", \"Närvaroordning\").listable(0, 1);\r\n Metadata.AttendanceModel.setListTitle('Närvarolista');\r\n Metadata.AttendanceModel.setSettingType(8);\r\n\r\n Metadata.Equipment = new Metadata();\r\n Metadata.Equipment.add(\"Name\", \"Namn\").listable(1, 1);\r\n Metadata.Equipment.add(\"EquipmentType.name\", \"Typ\").listable(1, 1);\r\n Metadata.Equipment.add(\"Serial\", \"Serienummer\").listable();\r\n Metadata.Equipment.add(\"LoanDate\", \"Utlånad\", \"LoanDate | ergoDate\").listable();\r\n Metadata.Equipment.add(\"ExpireDate\", \"Återlämnas\", \"ExpireDate | ergoDate\").listable();\r\n Metadata.Equipment.add(\"ReturnDate\", \"Återlämnad\", \"ReturnDate | ergoDate\").listable();\r\n Metadata.Equipment.add(\"Organization.Name\", \"Organisation\").listable();\r\n Metadata.Equipment.add(\"Comment\", \"Kommentar\").listable();\r\n Metadata.Equipment.setSettingType(9);\r\n\r\n Metadata.Award = new Metadata();\r\n Metadata.Award.add(\"AwardDate\", \"Datum\", \"AwardDate | ergoDate\").listable();\r\n Metadata.Award.add(\"Description\", \"Beskrivning\").listable(1, 1);\r\n Metadata.Award.add(\"Comment\", \"Kommentar\").listable(2, 2);\r\n Metadata.Award.setSettingType(10);\r\n\r\n Metadata.WageType = new Metadata();\r\n Metadata.WageType.add(\"Code\", \"Löneart\").listable(1, 1);\r\n Metadata.WageType.add(\"Name\", \"Namn\").listable(4);\r\n Metadata.WageType.add(\"Information\", \"Information\").listable(4);\r\n Metadata.WageType.add(\"%LastPeriod.From\", \"Från (senaste)\", \"Periods[0].From | ergoDate\").listable(2, 2);\r\n Metadata.WageType.add(\"%LastPeriod.WageModel\", \"Typ (senaste)\", \"Periods[0].WageModel | ergoEnumWageModel\").listable(3);\r\n Metadata.WageType.add(\"%LastPeriod.Account\", \"Konto (senaste)\", \"Periods[0].Account\").listable();\r\n Metadata.WageType.add(\"%LastPeriod.UnitPeriod\", \"Period (senaste)\", \"Periods[0].UnitPeriod\").listable();\r\n Metadata.WageType.add(\"%LastPeriod.SubPeriod\", \"Delningstal (senaste)\", \"Periods[0].SubPeriod\").listable();\r\n Metadata.WageType.add(\"%LastPeriod.UnitPrice\", \"à-pris (senaste)\", \"Periods[0].UnitPrice\").listable();\r\n Metadata.WageType.setSettingType(11);\r\n\r\n Metadata.WageCalculation = new Metadata();\r\n Metadata.WageCalculation.add(\"Name\", \"Namn\").listable(1, 1);\r\n Metadata.WageCalculation.setSettingType(12);\r\n\r\n Metadata.WageGroup = new Metadata();\r\n Metadata.WageGroup.add(\"Name\", \"Namn\").listable(1, 1);\r\n Metadata.WageGroup.add(\"Description\", \"Beskrivning\").listable(2);\r\n Metadata.WageGroup.setSettingType(13);\r\n\r\n return Metadata;\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { Person } from '../objects/Person';\r\n\r\nangular.module(\"tromanWeb\").factory('ObjectCache', ['$q', 'tromanServer', 'accountServer', 'isTroman', function ($q, tromanServer, accountServer, isTroman) {\r\n\r\n var so = {};\r\n\r\n function compareBy(prop) {\r\n return function compareByProp(a, b) {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return 1;\r\n if (b == null) return -1;\r\n\r\n return utility.compare(a[prop], b[prop]) || utility.compare(a.Id, b.Id);\r\n };\r\n }\r\n\r\n const compareByName = compareBy(\"Name\");\r\n const compareByCode = compareBy(\"Code\");\r\n\r\n function includeResult(data, include) {\r\n var ii, item;\r\n\r\n function isItem(x) {\r\n return x.Id === item.Id;\r\n }\r\n\r\n if (include != null) {\r\n\r\n if (!angular.isArray(include)) {\r\n include = [include];\r\n }\r\n\r\n for (ii = 0; ii < include.length; ++ii) {\r\n item = include[ii];\r\n if (item.Id != null) {\r\n var exists = data.some(isItem);\r\n if (!exists) {\r\n data.push(item);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n so.getOrganizations = function (include, criteria) {\r\n return tromanServer.Organizations.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByName);\r\n return data;\r\n });\r\n };\r\n\r\n so.allOrganizations = function () {\r\n return this.getOrganizations(null, { Archived: true });\r\n };\r\n\r\n so.getParties = function (include, criteria) {\r\n return tromanServer.Parties.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByName);\r\n return data;\r\n });\r\n };\r\n\r\n so.allParties = function () {\r\n return this.getParties(null, { Archived: true });\r\n };\r\n\r\n so.getDivisions = function (include, criteria) {\r\n return tromanServer.Divisions.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByName);\r\n return data;\r\n });\r\n };\r\n\r\n so.getMissionTypes = function (include, criteria) {\r\n return tromanServer.MissionTypes.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByName);\r\n return data;\r\n });\r\n };\r\n\r\n so.getOrganizationTypes = function (include, criteria) {\r\n return tromanServer.OrganizationTypes.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByName);\r\n return data;\r\n });\r\n };\r\n\r\n so.getPersons = function (include, criteria) {\r\n return tromanServer.Persons.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(Person.compare);\r\n return data;\r\n });\r\n };\r\n\r\n so.getWageCalculations = function (include, criteria) {\r\n return tromanServer.WageCalculations.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByName);\r\n return data;\r\n });\r\n };\r\n\r\n so.getWageGroups = function (include, criteria) {\r\n return tromanServer.WageGroups.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByName);\r\n return data;\r\n });\r\n };\r\n\r\n so.getWageTypes = function (include, criteria) {\r\n return tromanServer.WageTypes.search(criteria || {}).then(function (data) {\r\n includeResult(data, include);\r\n data.sort(compareByCode);\r\n return data;\r\n });\r\n };\r\n\r\n so.allWageTypes = function () {\r\n return this.getWageTypes(null, { Archived: true });\r\n };\r\n\r\n so.getAllUsers = function () {\r\n return accountServer.Users.getUsers();\r\n };\r\n\r\n so.getUsers = function (additionalIds) {\r\n return accountServer.Users.getUsers().then(function (data) {\r\n var users = _.filter(data, x => (isTroman ? x.HasTroman : x.HasValman) || _.includes(additionalIds, x.Id));\r\n return _.sortBy(users, ['UserName']);\r\n });\r\n };\r\n\r\n so.getSettings = function (criteria) {\r\n return $q.all({\r\n settings: tromanServer.Settings.search(criteria),\r\n users: accountServer.Users.getUsers(),\r\n }).then(function (data) {\r\n return _.transform(data.settings, (result, setting) => {\r\n if (setting.SharedByUserId == null) {\r\n result.push(setting);\r\n } else {\r\n let user = _.find(data.users, x => x.Id === setting.SharedByUserId && (isTroman ? x.HasTroman : x.HasValman));\r\n if (user != null) {\r\n setting.title += \" (\" + user.UserName + \")\";\r\n result.push(setting);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n return so;\r\n\r\n}]);","import { TromanError } from \"../../common/TromanError\";\r\n\r\nconst MINUTES_PER_DAY = 24 * 60;\r\nconst retime = /^([01]?[0-9]|2[0-4])([:.]([0-5][0-9]))?$/;\r\n\r\nfunction parseTime(value, isEnd) {\r\n var str = value.trim();\r\n var m = str.match(retime);\r\n if (!m) throw new Error('Parse failed');\r\n\r\n let time = parseInt(m[1], 10) * 60;\r\n if (m[3]) {\r\n time = time + parseInt(m[3], 10);\r\n }\r\n\r\n if (time > MINUTES_PER_DAY || (time == MINUTES_PER_DAY && !isEnd)) {\r\n throw new Error('Parse failed');\r\n }\r\n\r\n return time;\r\n}\r\n\r\nfunction formatMinutes(min) {\r\n var h = Math.trunc(min / 60);\r\n var m = min % 60;\r\n\r\n var ret = \"\";\r\n if (h < 10) ret = \"0\";\r\n ret += h.toFixed(0);\r\n ret += \":\";\r\n if (m < 10) ret += \"0\";\r\n ret += m.toFixed(0);\r\n\r\n return ret;\r\n}\r\n\r\nfunction formatInterval(iv) {\r\n let ret = formatMinutes(iv.start);\r\n if (iv.end != null) {\r\n ret += '-';\r\n if (iv.end > MINUTES_PER_DAY) {\r\n let adjusted = iv.end - MINUTES_PER_DAY;\r\n if (adjusted > iv.start) {\r\n ret += formatMinutes(iv.last);\r\n ret += ', ';\r\n ret += formatMinutes(iv.last);\r\n ret += '-';\r\n }\r\n ret += formatMinutes(adjusted);\r\n } else {\r\n ret += formatMinutes(iv.end);\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nfunction compareInterval(a, b) {\r\n if (a.start === b.start) {\r\n if (a.end == null) return b.end == null ? 0 : 1;\r\n if (b.end == null) return -1;\r\n return a.end - b.end;\r\n }\r\n return a.start - b.start;\r\n}\r\n\r\nfunction parseInterval(start, end) {\r\n let stime = parseTime(start);\r\n let etime = parseTime(end, true);\r\n\r\n if (etime < stime) {\r\n etime = etime + MINUTES_PER_DAY;\r\n }\r\n\r\n return {\r\n start: stime,\r\n end: etime,\r\n last: etime < MINUTES_PER_DAY ? etime : stime\r\n };\r\n}\r\n\r\nfunction parseIntervals(str) {\r\n let ivs = [];\r\n var source = String(str || '').trim();\r\n if (source.length > 0) {\r\n for (let sourceInterval of source.split(',')) {\r\n let parts = sourceInterval.split('-');\r\n if (parts.length == 1) {\r\n ivs.push({ start: parseTime(parts[0]) });\r\n } else if (parts.length == 2) {\r\n ivs.push(parseInterval(parts[0], parts[1]));\r\n } else {\r\n throw new TromanError('parse_timestring', 'Felaktigt formaterad tidsangivelse.');\r\n }\r\n }\r\n }\r\n return ivs;\r\n}\r\n\r\nexport class TimeString {\r\n constructor(source) {\r\n this.isClosed = true;\r\n\r\n let ivs = parseIntervals(source);\r\n ivs.sort(compareInterval);\r\n\r\n let prev = null;\r\n let acc = [];\r\n let dur = 0;\r\n for (let ii = 0; ii < ivs.length; ++ii) {\r\n const iv = ivs[ii];\r\n if (iv.end == null) {\r\n this.isClosed = false;\r\n acc.push(iv);\r\n } else {\r\n // Does iv overlap the previous entry?\r\n if (prev != null && iv.start <= prev.end) {\r\n // Update last time today\r\n if (iv.last > prev.last) {\r\n prev.last = iv.last;\r\n }\r\n\r\n // Extend the previous interval\r\n if (iv.end > prev.end) {\r\n dur = dur + (iv.end - prev.end);\r\n prev.end = iv.end;\r\n }\r\n } else {\r\n acc.push(iv);\r\n prev = iv;\r\n dur = dur + (iv.end - iv.start);\r\n }\r\n }\r\n }\r\n\r\n this.str = acc.map(formatInterval).join(', ');\r\n this.duration = dur;\r\n this.intervals = acc;\r\n }\r\n\r\n static parse(str) {\r\n try {\r\n return new TimeString(str);\r\n } catch (Err) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Checks that all intervals in other is contained in an interval of this TimeString\r\n * If either TimeString is invalid, the result is \"undefined\";\r\n * @param {TimeString} other\r\n */\r\n contains(other) {\r\n if (!(other instanceof TimeString)) return;\r\n\r\n this._closed = this._closed || this.intervals.filter(x => x.end != null);\r\n\r\n return other.intervals.every(oi => this._closed.some(ti => oi.start >= ti.start && (oi.end == null ? (oi.start <= ti.end) : (oi.end <= ti.end))));\r\n }\r\n\r\n toJSON() {\r\n return this.str;\r\n }\r\n}\r\n","export function todayDate() {\r\n var now = new Date();\r\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\r\n}\r\n\r\nexport const CalendarPosition = {\r\n Current: 0,\r\n Active: 0,\r\n Historic: 1,\r\n Future: 2,\r\n};\r\n\r\nexport function getCalendarPosition(start, end, today = todayDate()) {\r\n if (start > today) {\r\n return CalendarPosition.Future;\r\n } else if (end == null || end >= today) {\r\n return CalendarPosition.Current;\r\n } else {\r\n return CalendarPosition.Historic;\r\n }\r\n}\r\n","import { claimStates, claimTypes } from \"../objects/Claim\";\r\nimport { certificationStates, remunerationTypes } from \"../objects/Payslip\";\r\n\r\n/**\r\n * @param {number} minutes\r\n */\r\nexport function formatDurationMinutes(minutes) {\r\n if (minutes < 0) {\r\n return '-' + formatDurationMinutes(-minutes);\r\n }\r\n\r\n const hours = Math.floor(minutes / 60);\r\n const mins = Math.floor(minutes % 60);\r\n\r\n if (hours > 0 && minutes > 0) {\r\n return `${hours} tim ${mins} min`;\r\n }\r\n\r\n if (hours > 0) {\r\n return `${hours} tim`;\r\n }\r\n\r\n return `${mins} min`;\r\n}\r\n\r\n\r\n/**\r\n * @param {number} claimType\r\n */\r\nexport function getClaimTypeText(claimType) {\r\n switch (claimType) {\r\n case claimTypes.legacyTravel: return 'Reseersättning';\r\n case claimTypes.travel: return 'Km-ersättning';\r\n case claimTypes.parking: return 'Parkeringsavgift';\r\n case claimTypes.congestion: return 'Trängselskatt';\r\n case claimTypes.publicTransport: return 'Kollektivtrafik';\r\n case claimTypes.travelTime: return 'Restid';\r\n case claimTypes.expense: return 'Utlägg';\r\n case claimTypes.adjuster: return 'Justeringsarvode';\r\n case claimTypes.lostIncomeAmount:\r\n case claimTypes.lostIncomeNumber:\r\n case claimTypes.lostIncomeRate:\r\n return 'Förlorad inkomst';\r\n default:\r\n return 'Okänt';\r\n }\r\n}\r\n\r\n/**\r\n * @param {number} claimType\r\n */\r\nexport function getClaimStateText(state) {\r\n switch (state) {\r\n case claimStates.created: return 'Ej rapporterad';\r\n case claimStates.reported: return 'Rapporterad';\r\n case claimStates.rejected: return 'Avslagen';\r\n case claimStates.accepted: return 'Godkänd';\r\n default: return 'Okänd';\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * @param {number} remunerationType \r\n * @param {number?} claimType \r\n */\r\nexport function getRemunerationTitle(remunerationType, claimType) {\r\n switch (remunerationType) {\r\n case remunerationTypes.claim:\r\n return 'Troman Politiker - ' + (claimType != null ? getClaimTypeText(claimType) : 'Anspråk');\r\n case remunerationTypes.calculatedMeeting:\r\n return 'Beräknat mötesarvode';\r\n case remunerationTypes.calculatedTravel:\r\n return 'Beräknad km-ersättning';\r\n case remunerationTypes.payment:\r\n return 'Övrig ersättning';\r\n default:\r\n return 'Okänt';\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * @param {number} certificationState\r\n */\r\nexport function getCertificationState(certificationState) {\r\n switch (certificationState) {\r\n case certificationStates.skipped: return 'Attesteras inte';\r\n case certificationStates.pending: return 'Väntar på attest';\r\n case certificationStates.rejected: return 'Avslaget vid attest';\r\n case certificationStates.certified: return 'Attesterad';\r\n case certificationStates.recalled: return 'Återkallad';\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * @param {number} certificationState\r\n */\r\nexport function getCertificationStateSubtitle(certificationState) {\r\n switch (certificationState) {\r\n case certificationStates.pending: return 'väntar på attest';\r\n case certificationStates.rejected: return 'attest avslagen';\r\n case certificationStates.recalled: return 'återkallad';\r\n }\r\n}","import * as _ from 'lodash';\r\n\r\nconst regexIso8601 = /^(\\d{4}|\\+\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,}))?(Z|([-+])(\\d{2}):(\\d{2}))?)?)?)?$/;\r\n\r\nexport function parseDate(value) {\r\n\r\n if (typeof value === \"string\") {\r\n var match = value.match(regexIso8601);\r\n if (match) {\r\n var milliseconds = Date.parse(match[0]);\r\n if (!isNaN(milliseconds)) {\r\n return new Date(milliseconds);\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nconst GUID_REGEX = /^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/;\r\nexport function isGuid(x) {\r\n if (typeof (x) !== 'string')\r\n return false;\r\n return GUID_REGEX.test(x);\r\n}\r\n\r\nexport function isWs(o) {\r\n return typeof o !== 'string' || o.trim() === '';\r\n}\r\n\r\nexport function compareCalendarDate(a, b) {\r\n /// First value\r\n /// Second value\r\n var diff = a.getFullYear() - b.getFullYear();\r\n if (diff !== 0)\r\n return diff;\r\n\r\n diff = a.getMonth() - b.getMonth();\r\n if (diff !== 0)\r\n return diff;\r\n\r\n diff = a.getDate() - b.getDate();\r\n return diff;\r\n}\r\n\r\nexport function compare(a, b) {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return 1;\r\n if (b == null) return -1;\r\n if (a < b) return -1;\r\n if (b < a) return 1;\r\n return 0;\r\n}\r\n\r\nexport function addressToJson(address, type) {\r\n if (address == null)\r\n return;\r\n\r\n if (isWs(address.Address) && isWs(address.ZipCode) && isWs(address.City))\r\n return;\r\n\r\n address.Type = type != null ? type : address.Type;\r\n return address;\r\n}\r\n\r\nexport function phoneToJson(phone, type) {\r\n if (phone == null)\r\n return;\r\n\r\n if (isWs(phone.Number))\r\n return;\r\n\r\n phone.Type = type != null ? type : phone.Type;\r\n return phone;\r\n}\r\n\r\nexport function emailToJson(email, type) {\r\n if (email == null)\r\n return;\r\n\r\n if (isWs(email.Email))\r\n return;\r\n\r\n email.Type = type != null ? type : email.Type;\r\n return email;\r\n}\r\n\r\nexport function urlToJson(url, type) {\r\n if (url == null)\r\n return;\r\n\r\n if (isWs(url.Name) && isWs(url.Url))\r\n return;\r\n\r\n url.Type = type != null ? type : url.Type;\r\n return url;\r\n}\r\n\r\nexport function isNotNull(x) {\r\n return x != null;\r\n}\r\n\r\nexport function todayDate() {\r\n var now = new Date();\r\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\r\n}\r\n\r\nconst ZERO = '0';\r\nfunction padZero(val, digits) {\r\n let ret = '' + val;\r\n while (ret.length < digits) {\r\n ret = ZERO + ret;\r\n }\r\n return ret;\r\n}\r\n\r\nexport function formatDate(date) {\r\n if (!_.isDate(date))\r\n return '';\r\n\r\n let year = date.getFullYear();\r\n if (year <= 0) {\r\n year = -year + 1;\r\n }\r\n\r\n let ret = padZero(year, 4);\r\n ret = ret + '-';\r\n ret = ret + padZero(date.getMonth() + 1, 2);\r\n ret = ret + '-';\r\n ret = ret + padZero(date.getDate(), 2);\r\n return ret;\r\n}\r\n\r\nexport function isOverlapping(s1, e1, s2, e2) {\r\n return (e2 == null || s1 <= e2) && (e1 == null || s2 <= e1);\r\n}\r\n\r\n/**\r\n * \r\n * @param {string} code\r\n * @param {string[]} codelist\r\n */\r\nexport function isValidMunicipality(code, codelist) {\r\n if (code == null || code === '' || code.length != 4) return false;\r\n let region = code.substring(0, 2);\r\n return _.some(codelist, x => x == code || x == region);\r\n}\r\n","import './missionGroup.less';\r\n\r\nangular.module(\"tromanWeb\").controller('MissionGroupController', ['stateService', 'tromanServer', 'dialogService', 'missionGroupShared', function (stateService, tromanServer, dialogService, missionGroupShared) {\r\n this.missionGroup = missionGroupShared.missionGroup;\r\n\r\n\r\n this.hardRemove = function hardRemove() {\r\n if (this.missionGroup == null || this.missionGroup.Id == null) return;\r\n\r\n dialogService.confirm([\"Radera \" + this.missionGroup.Name + \" permanent.\", \"Detta kan inte ångras\", \"Är du säker?\"])\r\n .then(() => {\r\n tromanServer.MissionGroups.hardRemove(this.missionGroup.Id)\r\n .then(() => { stateService.forceGo('missiongroups'); })\r\n .catch(dialogService.error);\r\n });\r\n };\r\n\r\n}]);\r\n","angular.module(\"tromanWeb\").controller('MissionGroupDetailsController', ['stateService', 'tromanServer', 'dialogService', 'missionGroupShared', function (stateService, tromanServer, dialogService, missionGroupShared) {\r\n\r\n let isSaving = false;\r\n\r\n this.$onInit = function $onInit() {\r\n this.missionGroup = missionGroupShared.missionGroup.clone();\r\n this.isAdding = !missionGroupShared.missionGroup.Id;\r\n\r\n stateService.guard(() => this.form.$dirty);\r\n };\r\n\r\n this.canSave = function () {\r\n return !isSaving && this.form.$dirty && this.form.$valid;\r\n };\r\n\r\n this.save = function save() {\r\n if (!this.canSave()) return;\r\n\r\n this.form.$commitViewValue();\r\n this.form.$setSubmitted();\r\n\r\n if (this.form.$invalid) return;\r\n\r\n isSaving = true;\r\n if (this.isAdding) {\r\n tromanServer.MissionGroups.addEntity(this.missionGroup)\r\n .then(rsp => {\r\n stateService.forceGo('missiongroup.details', { missionGroupId: rsp.result.Id }, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => isSaving = false);\r\n } else {\r\n tromanServer.MissionGroups.updateEntity(this.missionGroup)\r\n .then(() => { stateService.forceReload('missiongroup'); })\r\n .catch(dialogService.error)\r\n .finally(() => isSaving = false);\r\n }\r\n };\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport './missionGroup.less';\r\n\r\nimport { CalendarPosition } from '../misc/calendarPosition';\r\n\r\nangular.module(\"tromanWeb\").controller('MissionGroupMissionsController', ['stateService', 'tromanServer', 'dialogService', 'missionGroupShared', function (stateService, tromanServer, dialogService, missionGroupShared) {\r\n\r\n const missionGroupId = missionGroupShared.missionGroup.Id;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n\r\n tromanServer.Missions\r\n .search({ MissionGroupId: missionGroupId })\r\n .then(data => {\r\n this.missions = data;\r\n this.error = null;\r\n })\r\n .catch(err => {\r\n this.missions = null;\r\n this.error = err;\r\n });\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.getMissionClass = function (mission) {\r\n switch (mission.calendarPosition) {\r\n case CalendarPosition.Historic: return 'mission-historic';\r\n case CalendarPosition.Active: return 'mission-active';\r\n case CalendarPosition.Future: return 'mission-future';\r\n }\r\n };\r\n\r\n this.canCreateList = function canCreateList() {\r\n return this.table != null && this.table.selectionCount > 0;\r\n };\r\n\r\n this.createList = function createList() {\r\n if (!this.canCreateList()) return;\r\n\r\n var list = this.table.selectedItems();\r\n dialogService.createMissionList(list);\r\n };\r\n\r\n this.canCreateEmails = function canCreateEmails() {\r\n return this.table != null && this.table.selectionCount > 0;\r\n };\r\n\r\n this.createEmails = function createEmails() {\r\n if (!this.canCreateEmails()) return;\r\n\r\n var list = this.table.selectedItems().map(x => x.Person);\r\n dialogService.createEmailList(list);\r\n };\r\n\r\n this.canAddToMissionGroup = function canAddToMissionGroup() {\r\n return this.table != null && this.table.selectionCount > 0;\r\n };\r\n\r\n this.addToMissionGroup = function addToMissionGroup() {\r\n if (!this.canAddToMissionGroup()) return;\r\n\r\n var list = this.table.selectedItems();\r\n dialogService.addToMissionGroup(list, missionGroupId);\r\n };\r\n\r\n this.canRemoveItems = function canRemoveItems() {\r\n return this.table != null && this.table.selectionCount > 0;\r\n };\r\n\r\n this.removeItems = function removeItems() {\r\n if (!this.canRemoveItems()) return;\r\n\r\n var list = this.table.selectedItems();\r\n dialogService.confirm(`Ta bort ${list.length} uppdrag från plocklistan.`).then(() => {\r\n tromanServer.MissionGroups.removeFromMissionGroup(missionGroupId, list)\r\n .catch(dialogService.error)\r\n .finally(() => { stateService.reload(); });\r\n });\r\n };\r\n}]);\r\n","import { MissionGroup } from '../objects/MissionGroup';\r\n\r\nangular.module(\"tromanWeb\").factory('MissionGroupState', ['$q', 'tromanServer', 'dialogService', function ($q, tromanServer, dialogService) {\r\n\r\n function load(id) {\r\n if (id) {\r\n return tromanServer.MissionGroups.get(id);\r\n } else {\r\n return $q.when(new MissionGroup());\r\n }\r\n }\r\n\r\n class MissionGroupState {\r\n constructor(missionGroup) {\r\n this.missionGroup = missionGroup;\r\n }\r\n\r\n static create(id) {\r\n return load(id)\r\n .then(x => new MissionGroupState(x))\r\n .catch(err => {\r\n dialogService.error(err);\r\n return $q.reject(err);\r\n });\r\n }\r\n }\r\n\r\n return MissionGroupState;\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"tromanWeb\").controller('MissionGroupsController', ['stateService', 'tromanServer', function (stateService, tromanServer) {\r\n\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function () {\r\n const params = stateService.getParams();\r\n this.filter = params.filter;\r\n this.search();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.search = function search() {\r\n tromanServer.MissionGroups.search({}).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { MissionGroup } from \"../objects/MissionGroup\";\r\n\r\nangular.module(\"tromanWeb\").controller('UpdateMissionGroupController', ['$scope', 'tromanServer', 'missions', 'currentMissionGroupId', function ($scope, tromanServer, missions, currentMissionGroupId) {\r\n\r\n const nonvacant = _.reject(missions, x => x.PersonId == null);\r\n\r\n let isSaving = false;\r\n this.selectedMissionGroup = null;\r\n this.newList = false;\r\n\r\n this.missionCount = nonvacant.length;\r\n this.vacantCount = missions.length - nonvacant.length;\r\n\r\n tromanServer.MissionGroups\r\n .search({})\r\n .then(data => {\r\n this.missionGroups = _.orderBy(data, x => x.Name);\r\n if (currentMissionGroupId) {\r\n this.missionGroups = _.reject(this.missionGroups, x => x.Id === currentMissionGroupId);\r\n }\r\n })\r\n .catch(x => this.error = x);\r\n\r\n this.canSave = function () {\r\n if (isSaving) return false;\r\n if (this.form.$invalid) return false;\r\n if (nonvacant.length === 0) return false;\r\n\r\n if (this.newList) {\r\n return this.newListName != null && this.newListName.length > 0;\r\n } else {\r\n return this.selectedMissionGroup != null;\r\n }\r\n };\r\n\r\n this.save = function () {\r\n if (!this.canSave()) return;\r\n\r\n if (this.newList) {\r\n tromanServer.MissionGroups\r\n .addEntity(new MissionGroup({ Name: this.newListName }))\r\n .then(rsp => tromanServer.MissionGroups.addToMissionGroup(rsp.result.Id, nonvacant))\r\n .then(() => { $scope.$close(true); })\r\n .catch(err => { this.error = err; });\r\n\r\n } else {\r\n tromanServer.MissionGroups\r\n .addToMissionGroup(this.selectedMissionGroup, nonvacant)\r\n .then(() => { $scope.$close(true); })\r\n .catch(err => { this.error = err; });\r\n }\r\n };\r\n\r\n this.cancel = function () {\r\n $scope.$dismiss(\"cancelled\");\r\n };\r\n}]);\r\n","angular.module(\"tromanWeb\").controller('MissionTypeEditController', ['DialogControllerBase', '$scope', 'tromanServer', 'missionType', function (DialogControllerBase, $scope, tromanServer, missionType) {\r\n var self = this;\r\n DialogControllerBase.call(self, tromanServer.MissionTypes, $scope);\r\n\r\n self.getTitle = function () { return 'uppdragstypen \"' + self.missionType.Name + '\"'; };\r\n self.getItem = function () { return self.missionType; };\r\n\r\n self.loadItem(missionType).then(function (data) {\r\n self.missionType = data;\r\n });\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { MissionType } from '../objects/MissionType';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('MissionTypesController', ['stateService', 'tromanServer', 'dialogService', function (stateService, tromanServer, dialogService) {\r\n\r\n this.loading = true;\r\n this.showAdvancedSearch = false;\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refresh();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refresh();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this._refresh = function _refresh() {\r\n this.loading = true;\r\n tromanServer.MissionTypes.search(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createMissionTypeList(list);\r\n };\r\n\r\n this.add = function add() {\r\n dialogService.editMissionType(new MissionType()).then(() => this._refresh());\r\n };\r\n\r\n this.edit = function edit(item) {\r\n dialogService.editMissionType(item).then(() => this._refresh());\r\n };\r\n\r\n}]);\r\n","import './missionEdit.less';\r\nimport * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { CalendarPosition, getCalendarPosition } from '../misc/calendarPosition';\r\n\r\nangular.module(\"tromanWeb\").controller('MissionEditController', ['$q', 'DialogControllerBase', '$scope', 'tromanServer', 'ObjectCache', 'organizationService', 'tromanGlobals', 'mission', 'existingMissionsToCheck', function ($q, DialogControllerBase, $scope, tromanServer, ObjectCache, organizationService, tromanGlobals, mission, existingMissionsToCheck) {\r\n\r\n DialogControllerBase.call(this, tromanServer.Missions, $scope);\r\n\r\n this.isPolitikerEnabled = tromanGlobals.systemInfo.IsPolitikerEnabled;\r\n\r\n this.getItem = function () { return this.mission; };\r\n this.getTitle = function () {\r\n if (this.mission == null) return '';\r\n\r\n var p = this.mission.Person;\r\n var o = this.mission.MandatePeriod && this.mission.MandatePeriod.Organization;\r\n if (o == null) return '';\r\n\r\n return 'uppdraget för \"' + (p ? p.name : 'Vakant') + '\" i \"' + o.Name + '\"';\r\n };\r\n\r\n this.personChanged = function () {\r\n setFieldsFromPerson(this.mission);\r\n this.matchingMission = findMatchingMission(this.mission, this.existingMissions);\r\n };\r\n\r\n this.organizationChanged = function () {\r\n this.mission.MandatePeriod = organizationService.selectDisplayMandate(this.selectedOrganization);\r\n this.mandatePeriodChanged();\r\n };\r\n\r\n this.mandatePeriodChanged = function () {\r\n setDatesFromMandate(this.mission);\r\n mandatePeriodOrMissionTypeChanged(this.mission);\r\n\r\n if (mission.Id == null) {\r\n if (mission.MandatePeriod) {\r\n mission.AllowPolitikerRegistration = mission.MandatePeriod.Organization.AllowPolitikerRegistration;\r\n mission.EnableMunicipalityCheck = !_.isEmpty(mission.MandatePeriod.Organization.ValidMunicipalities);\r\n }\r\n }\r\n\r\n this.mission.Substitutes = [];\r\n this._reloadSubstitutes();\r\n this.matchingMission = findMatchingMission(this.mission, this.existingMissions);\r\n };\r\n\r\n this.missionTypeChanged = function () {\r\n mandatePeriodOrMissionTypeChanged(this.mission);\r\n\r\n if (!(this.mission.MissionType && !this.mission.MissionType.IsSubstitute)) {\r\n this.mission.Substitutes = [];\r\n }\r\n this._reloadSubstitutes();\r\n };\r\n\r\n this.isValidMunicipality = function () {\r\n if (!this.mission) return true;\r\n if (!this.mission.EnableMunicipalityCheck) return true;\r\n if (!this.mission.Person) return true;\r\n if (!this.mission.MandatePeriod) return true;\r\n\r\n return utility.isValidMunicipality(this.mission.Person.MunicipalityCode, this.mission.MandatePeriod.Organization.ValidMunicipalities);\r\n };\r\n\r\n function mandatePeriodOrMissionTypeChanged(mission) {\r\n if (mission.Id == null) {\r\n if (mission.MandatePeriod && mission.MissionType) {\r\n mission.IsGroundForGratuity = mission.MandatePeriod.IsGroundForGratuity && mission.MissionType.IsGroundForGratuity;\r\n }\r\n }\r\n }\r\n\r\n function setFieldsFromPerson(mission) {\r\n if (mission.Person) {\r\n mission.Party = mission.Person.Party;\r\n mission.HasMeetingPay = !!mission.Person.HasMeetingPay;\r\n } else {\r\n mission.Party = null;\r\n mission.HasMeetingPay = false;\r\n }\r\n }\r\n\r\n function setDatesFromMandate(mission) {\r\n if (mission.MandatePeriod) {\r\n if (getCalendarPosition(mission.MandatePeriod.Start, mission.MandatePeriod.End) === CalendarPosition.Future) {\r\n mission.Start = angular.copy(mission.MandatePeriod.Start);\r\n }\r\n mission.End = angular.copy(mission.MandatePeriod.End);\r\n }\r\n }\r\n\r\n function findMatchingMission(mission, existing) {\r\n if (mission == null) return null;\r\n if (existing == null) return null;\r\n if (mission.Person == null) return null;\r\n if (mission.MandatePeriod == null) return null;\r\n\r\n var matching = _.filter(existing, x => x.PersonId == mission.Person.Id && x.MandatePeriodId == mission.MandatePeriod.Id);\r\n if (matching.length == 0) {\r\n return null;\r\n }\r\n\r\n return _.orderBy(matching, [x => x.End?.getTime() ?? Number.MAX_SAFE_INTEGER, x => x.Start.getTime()], ['desc', 'desc'])[0];\r\n }\r\n\r\n this._reloadSubstitutes = function () {\r\n this.substitutes = [];\r\n loadSubstitutes(this.mission)\r\n .then(subs => {\r\n this.substitutes = subs;\r\n })\r\n .catch(err => this.showError(err));\r\n };\r\n\r\n function loadSubstitutes(mission) {\r\n if (!mission)\r\n return $q.when(null);\r\n if (!mission.MandatePeriod)\r\n return $q.when(null);\r\n if (!mission.MandatePeriod.Id)\r\n return $q.when(null);\r\n if (!mission.MandatePeriod.HasPersonalSubstitutes)\r\n return $q.when(null);\r\n if (!mission.MissionType)\r\n return $q.when(null);\r\n if (mission.MissionType.IsSubstitute)\r\n return $q.when(null);\r\n\r\n return ObjectCache.getPersons(mission.Substitutes, { IsSubstituteInMandatePeriodId: mission.MandatePeriod.Id });\r\n }\r\n\r\n function loadRelated(mission) {\r\n var state = {};\r\n\r\n state.mission = mission;\r\n state.enableMandatePeriod = mission.Id == null && mission.MandatePeriod == null;\r\n state.enablePerson = mission.Person == null;\r\n\r\n if (mission.Id == null) {\r\n setDatesFromMandate(mission);\r\n setFieldsFromPerson(mission);\r\n // All new missions are published by default\r\n mission.EnablePublish = true;\r\n }\r\n\r\n if (existingMissionsToCheck != null) {\r\n if (state.enableMandatePeriod || state.enablePerson) {\r\n state.existingMissions = existingMissionsToCheck;\r\n }\r\n } else if (state.enableMandatePeriod && mission.Person?.Id != null) {\r\n state.existingMissions = tromanServer.Missions.search({\r\n PersonId: mission.Person.Id\r\n });\r\n } else if (state.enablePerson && mission.MandatePeriod?.Id != null) {\r\n // This path is currently never taken\r\n state.existingMissions = tromanServer.Missions.search({\r\n MandatePeriodId: mission.MandatePeriod.Id,\r\n });\r\n }\r\n\r\n state.parties = ObjectCache.getParties(mission.Party);\r\n state.divisions = ObjectCache.getDivisions(mission.Divisions);\r\n state.missionTypes = ObjectCache.getMissionTypes(mission.MissionType);\r\n state.substitutes = loadSubstitutes(mission);\r\n\r\n if (state.enableMandatePeriod) {\r\n state.organizations = ObjectCache.getOrganizations();\r\n }\r\n\r\n if (state.enablePerson) {\r\n state.persons = ObjectCache.getPersons();\r\n }\r\n\r\n return $q.all(state);\r\n }\r\n\r\n this.$onInit = function () {\r\n this.loadItem(mission)\r\n .then(loadRelated)\r\n .then(state => {\r\n _.extend(this, state);\r\n this.selectedOrganization = this.mission.MandatePeriod && this.mission.MandatePeriod.Organization;\r\n })\r\n .catch(err => this.showError(err));\r\n };\r\n\r\n}]);\r\n","import './missionList.less';\r\nimport * as _ from 'lodash';\r\nimport { EntityCollection } from '../misc/EntityCollection';\r\nimport { MissionStatus } from '../objects/Mission';\r\nimport { NoPartyOption } from '../objects/Party';\r\n\r\nfunction createCriteria(paramsCriteria) {\r\n\r\n let criteria = {\r\n MissionStatus: MissionStatus.ActiveOrFuture,\r\n OnlyCurrentMandatePeriod: true,\r\n };\r\n\r\n _.extend(criteria, _.cloneDeep(paramsCriteria));\r\n\r\n return criteria;\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('MissionListController', ['$q', 'stateService', 'tromanServer', 'ObjectCache', 'dialogService', function ($q, stateService, tromanServer, ObjectCache, dialogService) {\r\n\r\n function searchWithCriteria(criteria) {\r\n var sc = _.cloneDeep(criteria);\r\n\r\n let noPartyIndex = _.indexOf(sc.PartyIds, NoPartyOption.Id);\r\n if (noPartyIndex >= 0) {\r\n sc.PartyIds.splice(noPartyIndex, 1);\r\n sc.WithoutParty = true;\r\n }\r\n\r\n return tromanServer.Missions.search(sc);\r\n }\r\n\r\n this.loading = true;\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.criteria = createCriteria(params.criteria);\r\n this.filter = params.filter;\r\n\r\n this._loadItems($q.all({\r\n organizations: ObjectCache.allOrganizations(),\r\n parties: ObjectCache.allParties(),\r\n organizationTypes: ObjectCache.getOrganizationTypes(),\r\n missionTypes: ObjectCache.getMissionTypes(),\r\n missions: params.criteria && searchWithCriteria(this.criteria),\r\n }).then(data => {\r\n this.organizations = new EntityCollection(data.organizations);\r\n this.parties = new EntityCollection([NoPartyOption].concat(data.parties));\r\n this.organizationTypes = data.organizationTypes;\r\n this.missionTypes = data.missionTypes;\r\n return data.missions;\r\n }));\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._loadItems(searchWithCriteria(this.criteria));\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this._loadItems = function (missionPromise) {\r\n this.loading = true;\r\n\r\n missionPromise.then(data => {\r\n this.error = null;\r\n // The desired sorting order is OrganizationName then Start\r\n // The organization name sorting needs to be done by smart-table so that the UI reflects the current sort column.\r\n // Just sort by start here.\r\n this.items = _.orderBy(data, x => x.Start);\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.resetCriteria = function resetCriteria() {\r\n this.criteria = createCriteria(null);\r\n };\r\n\r\n this.canSearch = function canSearch() {\r\n return this.searchForm.$valid && !this.loading;\r\n };\r\n\r\n this.search = function search() {\r\n if (this.searchForm) {\r\n this.searchForm.$commitViewValue();\r\n }\r\n if (!this.canSearch()) return false;\r\n\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createMissionList(list);\r\n };\r\n\r\n this.emailList = function emailList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems()\r\n .map(x => x.Person)\r\n .filter(x => x != null);\r\n dialogService.createEmailList(list);\r\n };\r\n\r\n this.addToMissionGroup = function () {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.addToMissionGroup(list);\r\n };\r\n\r\n this.edit = function (mission) {\r\n dialogService.editMission(mission).then(() => this.search());\r\n };\r\n\r\n this.selectedOrganizationsChanged = function selectedOrganizationsChanged() {\r\n if (this.organizations.some(this.criteria.OrganizationIds, x => !x.Active)) {\r\n this.criteria.OnlyCurrentMandatePeriod = false;\r\n this.criteria.MissionStatus = null;\r\n }\r\n };\r\n\r\n this.selectedPartiesChanged = function selectedOrganizationsChanged() {\r\n if (this.parties.some(this.criteria.PartyIds, x => !x.Active)) {\r\n this.criteria.OnlyCurrentMandatePeriod = false;\r\n this.criteria.MissionStatus = null;\r\n }\r\n };\r\n}]);\r\n","import './missionupdate.less';\r\nimport * as _ from 'lodash';\r\nimport * as ApiWarnings from '../server/ApiWarnings';\r\n\r\nangular.module(\"tromanWeb\").controller('MissionUpdateController', ['$q', '$scope', 'tromanServer', 'ObjectCache', 'dialogService', 'missions', 'organization', 'person', function ($q, $scope, tromanServer, ObjectCache, dialogService, missions, organization, person) {\r\n\r\n var isSaving = false;\r\n\r\n this.pluralSuffix = missions.length === 1 ? 'et' : 'en';\r\n\r\n this.setStart = false;\r\n this.start = null;\r\n this.setEnd = false;\r\n this.end = null;\r\n this.copyop = 'none';\r\n this.vacantSamePeriod = false;\r\n this.mandate = null;\r\n this.valid = true;\r\n\r\n this.missions = missions;\r\n this.mandates = null;\r\n\r\n this.hasSameMissionType = _.uniqBy(missions, x => x.MissionTypeId).length <= 1;\r\n\r\n ObjectCache.getMissionTypes().then(x => this.missionTypes = x);\r\n\r\n if (organization != null) {\r\n this.organization = organization;\r\n \r\n if (angular.isArray(organization.MandatePeriods)) {\r\n var mpid = missions[0].MandatePeriodId;\r\n this._sameMandate = _.find(organization.MandatePeriods, x => x.Id === mpid);\r\n this.mandate = this._sameMandate;\r\n\r\n this.mandates = organization.MandatePeriods;\r\n }\r\n\r\n } else if (person != null) {\r\n this.person = person;\r\n }\r\n\r\n this.mandateTitle = function mandateTitle(mp) {\r\n if (mp === this._sameMandate) {\r\n return mp.display + \" (Samma period)\";\r\n } else {\r\n return mp.display;\r\n }\r\n };\r\n\r\n this.willSetEnd = function () {\r\n return this.setEnd && this.end != null;\r\n };\r\n\r\n this._makeRequest = function _makeRequest() {\r\n var req = {\r\n CopyOperation: 0,\r\n Missions: this.missions.map(x => ({\r\n Id: x.Id,\r\n RowVersion: x.RowVersion\r\n })),\r\n CopyMissionTypeId: null,\r\n CopyMandatePeriodId: null,\r\n };\r\n\r\n if (this.setStart) {\r\n req.Start = this.start;\r\n }\r\n\r\n if (this.setEnd) {\r\n req.End = this.end;\r\n }\r\n\r\n if (this.copyop === 'vacant') {\r\n req.CopyOperation = 1;\r\n } else if (this.copyop === 'keep') {\r\n req.CopyOperation = 2;\r\n }\r\n\r\n if (this.missionTypeId) {\r\n req.CopyMissionTypeId = this.missionTypeId;\r\n }\r\n\r\n if (this.mandate != null) {\r\n req.CopyMandatePeriodId = this.mandate.Id;\r\n }\r\n\r\n return req;\r\n };\r\n\r\n this.canSave = function canSave() {\r\n return !isSaving;\r\n };\r\n\r\n this.save = function save() {\r\n\r\n if (!this.canSave()) return;\r\n\r\n this.editForm.$commitViewValue();\r\n this.editForm.$setSubmitted();\r\n\r\n if (this.editForm.$invalid) return;\r\n\r\n var req = this._makeRequest();\r\n\r\n isSaving = true;\r\n tromanServer.Missions.updateMultiple(req)\r\n .then(rsp => this.checkResponse(rsp))\r\n .then(() => {\r\n $scope.$close(true);\r\n })\r\n .catch(error => {\r\n this.error = error;\r\n })\r\n .finally(() => {\r\n isSaving = false;\r\n });\r\n };\r\n\r\n\r\n this.checkResponse = function checkResponse(rsp) {\r\n let ret = $q.when(rsp);\r\n\r\n if (_.has(rsp.warnings, ApiWarnings.PersonHasMultipleMissions)) {\r\n let personsWithMultiple = _.chain(rsp.warnings[ApiWarnings.PersonHasMultipleMissions])\r\n .castArray()\r\n .map(personId => _.find(this.missions, x => x.PersonId === personId)?.Person)\r\n .reject(_.isNil)\r\n .sortBy(['firstName', 'LastName'])\r\n .map(x => x.name)\r\n .value();\r\n\r\n let multipleMissionWarning = [\r\n 'Följande personer har överlappande uppdrag.',\r\n personsWithMultiple.join('\\n'),\r\n ];\r\n\r\n ret = ret.finally(() => dialogService.warning(multipleMissionWarning));\r\n }\r\n\r\n if (_.has(rsp.warnings, ApiWarnings.MissionInGroup)) {\r\n let missionsInGroup = _.chain(rsp.warnings[ApiWarnings.MissionInGroup])\r\n .castArray()\r\n .map(missionId => _.find(this.missions, x => x.Id === missionId))\r\n .reject(_.isNil)\r\n .sortBy(['Person.firstName', 'Person.LastName'])\r\n .map(x => `${x.Person?.name}, ${x.MissionType.Abbreviation}, ${x.MandatePeriod.Organization.Name}`)\r\n .value();\r\n\r\n let missionsInGroupWarning = [\r\n 'Följande uppdrag finns i plocklista.',\r\n missionsInGroup.join('\\n'),\r\n ];\r\n\r\n ret = ret.finally(() => dialogService.warning(missionsInGroupWarning));\r\n }\r\n\r\n return ret;\r\n };\r\n\r\n this.cancel = function cancel() {\r\n if (this.editForm.$dirty) {\r\n dialogService.confirm([\"Det finns osparade ändringar som kommer gå förlorade.\", \"Är du säker?\"]).then(() => {\r\n $scope.$dismiss(\"cancelled\");\r\n });\r\n } else {\r\n $scope.$dismiss(\"cancelled\");\r\n }\r\n };\r\n\r\n}]);\r\n","import './navbar.less';\r\n\r\nangular.module('tromanWeb').controller('NavbarController', ['authenticationService', 'systemInfo', 'userProfile', function navController(authenticationService, systemInfo, userProfile) {\r\n\r\n var self = this;\r\n\r\n self.user = userProfile;\r\n\r\n self.isPolitikerEnabled = systemInfo.IsPolitikerEnabled;\r\n\r\n self.logout = function logout() {\r\n authenticationService.logout();\r\n location.href = \"../\";\r\n };\r\n\r\n}]);\r\n","import * as utility from '../misc/utility';\r\n\r\n/**\r\n * @typedef {string} Base64Data\r\n * @typedef {string} Guid\r\n * \r\n * @typedef NewAttachment\r\n * @type {object}\r\n * @property {number} AttachmentType\r\n * @property {string} Description\r\n * @property {boolean} ShowPolitiker\r\n * @property {boolean} ShowPublik\r\n * @property {string} Filename\r\n * @property {Base64Data} Data\r\n * \r\n * @typedef ChangedAttachment\r\n * @type {object}\r\n * @property {Guid} Id\r\n * @property {string} Description\r\n * @property {boolean} ShowPolitiker\r\n * @property {boolean} ShowPublik\r\n * \r\n * @typedef CopiedAttachment\r\n * @type {object}\r\n * @property {Guid} SourceId\r\n * @property {number} AttachmentType\r\n * @property {string} Description\r\n * @property {boolean} ShowPolitiker\r\n * @property {boolean} ShowPublik\r\n * \r\n * @typedef AttachmentCmd\r\n * @type {object}\r\n * @property {NewAttachment[]} Added\r\n * @property {ChangedAttachment[]} Updated\r\n * @property {CopiedAttachment[]} Copied\r\n * @property {Guid[]} Removed\r\n */\r\n\r\nexport const attachmentTypes = Object.freeze({\r\n unspecified: 0,\r\n claimGenericReceipt: 1,\r\n claimParkingReceipt: 2,\r\n claimPublicTransportReceipt: 3,\r\n claimCongestionSpecification: 4,\r\n claimSalarySpecification: 5,\r\n claimEmployerTestimony: 6,\r\n profilePhoto: 7,\r\n});\r\n\r\nexport function getAttachmentTypeName(attachmentType) {\r\n switch (attachmentType) {\r\n case 0: return 'Bilaga';\r\n case 1: return 'Kvitto';\r\n case 2: return 'Kvitto - Parkering';\r\n case 3: return 'Kvitto - Kollektivtrafik';\r\n case 4: return 'Kvitto - Trängselskatt';\r\n case 5: return 'Lönespecifikation';\r\n case 6: return 'Arbetsgivarintyg';\r\n default: return 'Bilaga';\r\n }\r\n}\r\n\r\nexport class AttachmentInfo {\r\n constructor(src) {\r\n /** @type {Guid} */\r\n this.Id = src.Id;\r\n /** @type {number} */\r\n this.AttachmentType = src.AttachmentType;\r\n /** @type {string} */\r\n this.Filename = src.Filename;\r\n /** @type {string} */\r\n this.Description = src.Description;\r\n /** @type {boolean} */\r\n this.ShowPolitiker = src.ShowPolitiker;\r\n /** @type {boolean} */\r\n this.ShowPublik = src.ShowPublik;\r\n this.CreatedTimestamp = utility.parseDate(src.CreatedTimestamp);\r\n }\r\n}","import * as _ from 'lodash';\r\nimport { TromanError } from '../../common/TromanError';\r\nimport { AuditData } from './Audit';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n * @typedef { import('../objects/Meeting').Meeting } Meeting\r\n */\r\n\r\nexport const timeReportState = Object.freeze({\r\n none: 0,\r\n requested: 1,\r\n reported: 2,\r\n rejected: 3,\r\n accepted: 4,\r\n recalled: 5,\r\n});\r\n\r\nexport const timeReportCommand = Object.freeze({\r\n none: 0,\r\n add: 1,\r\n accept: 2,\r\n reject: 3,\r\n});\r\n\r\nexport class Attendance {\r\n constructor(obj) {\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n if (this.TimeReport) {\r\n this.TimeReport.AuditEntries = _.map(this.TimeReport.AuditEntries, x => new AuditData(x));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Meeting = ctx.getMeeting(this.MeetingId);\r\n\r\n if (this.MissionId != null) {\r\n this.Mission = ctx.getMission(this.MissionId);\r\n } else {\r\n this.Person = ctx.getPerson(this.PersonId);\r\n this.Organization = ctx.getOrganization(this.OrganizationId);\r\n this.MissionType = ctx.getMissionType(this.MissionTypeId);\r\n }\r\n\r\n if (this.TimeReport) {\r\n _.forEach(this.TimeReport.AuditEntries, x => x.resolve(ctx));\r\n }\r\n\r\n this._updateDisplay();\r\n }\r\n\r\n _updateDisplay() {\r\n if (this.MissionId != null) {\r\n this.displayPerson = this.Mission.Person.name;\r\n if (this.Mission.Party != null) {\r\n this.displayPerson = this.displayPerson + ' (' + this.Mission.Party.Abbreviation + ')';\r\n }\r\n if (this.Mission.MandatePeriod.OrganizationId === this.Meeting.OrganizationId) {\r\n this.displayMissionType = this.Mission.MissionType.Name;\r\n } else {\r\n this.displayMissionType = `(${this.Mission.MissionType.Abbreviation}) ${this.Mission.MandatePeriod.Organization.Name}`;\r\n }\r\n } else {\r\n this.displayPerson = this.Person.display;\r\n if (this.MissionType != null) {\r\n if (this.Organization != null) {\r\n this.displayMissionType = `(${this.MissionType.Abbreviation}) ${this.Organization.Name}`;\r\n } else {\r\n this.displayMissionType = this.MissionType.Name;\r\n }\r\n } else {\r\n if (this.Organization != null) {\r\n this.displayMissionType = '(?) ' + this.Organization.Name;\r\n } else {\r\n this.displayMissionType = '';\r\n }\r\n }\r\n }\r\n }\r\n\r\n isLegacy() {\r\n return this.MissionId == null;\r\n }\r\n\r\n getPersonId() {\r\n if (this.MissionId != null) {\r\n return this.Mission.PersonId;\r\n } else {\r\n return this.PersonId;\r\n }\r\n }\r\n\r\n getPerson() {\r\n if (this.MissionId != null) {\r\n return this.Mission.Person;\r\n } else {\r\n return this.Person;\r\n }\r\n }\r\n\r\n getOrganization() {\r\n if (this.MissionId != null) {\r\n return this.Mission.MandatePeriod.Organization;\r\n } else {\r\n return this.Organization;\r\n }\r\n }\r\n\r\n getMissionType() {\r\n if (this.MissionId != null) {\r\n return this.Mission.MissionType;\r\n } else {\r\n return this.MissionType;\r\n }\r\n }\r\n\r\n canServeAsSubstitute() {\r\n let mt = this.getMissionType();\r\n return mt != null && mt.IsSubstitute;\r\n }\r\n\r\n /**\r\n * Creates a new attendance that is a copy of this, but uses the specified\r\n * mission instead of legacy person/organization/missiontype.\r\n * @param {any} mission\r\n */\r\n specifyMission(mission) {\r\n if (!this.isLegacy()) throw new TromanError('specifymission_nolegacy');\r\n if (mission.PersonId != this.PersonId) throw new TromanError('specifymission_wrongperson');\r\n \r\n var src = _.clone(this);\r\n src.Meeting = null;\r\n src.Mission = null;\r\n src.Person = null;\r\n src.PersonId = null;\r\n src.Organization = null;\r\n src.OrganizationId = null;\r\n src.MissionType = null;\r\n src.MissionTypeId = null;\r\n \r\n var result = _.cloneDeep(src);\r\n result.Meeting = this.Meeting;\r\n result.Mission = mission;\r\n result.MissionId = mission.Id;\r\n result._updateDisplay();\r\n\r\n return result;\r\n }\r\n\r\n static createNew(meeting, mission) {\r\n const att = new Attendance();\r\n\r\n att.Meeting = meeting;\r\n att.MeetingId = meeting.Id;\r\n att.Mission = mission;\r\n att.MissionId = mission.Id;\r\n\r\n att.PresentTime = null;\r\n att.ServingTime = null;\r\n\r\n att._updateDisplay();\r\n\r\n return att;\r\n }\r\n}\r\n\r\n\r\nexport class AttendanceList {\r\n\r\n /**\r\n * @param {Meeting} meeting\r\n * @param {Attendance[]} attendances\r\n */\r\n constructor(meeting, attendances) {\r\n this.Meeting = meeting;\r\n this.Attendances = attendances;\r\n }\r\n\r\n static fromResponse(rsp) {\r\n let result = rsp.getResult();\r\n let context = rsp.context;\r\n let meeting = context.getMeeting(result.MeetingId);\r\n let attendances = result.Attendances.map(x => context.getAttendance(x));\r\n return new AttendanceList(meeting, attendances);\r\n }\r\n}\r\n\r\nfunction getOrder(att) {\r\n if (att.Mission && att.Mission.MandatePeriod.OrganizationId === att.Meeting.OrganizationId) {\r\n return att.Mission.OrderNumber;\r\n } else {\r\n return Number.MAX_SAFE_INTEGER;\r\n }\r\n}\r\n\r\nfunction getOrganization(att) {\r\n const org = att.getOrganization();\r\n return org ? org.Name : undefined;\r\n}\r\n\r\nexport function getAttendanceOrdering(getAttendance) {\r\n if (getAttendance) {\r\n return [x => getOrder(getAttendance(x)), x => getOrganization(getAttendance(x))];\r\n } else {\r\n return [getOrder, getOrganization];\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from \"../misc/utility\";\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport const auditIncidents = Object.freeze({\r\n undefined: 0,\r\n\r\n detachedEvent: 100, // Detach attendance without ceremony\r\n detachedMission: 101, // Can be for both ceremony and \"ghost\" ceremony\r\n\r\n ceremonyReported: 200,\r\n ceremonyRejected: 201,\r\n ceremonyAccepted: 202,\r\n ceremonyReset: 203, // Ceremony reset because attendance removed.\r\n\r\n timeRequested: 300,\r\n timeReported: 301,\r\n timeRejected: 302,\r\n timeAccepted: 303,\r\n timeRecalled: 304,\r\n timeRemoved: 305,\r\n\r\n claimReported: 400,\r\n claimRejected: 401,\r\n claimAccepted: 402,\r\n claimReset: 403,\r\n claimRecalled: 404,\r\n \r\n certificationRequested: 500,\r\n certificationRecalled: 501,\r\n certificationRejected: 502,\r\n certificationAccepted: 503,\r\n certificationClaimRejected: 504,\r\n});\r\n\r\nexport class AuditData {\r\n constructor(src) {\r\n this.Incident = src.Incident;\r\n this.Timestamp = utility.parseDate(src.Timestamp);\r\n this.Message = src.Message;\r\n this.UserId = src.UserId;\r\n this.PersonId = src.PersonId;\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Person = ctx.getPerson(this.PersonId);\r\n }\r\n\r\n /**\r\n * @param {any} src\r\n * @param {ResponseContext} ctx\r\n */\r\n static create(src, ctx) {\r\n const result = new AuditData(src);\r\n result.resolve(ctx);\r\n return result;\r\n }\r\n}","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport class Award extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.AwardDate = utility.parseDate(this.AwardDate);\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Person = ctx.getPerson(this.PersonId);\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n ret.PersonId = BaseObject.withRelated(ret, \"Person\");\r\n return ret;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport class BaseObject {\r\n /**\r\n * @param {ResponseContext} _ctx\r\n * @param {any} _src\r\n */\r\n resolve(_ctx, _src) {\r\n }\r\n\r\n toJSON() {\r\n var ret = {};\r\n\r\n for (let key of _.keysIn(this)) {\r\n if (typeof key === 'string' && key.length > 0) {\r\n var firstChar = key.charAt(0);\r\n if (firstChar.toLowerCase() !== firstChar) {\r\n ret[key] = this[key];\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n static withRelated(obj, name) {\r\n var ret = obj[name];\r\n if (ret == null)\r\n return undefined;\r\n delete obj[name];\r\n if (_.isArray(ret))\r\n return ret.map(function (x) { return x && x.Id; }).filter(utility.isGuid);\r\n if (utility.isGuid(ret.Id))\r\n return ret.Id;\r\n return undefined;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { TimeString } from '../misc/TimeString';\r\nimport * as utility from '../misc/utility';\r\nimport { AuditData } from './Audit';\r\nimport { AttachmentInfo } from './Attachment';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n*/\r\n\r\nexport const ceremonyStates = Object.freeze({\r\n none: 0,\r\n created: 1,\r\n reported: 2,\r\n rejected: 3,\r\n accepted: 4,\r\n});\r\n\r\nexport class CeremonyInfo {\r\n /**\r\n * @param {any} src\r\n * @param {ResponseContext} ctx\r\n */\r\n constructor(src, ctx) {\r\n this.EventId = src.EventId;\r\n this.MissionId = src.MissionId;\r\n this.Designation = src.Designation;\r\n this.Location = src.Location;\r\n this.State = src.State;\r\n this.StateTimestamp = utility.parseDate(src.StateTimestamp);\r\n this.CeremonyDate = utility.parseDate(src.CeremonyDate);\r\n let ts = TimeString.parse(src.CeremonyTime);\r\n this.CeremonyTime = ts != null ? ts.str : src.CeremonyTime;\r\n \r\n this.Mission = ctx.getMission(this.MissionId);\r\n }\r\n\r\n /**\r\n * @param {any} src\r\n * @param {ResponseContext} ctx\r\n */\r\n static mapResponse(src, ctx) {\r\n return new CeremonyInfo(src, ctx);\r\n }\r\n}\r\n\r\nexport class CeremonyDetails extends CeremonyInfo {\r\n /**\r\n * @param {any} src\r\n * @param {ResponseContext} ctx\r\n */\r\n constructor(src, ctx) {\r\n super(src, ctx);\r\n this.Attachments = _.map(src.Attachments, x => new AttachmentInfo(x));\r\n this.ClaimIds = src.ClaimIds;\r\n this.AuditEntries = _.map(src.AuditEntries, x => AuditData.create(x, ctx));\r\n this.Claims = _.map(src.ClaimIds, x => ctx.getClaim(x));\r\n }\r\n\r\n /**\r\n * @param {any} src\r\n * @param {ResponseContext} ctx\r\n */\r\n static mapResponse(src, ctx) {\r\n return new CeremonyDetails(src, ctx);\r\n }\r\n}","import * as _ from 'lodash';\r\nimport * as utility from \"../misc/utility\";\r\nimport { BaseObject } from \"./BaseObject\";\r\nimport { AuditData } from './Audit';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\n/**\r\n * @typedef {Object} AdjusterNugget\r\n * @property {number} ClaimType\r\n * \r\n * @typedef {Object} CongestionNugget\r\n * @property {number} ClaimType\r\n * @property {number} Congestion\r\n * \r\n * @typedef {Object} LegacyTravelExpenseNugget\r\n * @property {number} ClaimType\r\n * @property {string} RouteFrom\r\n * @property {string} RouteTo\r\n * @property {number?} DrivingDistance\r\n * @property {number?} Parking\r\n * @property {number?} ParkingVat\r\n * @property {number?} PublicTransport\r\n * @property {number?} PublicTransportVat\r\n * @property {number?} Congestion\r\n * @property {number?} TravelTime\r\n * \r\n * @typedef {Object} LostIncomeAmountNugget\r\n * @property {number} ClaimType\r\n * @property {number} Amount\r\n * @property {string} Employer\r\n * @property {boolean} RequestRetirementBenefits\r\n * @property {boolean} RequestVacationBenefits\r\n * \r\n * @typedef {Object} LostIncomeNumberNugget\r\n * @property {number} ClaimType\r\n * @property {number} Hours\r\n * @property {string} Employer\r\n * @property {boolean} RequestRetirementBenefits\r\n * @property {boolean} RequestVacationBenefits\r\n * \r\n * @typedef {Object} LostIncomeRateNugget\r\n * @property {number} ClaimType\r\n * @property {number} Hours\r\n * @property {number} HourlyRate\r\n * @property {string} Employer\r\n * @property {boolean} RequestRetirementBenefits\r\n * @property {boolean} RequestVacationBenefits\r\n * \r\n * @typedef {Object} ParkingNugget\r\n * @property {number} ClaimType\r\n * @property {number} Parking\r\n * @property {number?} ParkingVat\r\n * \r\n * @typedef {Object} PublicTransportNugget\r\n * @property {number} ClaimType\r\n * @property {number} PublicTransport\r\n * @property {number?} PublicTransportVat\r\n * \r\n * @typedef {Object} ReceiptExpenseNugget\r\n * @property {number} ClaimType\r\n * @property {string} Purpose\r\n * @property {number} Amount\r\n * @property {number?} Vat\r\n * \r\n * @typedef {Object} TravelNugget\r\n * @property {number} ClaimType\r\n * @property {string} RouteFrom\r\n * @property {string} RouteTo\r\n * @property {number} DrivingDistance\r\n * \r\n * @typedef {Object} TravelTimeNugget\r\n * @property {number} ClaimType\r\n * @property {number} TravelTime\r\n * \r\n * @typedef {Object} ClaimNugget\r\n * @property {number} ClaimType\r\n */\r\n\r\nexport const claimTypes = Object.freeze({\r\n legacyTravel: 0,\r\n expense: 1,\r\n //lostIncome: 2,\r\n adjuster: 3,\r\n travel: 4,\r\n parking: 5,\r\n congestion: 6,\r\n publicTransport: 7,\r\n travelTime: 8,\r\n lostIncomeAmount: 9,\r\n lostIncomeNumber: 10,\r\n lostIncomeRate: 11\r\n});\r\n\r\nexport const claimStates = Object.freeze({\r\n created: 0,\r\n reported: 1,\r\n rejected: 2,\r\n accepted: 3,\r\n});\r\n\r\nexport class Claim extends BaseObject {\r\n constructor(src) {\r\n super();\r\n\r\n if (src) {\r\n _.assign(this, src);\r\n /** @type { number } */\r\n this.ClaimType = src.ClaimType;\r\n /** @type { ClaimNugget } */\r\n this.Nugget = src.Nugget;\r\n this.StateTimestamp = utility.parseDate(this.StateTimestamp);\r\n this.AuditEntries = _.map(src.AuditEntries, x => new AuditData(x));\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} _ctx\r\n */\r\n resolve(ctx) {\r\n _.forEach(this.AuditEntries, x => x.resolve(ctx));\r\n }\r\n}","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nexport class Division extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n }\r\n\r\n effectiveSortingCode() {\r\n // Add 'z' in case the name start with numbers\r\n return this.Active ? this.SortingCode : \"z\" + this.Name;\r\n }\r\n\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport const equipmentTypes = [\r\n { name: 'Dator', id: 0 },\r\n { name: 'Läsplatta', id: 1 },\r\n { name: 'Mobiltelefon', id: 2 },\r\n { name: 'Nycklar', id: 3 },\r\n { name: 'SIM-Kort', id: 4 },\r\n { name: 'Övrigt', id: 5 },\r\n { name: 'Tillbehör', id: 6 }\r\n];\r\n\r\nexport class Equipment extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n if (this.EquipmentType != null) {\r\n this.EquipmentType = equipmentTypes[this.EquipmentType];\r\n if (this.EquipmentType == null)\r\n throw \"Invalid equipment type\";\r\n }\r\n\r\n this.LoanDate = utility.parseDate(this.LoanDate);\r\n this.ExpireDate = utility.parseDate(this.ExpireDate);\r\n this.ReturnDate = utility.parseDate(this.ReturnDate);\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Organization = ctx.getOrganization(this.OrganizationId);\r\n this.Person = ctx.getPerson(this.PersonId);\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n if (ret.EquipmentType != null) {\r\n ret.EquipmentType = ret.EquipmentType.id;\r\n }\r\n ret.OrganizationId = BaseObject.withRelated(ret, \"Organization\");\r\n ret.PersonId = BaseObject.withRelated(ret, \"Person\");\r\n return ret;\r\n }\r\n}\r\n","export class FrontPageNotifications {\r\n constructor(src, _responseContext) {\r\n this.HasExpiringOrganizations = src.HasExpiringOrganizations;\r\n this.HasInvalidMunicipalities = src.HasInvalidMunicipalities;\r\n this.HasNewCeremonies = src.HasNewCeremonies;\r\n this.HasPolitikerToHandle = src.HasPolitikerToHandle;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\nimport { getCalendarPosition } from '../misc/calendarPosition';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport class MandatePeriod extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.Start = utility.parseDate(this.Start);\r\n this.End = utility.parseDate(this.End);\r\n this.display = utility.formatDate(this.Start) + \" - \" + utility.formatDate(this.End);\r\n this.calendarPosition = getCalendarPosition(this.Start, this.End);\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Organization = ctx.getOrganization(this.OrganizationId);\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n ret.OrganizationId = BaseObject.withRelated(ret, \"Organization\");\r\n return ret;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\nimport { AttachmentInfo } from './Attachment';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n*/\r\n\r\nexport const MeetingAccountSource = {\r\n missionOrganization: 0,\r\n meetingOrganization: 1,\r\n meetingAccount: 2,\r\n};\r\n\r\nexport const MeetingCertifierSource = {\r\n missionOrganization: 0,\r\n meetingOrganization: 1,\r\n};\r\n\r\nexport const MeetingType = {\r\n regular: 0,\r\n other: 1,\r\n};\r\n\r\nexport class Meeting extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.Date = utility.parseDate(this.Date);\r\n this.Attachments = _.map(this.Attachments, x => new AttachmentInfo(x));\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Organization = ctx.getOrganization(this.OrganizationId);\r\n this.WageCalculation = ctx.getWageCalculation(this.WageCalculationId);\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n ret.OrganizationId = BaseObject.withRelated(ret, 'Organization');\r\n ret.WageCalculationId = BaseObject.withRelated(ret, 'WageCalculation');\r\n return ret;\r\n }\r\n\r\n clone() {\r\n var src = _.clone(this);\r\n src.Organization = null;\r\n src.WageCalculation = null;\r\n\r\n var ret = _.cloneDeep(src);\r\n ret.Organization = this.Organization;\r\n ret.WageCalculation = this.WageCalculation;\r\n\r\n return ret;\r\n }\r\n}\r\n\r\nexport class MeetingPolitikerInfo {\r\n /**\r\n * \r\n * @param {any} result\r\n * @param {ResponseContext} context\r\n */\r\n constructor(result, context) {\r\n this.MeetingId = result.MeetingId;\r\n this.Meeting = context.getMeeting(result.MeetingId);\r\n this.ClaimCount = result.ClaimCount;\r\n this.FirstClaimTimestamp = utility.parseDate(result.FirstClaimTimestamp);\r\n this.TimeReportCount = result.TimeReportCount;\r\n this.FirstTimeReportTimestamp = utility.parseDate(result.FirstTimeReportTimestamp);\r\n this.IncompleteRemunerationCount = result.IncompleteRemunerationCount;\r\n\r\n this.issueCount = this.ClaimCount + this.TimeReportCount + this.IncompleteRemunerationCount;\r\n\r\n if (this.FirstClaimTimestamp == null) {\r\n this.firstTimestamp = this.FirstTimeReportTimestamp;\r\n } else if (this.FirstTimeReportTimestamp == null) {\r\n this.firstTimestamp = this.FirstClaimTimestamp;\r\n } else {\r\n this.firstTimestamp = new Date(Math.min(this.FirstClaimTimestamp.getTime(), this.FirstTimeReportTimestamp.getTime()));\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {any} result\r\n * @param {ResponseContext} context\r\n */\r\n static mapResponse(result, context) {\r\n return new MeetingPolitikerInfo(result, context);\r\n }\r\n}\r\n\r\nexport class MeetingPendingInfo {\r\n /**\r\n * \r\n * @param {any} result\r\n * @param {ResponseContext} context\r\n */\r\n constructor(result, context) {\r\n this.MeetingId = result.MeetingId;\r\n this.Meeting = context.getMeeting(result.MeetingId);\r\n this.Count = result.Count;\r\n this.FirstTimestamp = utility.parseDate(result.FirstTimestamp);\r\n }\r\n \r\n /**\r\n * \r\n * @param {any} result\r\n * @param {ResponseContext} context\r\n */\r\n static mapResponse(result, context) {\r\n return new MeetingPendingInfo(result, context);\r\n }\r\n}","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\nimport { getCalendarPosition, CalendarPosition } from '../misc/calendarPosition';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport const MissionStatus = {\r\n None: 0,\r\n Active: 1,\r\n Historic: 2,\r\n ActiveOrHistoric: 3,\r\n Future: 4,\r\n ActiveOrFuture: 5,\r\n HistoricOrFuture: 6,\r\n All: 7,\r\n};\r\n\r\nexport class Mission extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.Start = utility.parseDate(this.Start);\r\n this.End = utility.parseDate(this.End);\r\n\r\n this.calendarPosition = getCalendarPosition(this.Start, this.End);\r\n this.Active = this.calendarPosition === CalendarPosition.Active || this.calendarPosition === CalendarPosition.Future;\r\n }\r\n }\r\n\r\n static createPlaceholder(order) {\r\n var ret = new Mission();\r\n ret._placeholder = true;\r\n ret.OrderNumber = order;\r\n return ret;\r\n }\r\n\r\n isPlaceholder() {\r\n return !!this._placeholder;\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Person = ctx.getPerson(this.PersonId);\r\n this.MandatePeriod = ctx.getMandatePeriod(this.MandatePeriodId);\r\n this.Party = ctx.getParty(this.PartyId);\r\n this.MissionType = ctx.getMissionType(this.MissionTypeId);\r\n this.Substitutes = ctx.getPerson(this.SubstituteIds);\r\n this.Divisions = ctx.getDivision(this.DivisionIds);\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n ret.PersonId = BaseObject.withRelated(ret, \"Person\");\r\n ret.MandatePeriodId = BaseObject.withRelated(ret, \"MandatePeriod\");\r\n ret.PartyId = BaseObject.withRelated(ret, \"Party\");\r\n ret.MissionTypeId = BaseObject.withRelated(ret, \"MissionType\");\r\n\r\n ret.SubstituteIds = BaseObject.withRelated(ret, \"Substitutes\");\r\n ret.DivisionIds = BaseObject.withRelated(ret, \"Divisions\");\r\n return ret;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nexport class MissionGroup extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n }\r\n\r\n clone() {\r\n return _.cloneDeep(this);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nexport class MissionType extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport * as EnumValues from '../misc/EnumValues';\r\nimport { BaseObject } from './BaseObject';\r\nimport { AttachmentInfo } from './Attachment';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport class Organization extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.Urls = this.Urls || [];\r\n while (this.Urls.length < 3) {\r\n this.Urls.push({});\r\n }\r\n this.Attachments = _.map(this.Attachments, x => new AttachmentInfo(x));\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.OrganizationType = ctx.getOrganizationType(this.OrganizationTypeId);\r\n this.WageGroup = ctx.getWageGroup(this.WageGroupId);\r\n this.WageCalculation = ctx.getWageCalculation(this.WageCalculationId);\r\n this.MandatePeriods = ctx.getMandatePeriod(this.MandatePeriodIds);\r\n this.PrimaryCertifier = ctx.getPerson(this.PrimaryCertifierId);\r\n this.SecondaryCertifier = ctx.getPerson(this.SecondaryCertifierId);\r\n if (_.isArray(this.MandatePeriods)) {\r\n this.MandatePeriods.sort(function (a, b) {\r\n return b.Start.getTime() - a.Start.getTime();\r\n });\r\n }\r\n }\r\n\r\n getCurrentMandate() {\r\n if (!_.isArray(this.MandatePeriods)) return null;\r\n if (this.MandatePeriods.length === 0) return null;\r\n\r\n var now = new Date();\r\n return this.MandatePeriods.find(function (x) {\r\n if (utility.compareCalendarDate(x.Start, now) > 0)\r\n return false;\r\n\r\n if (x.End == null)\r\n return true;\r\n\r\n if (utility.compareCalendarDate(now, x.End) > 0)\r\n return false;\r\n\r\n return true;\r\n });\r\n }\r\n\r\n getLastMandate() {\r\n if (!_.isArray(this.MandatePeriods)) return null;\r\n if (this.MandatePeriods.length === 0) return null;\r\n\r\n return this.MandatePeriods[0];\r\n }\r\n\r\n getCurrentOrLastMandate() {\r\n if (!_.isArray(this.MandatePeriods)) return null;\r\n if (this.MandatePeriods.length === 0) return null;\r\n\r\n let current = this.getCurrentMandate();\r\n return current != null ? current : this.MandatePeriods[0];\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n\r\n ret.OrganizationTypeId = BaseObject.withRelated(ret, \"OrganizationType\");\r\n ret.WageGroupId = BaseObject.withRelated(ret, \"WageGroup\");\r\n ret.MandatePeriodIds = BaseObject.withRelated(ret, \"MandatePeriods\");\r\n ret.WageCalculationId = BaseObject.withRelated(ret, \"WageCalculation\");\r\n ret.PrimaryCertifierId = BaseObject.withRelated(ret, \"PrimaryCertifier\");\r\n ret.SecondaryCertifierId = BaseObject.withRelated(ret, \"SecondaryCertifier\");\r\n\r\n ret.MainAddress = utility.addressToJson(ret.MainAddress, EnumValues.AddressType.Home);\r\n ret.VisitationAddress = utility.addressToJson(ret.VisitationAddress, EnumValues.AddressType.Visitation);\r\n ret.Email = utility.emailToJson(ret.Email, EnumValues.EmailType.Public);\r\n ret.Urls = _.chain(ret.Urls)\r\n .reject(_.isNil)\r\n .map(x => utility.urlToJson(x, EnumValues.UrlType.Documents))\r\n .value();\r\n\r\n return ret;\r\n }\r\n\r\n clone() {\r\n var src = _.clone(this);\r\n src.OrganizationType = null;\r\n src.WageGroup = null;\r\n src.MandatePeriods = null;\r\n src.WageCalculation = null;\r\n\r\n var ret = _.cloneDeep(src);\r\n ret.OrganizationType = this.OrganizationType;\r\n ret.WageGroup = this.WageGroup;\r\n ret.MandatePeriods = _.clone(this.MandatePeriods);\r\n ret.WageCalculation = this.WageCalculation;\r\n\r\n return ret;\r\n }\r\n\r\n effectiveSortingCode() {\r\n // Add 'z' in case the name start with numbers\r\n return this.Active ? this.SortingCode : \"z\" + this.Name;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nexport class OrganizationType extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n }\r\n\r\n effectiveSortingCode() {\r\n // Add 'z' in case the name start with numbers\r\n return this.Active ? this.SortingCode : \"z\" + this.Name;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nexport class Party extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.display = this.Name + ' (' + this.Abbreviation + ')';\r\n }\r\n }\r\n\r\n effectiveSortingCode() {\r\n // Add 'z' in case the name start with numbers\r\n return this.Active ? this.SortingCode : \"z\" + this.Name;\r\n }\r\n}\r\n\r\n\r\nexport const NoPartyOption = {\r\n Active: true,\r\n Id: 'NOPARTY',\r\n display: '',\r\n};\r\n","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n * @typedef { import('./Meeting').Meeting } Meeting\r\n*/\r\n\r\nexport class Payment extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.WageType = ctx.getWageType(this.WageTypeId);\r\n this.PaymentRound = ctx.getPaymentRound(this.PaymentRoundId);\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n ret.WageTypeId = BaseObject.withRelated(ret, \"WageType\");\r\n ret.PaymentRoundId = BaseObject.withRelated(ret, \"PaymentRound\");\r\n return ret;\r\n }\r\n\r\n clone() {\r\n var src = _.clone(this);\r\n src.WageType = null;\r\n src.PaymentRound = null;\r\n\r\n var ret = _.cloneDeep(src);\r\n ret.WageType = this.WageType;\r\n ret.PaymentRound = this.PaymentRound;\r\n return ret;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\n\r\n/**\r\n * Formats a payment month\r\n * @param {any} year\r\n * @param {any} month\r\n */\r\nexport function formatPaymentMonth(year, month) {\r\n if (month > 9) {\r\n return year + '-' + month;\r\n } else {\r\n return year + '-0' + month;\r\n }\r\n}\r\n\r\nexport class PaymentRound extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.PaymentMonth = formatPaymentMonth(this.Year, this.Month);\r\n this.VersionDate = utility.parseDate(this.VersionDate);\r\n this.MeetingDateFirst = utility.parseDate(this.MeetingDateFirst);\r\n this.MeetingDateLast = utility.parseDate(this.MeetingDateLast);\r\n this.FileDate = utility.parseDate(this.FileDate);\r\n }\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { PaymentWarnings } from './WageGroup';\r\nimport { AuditData } from './Audit';\r\n\r\n/**\r\n * @typedef { import('./Claim').Claim } Claim\r\n * @typedef { import('./Payment').Payment } Payment\r\n * @typedef { import('./Attendance').Attendance } Attendance\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n*/\r\n\r\nexport const certificationStates = Object.freeze({\r\n skipped: 0,\r\n pending: 1,\r\n rejected: 2,\r\n certified: 3,\r\n recalled: 4,\r\n});\r\n\r\nexport const remunerationTypes = Object.freeze({\r\n claim: 0,\r\n calculatedMeeting: 1,\r\n calculatedTravel: 2,\r\n payment: 3,\r\n});\r\n\r\nexport const remunerationOperations = Object.freeze({\r\n none: 0,\r\n remove: 1,\r\n certify: 2,\r\n rejectClaim: 3,\r\n});\r\n\r\nexport class Payslip {\r\n constructor(obj) {\r\n if (_.isObjectLike(obj)) {\r\n this.AttendanceId = obj.AttendanceId;\r\n this.EnableLostIncome = obj.EnableLostIncome;\r\n this.NewClaimIds = obj.NewClaimIds;\r\n this.Remunerations = _.map(obj.Remunerations, x => new Remuneration(x));\r\n this.Warnings = _.map(obj.Warnings, x => new PayslipWarning(x));\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n /** @type {Attendance} */\r\n this.Attendance = ctx.getAttendance(this.AttendanceId);\r\n /** @type {Claim[]} */\r\n this.NewClaims = ctx.getClaim(this.NewClaimIds);\r\n\r\n this.Remunerations.forEach(x => x.resolve(ctx));\r\n this.Warnings.forEach(x => x.resolve(ctx));\r\n }\r\n\r\n /**\r\n * \r\n * @param {any} result\r\n * @param {ResponseContext} context\r\n */\r\n static mapResponse(result, context) {\r\n let res = new Payslip(result);\r\n res.resolve(context);\r\n return res;\r\n }\r\n}\r\n\r\nexport class Remuneration {\r\n constructor(src) {\r\n this.Id = src.Id;\r\n this.ClaimId = src.ClaimId;\r\n this.PaymentIds = src.PaymentIds;\r\n this.CertificationState = src.CertificationState;\r\n this.RemunerationType = src.RemunerationType;\r\n this.AuditEntries = _.map(src.AuditEntries, x => new AuditData(x));\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} context\r\n */\r\n resolve(ctx) {\r\n this.Claim = ctx.getClaim(this.ClaimId);\r\n this.Payments = ctx.getPayment(this.PaymentIds);\r\n _.forEach(this.AuditEntries, x => x.resolve(ctx));\r\n }\r\n}\r\n\r\nexport class PayslipWarning {\r\n constructor(src) {\r\n this.WageTypeId = src.WageTypeId;\r\n this.Warning = src.Warning;\r\n this.Amount = src.Amount;\r\n this.Overflow = src.Overflow;\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} context\r\n */\r\n resolve(ctx) {\r\n this.WageType = ctx.getWageType(this.WageTypeId);\r\n\r\n this.message = PaymentWarnings.getMessage(this.Warning);\r\n this.location = PaymentWarnings.getLocation(this.Warning, this.WageType && this.WageType.display);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n*/\r\n\r\nexport class PendingCertification {\r\n constructor(src) {\r\n this.CertifierId = src.CertifierId;\r\n this.OrganizationId = src.OrganizationId;\r\n this.IsPrimary = src.IsPrimary;\r\n this.Count = src.Count;\r\n this.FirstPendingTimestamp = utility.parseDate(src.FirstPendingTimestamp);\r\n }\r\n\r\n /**\r\n * \r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Certifier = ctx.getPerson(this.CertifierId);\r\n this.Organization = ctx.getOrganization(this.OrganizationId);\r\n }\r\n\r\n static fromResponse(rsp) {\r\n let result = rsp.getResult();\r\n let context = rsp.context;\r\n return _.map(result, x => {\r\n let pc = new PendingCertification(x);\r\n pc.resolve(context);\r\n return pc;\r\n });\r\n }\r\n}","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport * as EnumValues from '../misc/EnumValues';\r\nimport { BaseObject } from './BaseObject';\r\nimport { AttachmentInfo } from './Attachment';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\n/**\r\n * @typedef PersonEarning\r\n * @type {object}\r\n * @property {string} EmployerName\r\n * @property {number} UnitPrice\r\n * @property {Date} ValidFrom\r\n * @property {?Date} ValidTo\r\n */\r\n\r\nexport class Person extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.ConsentDate = utility.parseDate(this.ConsentDate);\r\n this.LastLookupTimestamp = utility.parseDate(this.LastLookupTimestamp);\r\n this.PolitikerExpireDate = utility.parseDate(this.PolitikerExpireDate);\r\n this.PolitikerActivationTimestamp = utility.parseDate(this.PolitikerActivationTimestamp);\r\n\r\n this.firstName = this.PreferredName ? this.PreferredName : this.RegisteredName;\r\n\r\n var first = this.firstName ? (this.firstName + ' ') : '';\r\n var last = this.LastName || '';\r\n\r\n this.name = first + last;\r\n this.display = this.name;\r\n\r\n if (_.isArray(this.Addresses)) {\r\n this.Addresses.forEach(addr => {\r\n if (addr.Type === EnumValues.AddressType.Home)\r\n this.homeAddress = addr;\r\n if (addr.Type === EnumValues.AddressType.Distribution)\r\n this.distributionAddress = addr;\r\n });\r\n }\r\n\r\n if (_.isArray(this.PhoneNumbers)) {\r\n this.PhoneNumbers.forEach(phone => {\r\n if (phone.Type === EnumValues.PhoneType.Home)\r\n this.phoneHome = phone;\r\n if (phone.Type === EnumValues.PhoneType.Mobile)\r\n this.phoneMobile = phone;\r\n if (phone.Type === EnumValues.PhoneType.Work)\r\n this.phoneWork = phone;\r\n if (phone.Type === EnumValues.PhoneType.Holiday)\r\n this.phoneHoliday = phone;\r\n });\r\n }\r\n\r\n if (_.isArray(this.Emails)) {\r\n this.Emails.forEach(email => {\r\n if (email.Type === EnumValues.EmailType.Public)\r\n this.emailPublic = email;\r\n if (email.Type === EnumValues.EmailType.Internal)\r\n this.emailInternal = email;\r\n if (email.Type === EnumValues.EmailType.Private)\r\n this.emailPrivate = email;\r\n });\r\n }\r\n\r\n if (_.isArray(this.Earnings)) {\r\n this.Earnings.forEach(earning => {\r\n earning.ValidFrom = utility.parseDate(earning.ValidFrom);\r\n earning.ValidTo = utility.parseDate(earning.ValidTo);\r\n });\r\n this.Earnings = _.orderBy(this.Earnings, [x => x.ValidTo != null ? x.ValidTo.getTime() : Number.MAX_SAFE_INTEGER, x => x.ValidFrom, x => x.EmployerName], ['desc', 'desc', 'asc']);\r\n } else {\r\n this.Earnings = [];\r\n }\r\n\r\n this.Attachments = _.map(this.Attachments, x => new AttachmentInfo(x));\r\n }\r\n }\r\n\r\n get hasPolitikerNow() {\r\n return this.HasPolitikerAccess && (this.PolitikerExpireDate == null || this.PolitikerExpireDate >= utility.todayDate());\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Party = ctx.getParty(this.PartyId);\r\n this.Division = ctx.getDivision(this.DivisionId);\r\n\r\n if (this.Party && this.Party.Abbreviation)\r\n this.display += \" (\" + this.Party.Abbreviation + \")\";\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n\r\n ret.PartyId = BaseObject.withRelated(ret, \"Party\");\r\n ret.DivisionId = BaseObject.withRelated(ret, \"Division\");\r\n\r\n ret.Addresses = [\r\n utility.addressToJson(this.homeAddress, EnumValues.AddressType.Home),\r\n utility.addressToJson(this.distributionAddress, EnumValues.AddressType.Distribution)\r\n ].filter(utility.isNotNull);\r\n\r\n ret.PhoneNumbers = [\r\n utility.phoneToJson(this.phoneHome, EnumValues.PhoneType.Home),\r\n utility.phoneToJson(this.phoneMobile, EnumValues.PhoneType.Mobile),\r\n utility.phoneToJson(this.phoneWork, EnumValues.PhoneType.Work),\r\n utility.phoneToJson(this.phoneHoliday, EnumValues.PhoneType.Holiday)\r\n ].filter(utility.isNotNull);\r\n\r\n ret.Emails = [\r\n utility.emailToJson(this.emailPublic, EnumValues.EmailType.Public),\r\n utility.emailToJson(this.emailInternal, EnumValues.EmailType.Internal),\r\n utility.emailToJson(this.emailPrivate, EnumValues.EmailType.Private)\r\n ].filter(utility.isNotNull);\r\n\r\n return ret;\r\n }\r\n\r\n clone() {\r\n var src = _.clone(this);\r\n src.Party = null;\r\n src.Division = null;\r\n\r\n var ret = _.cloneDeep(src);\r\n ret.Party = this.Party;\r\n ret.Division = this.Division;\r\n return ret;\r\n }\r\n\r\n initEdit() {\r\n this.emailPublic = this.emailPublic || { UseForMessages: true };\r\n this.emailInternal = this.emailInternal || { UseForMessages: true };\r\n this.emailPrivate = this.emailPrivate || { UseForMessages: true };\r\n }\r\n\r\n static compare(a, b) {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return 1;\r\n if (b == null) return -1;\r\n\r\n return utility.compare(a.name, b.name) || utility.compare(a.Id, b.Id);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n*/\r\n\r\nexport const lostIncomeBenefitsMode = Object.freeze({\r\n disabled: 0,\r\n byrequest: 1,\r\n always: 2,\r\n});\r\n\r\nfunction subSettingsToJSON(x) {\r\n let ret = _.clone(x);\r\n if (ret.WageType) {\r\n ret.WageTypeId = ret.WageType.Id;\r\n delete ret.WageType;\r\n }\r\n return ret;\r\n}\r\n\r\nexport class PolitikerSettings extends BaseObject {\r\n constructor(src) {\r\n super();\r\n\r\n this.LostIncomeAmount = {};\r\n this.LostIncomeNumberUnit = {};\r\n this.LostIncomeNumber = {};\r\n this.RetirementBenefits = {};\r\n this.VacationBenefits = {};\r\n this.Travel = {};\r\n this.Parking = {};\r\n this.Congestion = {};\r\n this.PublicTransport = {};\r\n this.TravelTime = {};\r\n this.Expenses = {};\r\n this.Adjuster = {};\r\n\r\n if (src) {\r\n _.extend(this, src);\r\n this.StartDate = utility.parseDate(src.StartDate);\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.Vat.WageType = ctx.getWageType(this.Vat.WageTypeId);\r\n this.LostIncomeAmount.WageType = ctx.getWageType(this.LostIncomeAmount.WageTypeId);\r\n this.LostIncomeNumberUnit.WageType = ctx.getWageType(this.LostIncomeNumberUnit.WageTypeId);\r\n this.LostIncomeNumber.WageType = ctx.getWageType(this.LostIncomeNumber.WageTypeId);\r\n this.RetirementBenefits.WageType = ctx.getWageType(this.RetirementBenefits.WageTypeId);\r\n this.VacationBenefits.WageType = ctx.getWageType(this.VacationBenefits.WageTypeId);\r\n this.Travel.WageType = ctx.getWageType(this.Travel.WageTypeId);\r\n this.Parking.WageType = ctx.getWageType(this.Parking.WageTypeId);\r\n this.Congestion.WageType = ctx.getWageType(this.Congestion.WageTypeId);\r\n this.PublicTransport.WageType = ctx.getWageType(this.PublicTransport.WageTypeId);\r\n this.TravelTime.WageType = ctx.getWageType(this.TravelTime.WageTypeId);\r\n this.Expenses.WageType = ctx.getWageType(this.Expenses.WageTypeId);\r\n this.Adjuster.WageType = ctx.getWageType(this.Adjuster.WageTypeId);\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n ret.Vat = subSettingsToJSON(ret.Vat);\r\n ret.LostIncomeAmount = subSettingsToJSON(ret.LostIncomeAmount);\r\n ret.LostIncomeNumberUnit = subSettingsToJSON(ret.LostIncomeNumberUnit);\r\n ret.LostIncomeNumber = subSettingsToJSON(ret.LostIncomeNumber);\r\n ret.RetirementBenefits = subSettingsToJSON(ret.RetirementBenefits);\r\n ret.VacationBenefits = subSettingsToJSON(ret.VacationBenefits);\r\n ret.Travel = subSettingsToJSON(ret.Travel);\r\n ret.Parking = subSettingsToJSON(ret.Parking);\r\n ret.Congestion = subSettingsToJSON(ret.Congestion);\r\n ret.PublicTransport = subSettingsToJSON(ret.PublicTransport);\r\n ret.TravelTime = subSettingsToJSON(ret.TravelTime);\r\n ret.Expenses = subSettingsToJSON(ret.Expenses);\r\n ret.Adjuster = subSettingsToJSON(ret.Adjuster);\r\n return ret;\r\n }\r\n\r\n clone() {\r\n let ret = new PolitikerSettings();\r\n _.assign(ret, this);\r\n ret.LostIncomeAmount = _.clone(ret.LostIncomeAmount);\r\n ret.LostIncomeNumberUnit = _.clone(ret.LostIncomeNumberUnit);\r\n ret.LostIncomeNumber = _.clone(ret.LostIncomeNumber);\r\n ret.RetirementBenefits = _.clone(ret.RetirementBenefits);\r\n ret.VacationBenefits = _.clone(ret.VacationBenefits);\r\n ret.Travel = _.clone(ret.Travel);\r\n ret.Parking = _.clone(ret.Parking);\r\n ret.Congestion = _.clone(ret.Congestion);\r\n ret.PublicTransport = _.clone(ret.PublicTransport);\r\n ret.TravelTime = _.clone(ret.TravelTime);\r\n ret.Expenses = _.clone(ret.Expenses);\r\n ret.Adjuster = _.clone(ret.Adjuster);\r\n return ret;\r\n }\r\n}","import * as _ from 'lodash';\r\nimport { TromanError } from '../../common/TromanError';\r\n\r\nfunction makeParams(src) {\r\n var ret = {};\r\n var key;\r\n for (key in src) {\r\n if (Object.prototype.hasOwnProperty.call(src, key)) {\r\n ret[key] = true;\r\n }\r\n }\r\n return ret;\r\n}\r\n\r\nexport class ReportInfo {\r\n constructor(report) {\r\n if (report == null) throw new TromanError('reportinfo_argnull');\r\n\r\n _.extend(this, report);\r\n\r\n if (report.Identifier) {\r\n this.display = report.Identifier + ' ' + report.Name;\r\n } else {\r\n this.display = report.Name;\r\n }\r\n\r\n this.params = {\r\n Query: makeParams(report.Defaults.Query),\r\n Options: makeParams(report.Defaults.Options)\r\n };\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nexport class Setting extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n if (_.isString(this.Value)) {\r\n this.Value = JSON.parse(this.Value);\r\n }\r\n\r\n this.title = this.Name || \"\";\r\n }\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n if (_.isObjectLike(ret.Value)) {\r\n ret.Value = JSON.stringify(ret.Value);\r\n }\r\n return ret;\r\n }\r\n\r\n clone() {\r\n return _.cloneDeep(this);\r\n }\r\n}\r\n","import * as _ from \"lodash\";\r\nimport { TromanError } from \"../../common/TromanError\";\r\n\r\nfunction getPayrollSystemName(payrollSystemId) {\r\n switch (payrollSystemId) {\r\n case 0: return \"Inget lönesystem\";\r\n case 1: return \"Heroma\"; // Heroma-1\r\n case 2: return \"Heroma\"; // Heroma-2\r\n case 3: return \"Heroma\"; // Heroma-3\r\n case 4: return \"eCompanion\";\r\n case 5: return \"Hrplus\"; // Hrplus old\r\n case 6: return \"Hrplus (Gotland)\"; // Hrplus11-Gotland\r\n case 7: return \"Personec P\";\r\n case 8: return \"HRM\";\r\n case 9: return \"Heroma\"; // Heroma-4\r\n case 10: return \"Hrplus\"; // Hrplus11\r\n case 11: return \"SD Worx\";\r\n default: throw new TromanError(\"unknown_payrollsystemid\", \"Okänt lönesystem\", payrollSystemId);\r\n }\r\n}\r\n\r\nexport class SystemInfo {\r\n constructor(src, _responseContext) {\r\n this.PayrollSystemName = getPayrollSystemName(src.PayrollSystem);\r\n this.EnableTransactions = src.PayrollSystem > 0;\r\n this.IsSparLookupEnabled = src.IsSparLookupEnabled;\r\n this.IsSparNotificationsEnabled = src.IsSparNotificationsEnabled;\r\n this.EndingMandateDays = src.EndingMandateDays;\r\n this.IsPolitikerEnabled = src.IsPolitikerEnabled;\r\n this.PolitikerReportingDays = src.PolitikerReportingDays;\r\n this.IsWarningMissingMeetingPaymentEnabled = src.IsWarningMissingMeetingPaymentEnabled;\r\n this.IsSSOEnabled = src.IsSSOEnabled;\r\n this.AttachmentExtensions = _.map(_.filter(src.ValidExtensions, x => x.AsAttachment), x => x.Extension);\r\n this.ImageExtensions = _.map(_.filter(src.ValidExtensions, x => x.AsImage), x => x.Extension);\r\n\r\n if (!_.isNumber(this.EndingMandateDays) || this.EndingMandateDays < 1 || this.EndingMandateDays > 365) {\r\n this.EndingMandateDays = 30;\r\n }\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport * as EnumValues from '../misc/EnumValues';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nexport class SystemSettings extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n }\r\n\r\n toJSON() {\r\n var ret = super.toJSON();\r\n ret.Address = utility.addressToJson(ret.Address, EnumValues.AddressType.Home);\r\n return ret;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BaseObject } from './BaseObject';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nclass WageCalculationWageType {\r\n constructor(type, src) {\r\n this.Kind = type;\r\n if (src) {\r\n this.WageTypeId = src.WageTypeId;\r\n }\r\n }\r\n\r\n getType() {\r\n return this.Kind;\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n this.WageType = ctx.getWageType(this.WageTypeId);\r\n }\r\n\r\n isEmpty() {\r\n return !this.WageType;\r\n }\r\n\r\n toJSON() {\r\n if (!this.WageType) return;\r\n\r\n return {\r\n Kind: this.Kind,\r\n WageTypeId: this.WageType.Id\r\n };\r\n }\r\n}\r\n\r\nclass WageTypeCollection {\r\n constructor(list) {\r\n this.all = [];\r\n list = list || [];\r\n\r\n const createWCWT = kind => {\r\n const existing = _.find(list, x => x.Kind === kind);\r\n const wcwt = new WageCalculationWageType(kind, existing);\r\n this.all.push(wcwt);\r\n return wcwt;\r\n };\r\n\r\n this.Ordinary = [createWCWT(0), createWCWT(1), createWCWT(2)];\r\n this.Substitute = [createWCWT(3), createWCWT(4), createWCWT(5)];\r\n this.Serving = [createWCWT(6), createWCWT(7), createWCWT(8)];\r\n this.Travel = createWCWT(9);\r\n }\r\n\r\n toJSON() {\r\n return _.filter(this.all, x => !x.isEmpty());\r\n }\r\n\r\n nonEmpty() {\r\n return _.filter(this.all, x => !x.isEmpty());\r\n }\r\n}\r\n\r\nexport class WageCalculation extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n this.WageTypes = new WageTypeCollection(this.WageTypes);\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n _.each(this.WageTypes.all, x => x.resolve(ctx));\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\n\r\n/**\r\n * @typedef { import('../server/ResponseContext').ResponseContext } ResponseContext\r\n */\r\n\r\nexport const TransactionErrors = {\r\n isLegacy: { id: 0x0001, message: 'Inkomplett/importerad närvaropost, nya arvoden kan inte tas med i transaktionsfil.', short: 'Inkomplett' },\r\n noPersonalNumber: { id: 0x0002, message: 'Personnummer saknas', short: 'Pnr' },\r\n noEmployeeNumber: { id: 0x0004, message: 'Anställningsnummer felaktigt/saknas', short: 'Anst.Nr.' },\r\n noUnitPrice: { id: 0x0008, message: 'à-pris saknas', short: 'à-pris' },\r\n noAmount: { id: 0x0010, message: 'Belopp saknas', short: 'Belopp' },\r\n noNumber: { id: 0x0020, message: 'Antal saknas', short: 'Antal' },\r\n isVacant: { id: 0x0040, message: 'Vakant uppdrag', short: 'Vakant' },\r\n invalidEmployerCode: { id: 0x0080, message: 'Felaktig arbetsgivarkod', short: 'Arb.kod.' },\r\n invalidAdministrationCode: { id: 0x0100, message: 'Felaktig förvaltningskod', short: 'Förv.kod.' },\r\n negativeUnitPrice: { id: 0x0200, message: 'Negativt à-pris', short: 'à-pris' },\r\n negativeAmount: { id: 0x0400, message: 'Negativt belopp', short: 'Belopp' },\r\n negativeNumber: { id: 0x0800, message: 'Negativt antal', short: 'Antal' },\r\n invalidWageTypeCode: { id: 0x1000, message: 'Löneartskod felaktig/saknas', short: 'Kod' },\r\n invalidAccount: { id: 0x2000, message: 'Konto felaktigt/saknas', short: 'Konto' },\r\n invalidPersonId: { id: 0x4000, message: 'Person-id i lönesystem saknas', short: 'Person-id' }\r\n};\r\n\r\nexport const PaymentWarnings = {\r\n meetingAmount: 1,\r\n incomeAmount: 2,\r\n travelCount: 3,\r\n wageTypeCount: 4,\r\n getMessage: function (warning) {\r\n switch (warning) {\r\n case 1: return 'Max belopp överskridet';\r\n case 2: return 'Max belopp överskridet';\r\n case 3: return 'För många arvoden';\r\n case 4: return 'För många arvoden';\r\n }\r\n },\r\n getLocation: function (warning, wageType) {\r\n switch (warning) {\r\n case 1: return 'Mötesarvode';\r\n case 2: return 'Förlorad inkomst';\r\n case 3: return 'Km-ersättning';\r\n case 4: return wageType;\r\n }\r\n }\r\n};\r\n\r\nclass TransactionError {\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n constructor(src, ctx) {\r\n _.assign(this, src);\r\n this.errorList = _.filter(TransactionErrors, x => (this.Error & x.id) != 0);\r\n this.Person = ctx.getPerson(this.PersonId);\r\n this.Meeting = ctx.getMeeting(this.MeetingId);\r\n }\r\n}\r\n\r\nclass TransactionWarning {\r\n constructor(src) {\r\n this.PersonId = src.PersonId;\r\n this.personName = src.FirstName ? src.FirstName + ' ' + src.LastName : src.LastName;\r\n this.Date = utility.parseDate(src.Date);\r\n this.Amount = src.Amount;\r\n this.Overflow = src.Overflow;\r\n this.Warning = src.Warning;\r\n this.message = PaymentWarnings.getMessage(src.Warning);\r\n this.location = PaymentWarnings.getLocation(src.Warning, src.WageTypeCode + ' ' + src.WageTypeName);\r\n }\r\n}\r\n\r\nclass CurrentPaymentRound {\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n constructor(src, ctx) {\r\n _.assign(this, src);\r\n this.PaymentRound = ctx.getPaymentRound(this.PaymentRoundId);\r\n this.personErrorCount = new Set(_.map(this.Errors, x => x.PersonId)).size;\r\n this.Errors = _.map(this.Errors, x => new TransactionError(x, ctx));\r\n this.Warnings = _.map(this.Warnings, x => new TransactionWarning(x));\r\n }\r\n}\r\n\r\nexport class WageGroup extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n }\r\n }\r\n\r\n /**\r\n * @param {ResponseContext} ctx\r\n */\r\n resolve(ctx) {\r\n if (this.CurrentRound != null) {\r\n this.CurrentRound = new CurrentPaymentRound(this.CurrentRound, ctx);\r\n }\r\n }\r\n\r\n clone() {\r\n var src = _.clone(this);\r\n src.CurrentRound = null;\r\n\r\n var ret = _.cloneDeep(src);\r\n ret.CurrentRound = this.CurrentRound;\r\n return ret;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { BaseObject } from './BaseObject';\r\n\r\nfunction parsePrice(val) {\r\n if (/^-?\\d+\\.\\d\\d\\d\\d$/.test(val))\r\n return parseFloat(val);\r\n throw new Error('Error parsing price');\r\n}\r\n\r\nexport class VariablePrice {\r\n constructor(src) {\r\n if (src && typeof src === 'string') {\r\n this.items = src.split(\";\").map(val => {\r\n var split = val.indexOf(\":\");\r\n if (split < 0) throw new Error(\"Error parsing variable price\");\r\n var max = parseInt(val.substring(0, split));\r\n var amount = parsePrice(val.substring(split + 1));\r\n return ({ max, amount });\r\n });\r\n } else {\r\n this.items = [];\r\n }\r\n }\r\n\r\n toJSON() {\r\n return this.items.map(x => x.max.toFixed(0) + \":\" + x.amount.toFixed(4)).join(\";\");\r\n }\r\n\r\n clone() {\r\n return new VariablePrice(this.toJSON());\r\n }\r\n\r\n findAmount(minutes) {\r\n const ordered = _.orderBy(this.items, ['max'], ['asc']);\r\n const variable = ordered.find(x => x.max >= minutes);\r\n return variable ? variable.amount : null;\r\n }\r\n}\r\n\r\nexport class WageType extends BaseObject {\r\n constructor(obj) {\r\n super();\r\n\r\n if (_.isObjectLike(obj)) {\r\n _.assign(this, obj);\r\n\r\n this.display = this.Code + ' ' + this.Name;\r\n\r\n if (this.MaxPayments === 0) {\r\n this.MaxPayments = null;\r\n }\r\n\r\n var periods = this.Periods || [];\r\n periods.forEach(x => {\r\n x.From = utility.parseDate(x.From);\r\n x.VariablePrice = new VariablePrice(x.VariablePrice);\r\n });\r\n this.Periods = _.orderBy(periods, ['From'], ['desc']);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the period corresponding to supplied date.\r\n * May be null.\r\n * @param {Date} date\r\n */\r\n getPeriod(date) {\r\n const ordered = _.orderBy(this.Periods, ['From'], ['desc']);\r\n return ordered.find(x => x.From <= date);\r\n }\r\n}\r\n\r\nexport const wageModelGroups = Object.freeze({\r\n meeting: 0,\r\n lostIncome: 1,\r\n travel: 2,\r\n other: 3,\r\n});\r\n\r\n// Index in the array should be same as id\r\nexport const wageModelGroupInfo = Object.freeze([\r\n Object.freeze({ id: 0, name: 'Mötesarvode' }),\r\n Object.freeze({ id: 1, name: 'Förlorad inkomst' }),\r\n Object.freeze({ id: 2, name: 'Km-ersättning' }),\r\n Object.freeze({ id: 3, name: 'Övrigt' }),\r\n]);\r\n\r\nexport const wageModels = Object.freeze({\r\n meetingFixed: 0,\r\n meetingVariable: 1,\r\n meetingAppear: 2,\r\n lostIncomeFixed: 3,\r\n lostIncomeIndividual: 4,\r\n lostIncomeSystem: 5,\r\n travel: 6,\r\n other: 7,\r\n});\r\n\r\n// Index in the array should be same as id\r\nexport const wageModelInfos = Object.freeze([\r\n Object.freeze({ id: 0, group: 0, hasTimes: true , hasUnitPrice: true , name: 'Möte - Fast timarvode' }),\r\n Object.freeze({ id: 1, group: 0, hasTimes: true , hasUnitPrice: false, name: 'Möte - Variabelt timarvode' }),\r\n Object.freeze({ id: 2, group: 0, hasTimes: false, hasUnitPrice: true , name: 'Möte - Grundarvode' }),\r\n Object.freeze({ id: 3, group: 1, hasTimes: false, hasUnitPrice: true , name: 'Förlorad inkomst - à-pris/belopp' }),\r\n Object.freeze({ id: 4, group: 1, hasTimes: false, hasUnitPrice: false, name: 'Förlorad inkomst - Individuell' }),\r\n Object.freeze({ id: 5, group: 1, hasTimes: false, hasUnitPrice: false, name: 'Förlorad inkomst - Individuell i lönesystem' }),\r\n Object.freeze({ id: 6, group: 2, hasTimes: false, hasUnitPrice: true , name: 'Km-ersättning' }),\r\n Object.freeze({ id: 7, group: 3, hasTimes: false, hasUnitPrice: true , name: 'Övrigt' }),\r\n]);\r\n","angular.module(\"tromanWeb\").controller('OrganizationTypeEditController', ['DialogControllerBase', '$scope', 'tromanServer', 'organizationType', function (DialogControllerBase, $scope, tromanServer, organizationType) {\r\n\r\n var self = this;\r\n DialogControllerBase.call(self, tromanServer.OrganizationTypes, $scope);\r\n\r\n self.getTitle = function () { return 'organisationstypen \"' + self.organizationType.Name + '\"'; };\r\n self.getItem = function () { return self.organizationType; };\r\n\r\n self.loadItem(organizationType).then(function (data) {\r\n self.organizationType = data;\r\n });\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { OrganizationType } from '../objects/OrganizationType';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('OrganizationTypesController', ['stateService', 'tromanServer', 'dialogService', 'sortDialog', function (stateService, tromanServer, dialogService, sortDialog) {\r\n\r\n this.loading = true;\r\n this.showAdvancedSearch = false;\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refresh();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refresh();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this._refresh = function _refresh() {\r\n this.loading = true;\r\n tromanServer.OrganizationTypes.search(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createOrganizationTypeList(list);\r\n };\r\n\r\n this.changeSorting = function changeSorting() {\r\n if (this.items != null) {\r\n sortDialog.sortOrganizationTypes(tromanServer.OrganizationTypes.list()).then(() => this._refresh());\r\n }\r\n };\r\n\r\n this.add = function add() {\r\n var toadd = new OrganizationType();\r\n toadd.FirstPageCount = 10000;\r\n dialogService.editOrganizationType(toadd).then(() => this._refresh());\r\n };\r\n\r\n this.edit = function edit(item) {\r\n dialogService.editOrganizationType(item).then(() => this._refresh());\r\n };\r\n\r\n}]);\r\n","angular.module(\"tromanWeb\").controller('OrganizationController', ['stateService', 'tromanServer', 'dialogService', 'organizationState', function (stateService, tromanServer, dialogService, organizationState) {\r\n\r\n var self = this;\r\n\r\n self.organizationTypes = organizationState.organizationTypes;\r\n self.wageGroups = organizationState.wageGroups;\r\n self.wageCalculations = organizationState.wageCalculations;\r\n self.users = organizationState.users;\r\n self.organization = organizationState.organization;\r\n self.persons = organizationState.persons;\r\n self.enableArchive = !!(self.organization.Id && self.organization.Active);\r\n\r\n self.canArchive = function () {\r\n if (!self.enableArchive) return false;\r\n if (organizationState.form != null) {\r\n if (organizationState.form.$dirty)\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n self.canActivate = function () {\r\n if (self.enableArchive) return false;\r\n if (organizationState.form != null) {\r\n if (organizationState.form.$dirty)\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n self.archive = function archive() {\r\n if (!self.canArchive()) return;\r\n\r\n dialogService.confirm([\"Arkivera \" + self.organization.Name + \".\", \"Är du säker?\"]).then(function () {\r\n tromanServer.Organizations.archive(self.organization.Id)\r\n .then(function () { stateService.forceReload(); })\r\n .catch(dialogService.error);\r\n });\r\n };\r\n\r\n self.activate = function activate() {\r\n if (!self.canActivate()) return;\r\n\r\n dialogService.confirm([\"Aktivera \" + self.organization.Name + \".\", \"Är du säker?\"]).then(function () {\r\n tromanServer.Organizations.activate(self.organization.Id)\r\n .then(function () { stateService.forceReload(); })\r\n .catch(dialogService.error);\r\n });\r\n };\r\n\r\n self.hardRemove = function hardRemove() {\r\n if (self.organization == null || self.organization.Id == null) return;\r\n\r\n dialogService.confirm([\"Radera \" + self.organization.Name + \" permanent.\", \"Detta kan inte ångras\", \"Är du säker?\"]).then(function () {\r\n tromanServer.Organizations.hardRemove(self.organization.Id)\r\n .then(function () { stateService.forceGo('organizations'); })\r\n .catch(dialogService.error);\r\n });\r\n };\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { AttachmentCollection } from '../attachments/AttachmentCollection';\r\n\r\nangular.module(\"tromanWeb\").controller('OrganizationEditController', ['stateService', 'tromanServer', 'dialogService', 'organizationState', 'systemInfo', function (stateService, tromanServer, dialogService, organizationState, systemInfo) {\r\n\r\n var isSaving = false;\r\n\r\n this.organization = organizationState.organization.clone();\r\n this.shared = organizationState;\r\n this.canChangeWageGroup = !!(this.organization.WageGroup == null || this.organization.WageGroup.CurrentRound == null || this.organization.WageGroup.CurrentRound.PaymentRound.IsLocked);\r\n this.enableMunicipalityCheck = !_.isEmpty(this.organization.ValidMunicipalities);\r\n this.isPolitikerEnabled = systemInfo.IsPolitikerEnabled;\r\n this.attachments = new AttachmentCollection(this.organization.Attachments);\r\n\r\n stateService.guard(() => this.shared.form.$dirty || this.attachments.hasChanges());\r\n\r\n this.canSave = function () {\r\n return this.organization != null && !isSaving && (this.shared.form.$dirty || this.attachments.hasChanges()) && this.attachments.isValid() && this.shared.form.$valid;\r\n };\r\n\r\n this.enableMunicipalityCheckChanged = function () {\r\n if (this.enableMunicipalityCheck && !_.isEmpty(organizationState.systemSettings.DefaultValidMunicipalities)) {\r\n this.organization.ValidMunicipalities = organizationState.systemSettings.DefaultValidMunicipalities.slice();\r\n } else {\r\n this.organization.ValidMunicipalities = [];\r\n }\r\n };\r\n\r\n this._enableHistoricMeetingDays = this.organization?.Publish?.HistoricMeetingDays > 0;\r\n Object.defineProperty(this, 'enableHistoricMeetingDays', {\r\n get: function() {\r\n return this._enableHistoricMeetingDays;\r\n },\r\n set: function(value) {\r\n this._enableHistoricMeetingDays = !!value;\r\n this.organization.Publish.HistoricMeetingDays = value ? 365 : 0;\r\n }\r\n });\r\n\r\n this.save = function save() {\r\n if (!this.canSave()) return;\r\n\r\n this.shared.form.$commitViewValue();\r\n this.shared.form.$setSubmitted();\r\n\r\n if (this.shared.form.$invalid) return;\r\n\r\n if (this.attachments.hasChanges()) {\r\n this.organization.AttachmentUpdate = this.attachments.createUpdate();\r\n }\r\n\r\n isSaving = true;\r\n if (this.organization.Id == null) {\r\n tromanServer.Organizations.addEntity(this.organization)\r\n .finally(() => { isSaving = false; })\r\n .then(rsp => {\r\n stateService.forceGo('organization.details', { organizationId: rsp.result.Id }, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error);\r\n } else {\r\n tromanServer.Organizations.updateEntity(this.organization)\r\n .finally(() => { isSaving = false; })\r\n .then(() => {\r\n stateService.forceReload('organization');\r\n })\r\n .catch(dialogService.error);\r\n }\r\n };\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { Mission } from '../objects/Mission';\r\nimport { CalendarPosition } from '../misc/calendarPosition';\r\n\r\nfunction compareMissionSameOrderNumber(a, b) {\r\n if (a.End == null && b.End == null) {\r\n return a.Start.getTime() - b.Start.getTime();\r\n }\r\n if (a.End == null) return 1;\r\n if (b.End == null) return -1;\r\n return a.End.getTime() - b.End.getTime();\r\n}\r\n\r\nfunction compareMission(a, b) {\r\n if (a.OrderNumber === b.OrderNumber) {\r\n return compareMissionSameOrderNumber(a, b);\r\n }\r\n if (a.OrderNumber === 0) return 1;\r\n if (b.OrderNumber === 0) return -1;\r\n return a.OrderNumber - b.OrderNumber;\r\n}\r\n\r\nfunction isOverlapping(a, b) {\r\n return a.Start <= b.End && b.Start <= a.End;\r\n}\r\n\r\nfunction isOverlappingLenient(a, b) {\r\n return a.Start < b.End && b.Start < a.End;\r\n}\r\n\r\n/**\r\n * \r\n * @param {Mission[]} missions\r\n */\r\nfunction getOverlapping(missions, allowSameDay) {\r\n let overlapping = [];\r\n let candidates = _.filter(missions, x => x.OrderNumber > 0 && (x.calendarPosition === CalendarPosition.Active || x.calendarPosition === CalendarPosition.Future));\r\n let groups = _.groupBy(candidates, x => x.OrderNumber);\r\n let test = allowSameDay ? isOverlappingLenient : isOverlapping;\r\n\r\n _.each(groups, group => {\r\n for (let ii = 0; ii < group.length; ++ii) {\r\n for (let kk = ii + 1; kk < group.length; ++kk) {\r\n if (test(group[ii], group[kk])) {\r\n overlapping.push(group[ii]);\r\n overlapping.push(group[kk]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return _.uniq(overlapping);\r\n}\r\n\r\n/**\r\n *\r\n * @param {Mission[]} missions\r\n */\r\nfunction getDuplicates(missions) {\r\n let candidates = _.filter(missions, x => x.PersonId != null);\r\n var groups = _.groupBy(candidates, x => x.PersonId);\r\n var multi = _.filter(groups, x => x.length > 1);\r\n return _.flatMap(multi);\r\n}\r\n\r\n/**\r\n * Generate mission list with placeholder.\r\n * A single placeholder is created for every order number that does not have an active mission.\r\n * If the mandateperiod has a substitute/member count, generate placeholders for those ordernumbers\r\n * as well.\r\n *\r\n * @param {MandatePeriod} mandatePeriod\r\n * @param {Mission[]} missions\r\n */\r\nfunction generateMissions(mandatePeriod, missions) {\r\n\r\n const subCount = _.isInteger(mandatePeriod.SubstituteCount) ? mandatePeriod.SubstituteCount : 0;\r\n const memCount = _.isInteger(mandatePeriod.MemberCount) ? mandatePeriod.MemberCount : 0;\r\n const maxActiveOrderNumber = missions.reduce((p, v) => v.calendarPosition === CalendarPosition.Historic ? p : Math.max(p, v.OrderNumber), 0);\r\n const targetPlaceholderOrder = Math.max(subCount + memCount + 1, maxActiveOrderNumber);\r\n\r\n let result = [];\r\n let zeros = [];\r\n let nextOrderNumber = 1;\r\n\r\n // Missions are sorted with ascending order number (except for ordernumber 0 which is sorted last).\r\n missions.sort(compareMission);\r\n\r\n function generatePlaceholders(upto) {\r\n while (nextOrderNumber < upto) {\r\n result.push(Mission.createPlaceholder(nextOrderNumber));\r\n nextOrderNumber = nextOrderNumber + 1;\r\n }\r\n }\r\n\r\n for (var ms of missions) {\r\n if (ms.OrderNumber > 0) {\r\n if (ms.calendarPosition === CalendarPosition.Active || ms.calendarPosition === CalendarPosition.Future) {\r\n generatePlaceholders(ms.OrderNumber);\r\n nextOrderNumber = ms.OrderNumber + 1;\r\n result.push(ms);\r\n } else if (ms.calendarPosition === CalendarPosition.Historic) {\r\n generatePlaceholders(Math.min(ms.OrderNumber, targetPlaceholderOrder));\r\n result.push(ms);\r\n }\r\n } else {\r\n zeros.push(ms);\r\n }\r\n }\r\n\r\n generatePlaceholders(targetPlaceholderOrder);\r\n\r\n return result.concat(zeros);\r\n}\r\n\r\nexport class OrganizationMissionList {\r\n /**\r\n * \r\n * @param {MandatePeriod} mandatePeriod\r\n * @param {Mission[]} missions\r\n */\r\n constructor(mandatePeriod, missions) {\r\n this._actualMissions = missions;\r\n\r\n if (mandatePeriod.calendarPosition === CalendarPosition.Historic) {\r\n missions.sort(compareMission);\r\n this._missions = missions;\r\n } else {\r\n this._missions = generateMissions(mandatePeriod, missions);\r\n }\r\n\r\n this.overlapping = getOverlapping(missions, mandatePeriod.AllowSameDayOverlap);\r\n this.hasOverlappingOrderNumber = this.overlapping.length > 0;\r\n\r\n this.duplicates = getDuplicates(missions);\r\n this.hasDuplicatePersons = this.duplicates.length > 0;\r\n\r\n this.hasNonHistoric = _.some(this._missions,\r\n x => x.isPlaceholder() ||\r\n x.calendarPosition === CalendarPosition.Active ||\r\n x.calendarPosition === CalendarPosition.Future);\r\n\r\n this._cache = null;\r\n this._cacheHistoric = false;\r\n this._cacheFuture = false;\r\n }\r\n\r\n getActualMissions() {\r\n return this._actualMissions;\r\n }\r\n\r\n /**\r\n * Returns the missions in this list, bypassing the cache.\r\n * @param {boolean} includeHistoric\r\n * @param {boolean} includeFuture\r\n */\r\n findMissions(includeHistoric, includeFuture) {\r\n if (includeHistoric && includeFuture) {\r\n return this._missions;\r\n }\r\n\r\n return _.filter(this._missions, x =>\r\n x.isPlaceholder() ||\r\n x.calendarPosition === CalendarPosition.Active ||\r\n (includeFuture && x.calendarPosition === CalendarPosition.Future) ||\r\n (includeHistoric && x.calendarPosition === CalendarPosition.Historic));\r\n }\r\n\r\n /**\r\n * Returns the missions in this list, using a cached result if possible.\r\n * @param {boolean} includeHistoric\r\n * @param {boolean} includeFuture\r\n */\r\n getMissions(includeHistoric, includeFuture) {\r\n if (includeHistoric && includeFuture) {\r\n return this._missions;\r\n }\r\n\r\n if (this._cache == null || this._cacheHistoric !== includeHistoric || this._cacheFuture !== includeFuture) {\r\n this._cache = this.findMissions(includeHistoric, includeFuture);\r\n this._cacheHistoric = includeHistoric;\r\n this._cacheFuture = includeFuture;\r\n }\r\n\r\n return this._cache;\r\n }\r\n}","require('./organization.less');\r\n\r\nimport * as _ from 'lodash';\r\nimport { Mission } from '../objects/Mission';\r\nimport { CalendarPosition } from '../misc/calendarPosition';\r\n\r\nangular.module(\"tromanWeb\").controller('OrganizationMissionsController', ['stateService', '$q', 'dialogService', 'sortDialog', 'organizationService', 'organizationState', function (stateService, $q, dialogService, sortDialog, organizationService, organizationState) {\r\n\r\n this.showHistoric = false;\r\n this.showFuture = true;\r\n this.organization = null;\r\n this.mandatePeriod = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.organization = organizationState.organization;\r\n this.mandatePeriod = organizationService.selectDisplayMandate(this.organization, params.mpid);\r\n this._initPeriod();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'mpid')) {\r\n this.mandatePeriod = organizationService.selectDisplayMandate(this.organization, changed.mpid);\r\n this._initPeriod();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this._initPeriod = function () {\r\n if (this.mandatePeriod == null) return;\r\n\r\n this.showHistoric = this.mandatePeriod.calendarPosition === CalendarPosition.Historic;\r\n this.showFuture = true;\r\n this._reloadMissions();\r\n };\r\n\r\n this._reloadMissions = function () {\r\n if (this.mandatePeriod == null) return;\r\n\r\n this.missionList = null;\r\n this.warnings = 'warnings';\r\n\r\n organizationService.getMissions(this.mandatePeriod).then(data => {\r\n this.error = null;\r\n this.missionList = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.missionList = null;\r\n });\r\n };\r\n\r\n this.getMissions = function () {\r\n if (this.missionList == null) {\r\n return;\r\n } else if (this.warnings === 'overlapping') {\r\n return this.missionList.overlapping;\r\n } else if (this.warnings === 'duplicates') {\r\n return this.missionList.duplicates;\r\n } else {\r\n return this.missionList.getMissions(this.showHistoric, this.showFuture);\r\n }\r\n };\r\n\r\n this.periodChanged = function periodChanged() {\r\n stateService.replaceParams({ mpid: this.mandatePeriod?.Id });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.edit = function edit(mission) {\r\n if (!mission.isPlaceholder()) {\r\n dialogService.editMission(mission, this.missionList.getActualMissions())\r\n .then(() => this._reloadMissions());\r\n }\r\n };\r\n\r\n this.canAddMission = function canAddMission() {\r\n return this.mandatePeriod != null;\r\n };\r\n\r\n this.addMission = function addMission(mission) {\r\n if (!this.canAddMission()) return;\r\n\r\n var toadd = new Mission();\r\n toadd.MandatePeriod = this.mandatePeriod;\r\n toadd.AllowPolitikerRegistration = this.organization.AllowPolitikerRegistration;\r\n if (mission && mission.isPlaceholder()) {\r\n toadd.OrderNumber = mission.OrderNumber;\r\n }\r\n\r\n dialogService.editMission(toadd, this.missionList.getActualMissions())\r\n .then(() => this._reloadMissions());\r\n };\r\n\r\n this.addMandatePeriod = function addMandatePeriod() {\r\n var mp = organizationService.nextMandate(this.organization);\r\n dialogService.editMandatePeriod(mp).then(() => {\r\n stateService.reload('organization');\r\n });\r\n };\r\n\r\n this.canEditMandatePeriod = function canEditMandatePeriod() {\r\n return this.mandatePeriod != null;\r\n };\r\n\r\n this.editMandatePeriod = function editMandatePeriod() {\r\n if (!this.canEditMandatePeriod()) return;\r\n dialogService.editMandatePeriod(this.mandatePeriod).then(() => {\r\n stateService.reload('organization');\r\n });\r\n };\r\n\r\n this.canUpdateSelected = function canUpdateSelected() {\r\n return this.missionTable != null && this.missionTable.selectionCount > 0;\r\n };\r\n\r\n this.updateSelected = function updateSelected() {\r\n if (!this.canUpdateSelected()) return;\r\n\r\n var missions = this.missionTable.selectedItems();\r\n if (missions.length <= 0)\r\n return;\r\n\r\n dialogService.updateOrganizationMissions(missions, this.organization)\r\n .then(() => this._reloadMissions());\r\n };\r\n\r\n this.canCreateList = function () {\r\n return this.missionTable != null && this.missionTable.selectionCount > 0;\r\n };\r\n\r\n this.createList = function createList() {\r\n if (!this.canCreateList()) return;\r\n\r\n var list = this.missionTable.selectedItems();\r\n dialogService.createMissionList(list);\r\n };\r\n\r\n this.canCreateEmails = function () {\r\n return this.missionTable != null && this.missionTable.selectionCount > 0;\r\n };\r\n\r\n this.createEmails = function createEmails() {\r\n if (!this.canCreateEmails()) return;\r\n\r\n var list = this.missionTable.selectedItems()\r\n .map(x => x.Person)\r\n .filter(x => x != null);\r\n dialogService.createEmailList(list);\r\n };\r\n\r\n this.canAddToMissionGroup = function canAddToMissionGroup() {\r\n return this.missionTable != null && this.missionTable.selectionCount > 0;\r\n };\r\n\r\n this.addToMissionGroup = function addToMissionGroup() {\r\n if (!this.canAddToMissionGroup()) return;\r\n\r\n var list = this.missionTable.selectedItems();\r\n dialogService.addToMissionGroup(list);\r\n };\r\n\r\n this.canChangeSorting = function canChangeSorting() {\r\n return this.missionList != null && this.missionList.hasNonHistoric && this.mandatePeriod != null;\r\n };\r\n\r\n this.changeSorting = function changeSorting() {\r\n if (!this.canChangeSorting()) return;\r\n sortDialog.sortMissions($q.when(this.missionList.findMissions(false, true)), this.mandatePeriod)\r\n .then(() => this._reloadMissions());\r\n };\r\n\r\n this.canSelectMission = function canSelectMission(mission) {\r\n return !mission.isPlaceholder();\r\n };\r\n\r\n this.getMissionClass = function getMissionClass(mission) {\r\n switch (mission.calendarPosition) {\r\n case CalendarPosition.Historic: return 'mission-historic';\r\n case CalendarPosition.Active: return 'mission-active';\r\n case CalendarPosition.Future: return 'mission-future';\r\n default: return 'mission-placeholder';\r\n }\r\n };\r\n\r\n this.selectOrdinary = function selectOrdinary() {\r\n this.missionTable.selectFiltered(x => !x.MissionType.IsSubstitute);\r\n };\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { Organization } from '../objects/Organization';\r\n\r\nangular.module(\"tromanWeb\").factory('OrganizationState', ['$q', 'ObjectCache', 'tromanServer', 'dialogService', function ($q, ObjectCache, tromanServer, dialogService) {\r\n\r\n function OrganizationState() {\r\n }\r\n\r\n OrganizationState.create = function (orgId) {\r\n return getOrganization(orgId)\r\n .then(loadRelated)\r\n .then(loaded)\r\n .catch(err => {\r\n dialogService.error(err);\r\n return $q.reject(err);\r\n });\r\n };\r\n\r\n function getOrganization(orgId) {\r\n if (orgId) {\r\n return tromanServer.Organizations.get(orgId);\r\n }\r\n return $q.when(new Organization());\r\n }\r\n\r\n function loadRelated(organization) {\r\n return $q.all({\r\n organization: $q.when(organization),\r\n organizationTypes: ObjectCache.getOrganizationTypes(organization.OrganizationType),\r\n wageGroups: ObjectCache.getWageGroups(organization.WageGroup),\r\n wageCalculations: ObjectCache.getWageCalculations(organization.WageCalculation),\r\n users: ObjectCache.getUsers(organization.ApprovedUserIds),\r\n systemSettings: tromanServer.System.getSettings(),\r\n persons: ObjectCache.getPersons(_.reject([organization.PrimaryCertifier, organization.SecondaryCertifier], _.isNil)),\r\n });\r\n }\r\n\r\n function loaded(data) {\r\n var ret = new OrganizationState();\r\n angular.extend(ret, data);\r\n if (!ret.organization.Id) {\r\n ret.organization.EnableTimereport = ret.systemSettings.EnableTimereport;\r\n ret.organization.AllowPolitikerRegistration = true;\r\n }\r\n return ret;\r\n }\r\n\r\n return OrganizationState;\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { DateTime } from 'luxon';\r\nimport * as utility from '../misc/utility';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n HasFreeOrderNumber: false,\r\n hasEndingMandatePeriod: false\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('OrganizationsController', ['stateService', 'tromanServer', 'systemInfo', 'dialogService', 'sortDialog', function (stateService, tromanServer, systemInfo, dialogService, sortDialog) {\r\n\r\n this.systemInfo = systemInfo;\r\n this.table = null;\r\n this.items = null;\r\n this.loading = true;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refreshItems();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refreshItems();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this._refreshItems = function _refreshItems() {\r\n var sc = {};\r\n\r\n sc.Archived = this.criteria.Archived;\r\n sc.HasFreeOrderNumber = this.criteria.HasFreeOrderNumber;\r\n\r\n if (this.criteria.hasEndingMandatePeriod) {\r\n var today = utility.todayDate();\r\n sc.LastMandateEndsAfter = today;\r\n sc.LastMandateEndsBefore = DateTime.fromJSDate(today).plus({ days: systemInfo.EndingMandateDays }).toJSDate();\r\n }\r\n\r\n this.loading = true;\r\n tromanServer.Organizations.search(sc).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createOrganizationList(list);\r\n };\r\n\r\n this.changeSorting = function changeSorting() {\r\n if (this.table == null) return;\r\n if (this.items != null) {\r\n sortDialog.sortOrganizations(tromanServer.Organizations.list()).then(() => this._refreshItems());\r\n }\r\n };\r\n}]);\r\n","import { MandatePeriod } from '../objects/MandatePeriod';\r\nimport { OrganizationMissionList } from './OrganizationMissionList';\r\n\r\nangular.module(\"tromanWeb\").factory('organizationService', ['tromanServer', function (tromanServer) {\r\n\r\n var so = {};\r\n\r\n so.getMissions = function getMissions(mandatePeriod) {\r\n return tromanServer.Missions.search({\r\n MandatePeriodId: mandatePeriod.Id\r\n }).then(function (data) {\r\n return new OrganizationMissionList(mandatePeriod, data);\r\n });\r\n };\r\n\r\n so.selectDisplayMandate = function selectDisplayMandate(organization, mandatePeriodId) {\r\n if (organization.MandatePeriods == null || organization.MandatePeriods.length === 0) {\r\n return null;\r\n }\r\n\r\n let mp = null;\r\n\r\n if (mandatePeriodId != null) {\r\n mp = organization.MandatePeriods.find(x => x.Id === mandatePeriodId);\r\n }\r\n\r\n if (mp == null) {\r\n mp = organization.getCurrentMandate();\r\n }\r\n\r\n if (mp == null) {\r\n mp = organization.getLastMandate();\r\n }\r\n\r\n return mp;\r\n };\r\n\r\n so.nextMandate = function nextMandate(organization) {\r\n let ret = new MandatePeriod();\r\n\r\n let last = organization.getLastMandate();\r\n\r\n if (last != null) {\r\n if (last.End != null) {\r\n ret.Start = new Date(last.End.getFullYear(), last.End.getMonth(), last.End.getDate() + 1);\r\n var years = last.End.getFullYear() - last.Start.getFullYear();\r\n var months = last.End.getMonth() - last.Start.getMonth();\r\n var days = last.End.getDate() - last.Start.getDate();\r\n ret.End = new Date(ret.Start.getFullYear() + years, ret.Start.getMonth() + months, ret.Start.getDate() + days);\r\n } else {\r\n ret.Start = new Date(last.Start.getFullYear(), last.Start.getMonth(), last.Start.getDate() + 1);\r\n ret.End = null;\r\n }\r\n\r\n ret.DecisionClause = last.DecisionClause;\r\n ret.MemberCount = last.MemberCount;\r\n ret.SubstituteCount = last.SubstituteCount;\r\n ret.IsGroundForGratuity = last.IsGroundForGratuity;\r\n ret.HasPersonalSubstitutes = last.HasPersonalSubstitutes;\r\n ret.AllowSameDayOverlap = last.AllowSameDayOverlap;\r\n ret.HasDivisions = last.HasDivisions;\r\n }\r\n\r\n ret.Organization = organization;\r\n return ret;\r\n };\r\n\r\n return so;\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { Party } from '../objects/Party';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module('tromanWeb').controller('PartiesController', ['stateService', 'tromanServer', 'dialogService', 'sortDialog', function partiesController(stateService, tromanServer, dialogService, sortDialog) {\r\n\r\n this.loading = true;\r\n this.showAdvancedSearch = false;\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refresh();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refresh();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this._refresh = function () {\r\n this.loading = true;\r\n tromanServer.Parties.search(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createPartyList(list);\r\n };\r\n\r\n this.changeSorting = function changeSorting() {\r\n if (this.items != null) {\r\n sortDialog.sortParties(tromanServer.Parties.list()).then(() => this._refresh());\r\n }\r\n };\r\n\r\n this.add = function add() {\r\n dialogService.editParty(new Party()).then(() => this._refresh());\r\n };\r\n\r\n this.edit = function edit(party) {\r\n dialogService.editParty(party).then(() => this._refresh());\r\n };\r\n}]);","angular.module(\"tromanWeb\").controller('PartyEditController', ['DialogControllerBase', '$scope', 'tromanServer', 'party', 'isTroman', function (DialogControllerBase, $scope, tromanServer, party, isTroman) {\r\n\r\n var self = this;\r\n DialogControllerBase.call(self, tromanServer.Parties, $scope);\r\n\r\n self.getTitle = function () { return (isTroman ? 'partiet \"' : 'kategorin \"') + self.party.Name + '\"'; };\r\n self.getItem = function () { return self.party; };\r\n\r\n self.loadItem(party).then(function (data) {\r\n self.party = data;\r\n });\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\n/**\r\n * @typedef { import('../objects/Attendance').Attendance } Attendance\r\n * @typedef { import('../objects/Person').PersonEarning } PersonEarning\r\n */\r\n\r\nexport class EmployerOptions {\r\n /**\r\n * @param {string} name\r\n * @param {PersonEarning} earning\r\n */\r\n constructor(name, earning) {\r\n this.name = name;\r\n this.earning = earning;\r\n }\r\n\r\n /**\r\n * @param {Attendance} attendance\r\n * @returns {EmployerOptions[]}\r\n */\r\n static fromAttendance(attendance) {\r\n const date = attendance.Meeting.Date;\r\n const person = attendance.getPerson();\r\n if (person == null) {\r\n return [];\r\n }\r\n const groups = _.groupBy(person.Earnings, x => x.EmployerName);\r\n const options = _.map(groups, (earnings, name) => {\r\n let earningAtDate = _.find(earnings, x => x.ValidFrom <= date && (x.ValidTo == null || date <= x.ValidTo));\r\n return new EmployerOptions(name, earningAtDate);\r\n });\r\n return _.filter(options, x => x.earning);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { TromanError } from '../../common/TromanError';\r\nimport { certificationStates, remunerationTypes } from '../objects/Payslip';\r\nimport { claimTypes } from '../objects/Claim';\r\n\r\n/**\r\n * @typedef { import('./PayslipModel').PayslipModel } PayslipModel\r\n * @typedef { import('./PaymentModel').PaymentModel } PaymentModel\r\n * @typedef { import('../objects/Payment').Payment } Payment\r\n * @typedef { import('../objects/Payslip').Remuneration } Remuneration\r\n * @typedef { import('../objects/Claim').Claim } Claim\r\n * @typedef { import('./calculation/CalculatedPayment').CalculatedPayment } CalculatedPayment\r\n * @typedef { import('./calculation/CalculatedRemuneration').CalculatedRemuneration } CalculatedRemuneration\r\n * @typedef { import('./calculation/PolitikerCalculator').PolitikerCalculator } PolitikerCalculator\r\n*/\r\n\r\n// instanceof would cause circular dependency and it would take a while to refactor\r\nexport const paymentGroupInstanceTypes = Object.freeze({\r\n unknown: 'unknown',\r\n simple: 'simple',\r\n complex: 'complex',\r\n proposedClaim: 'proposedClaim',\r\n proposedTime: 'proposedTime',\r\n});\r\n\r\n/**\r\n * @param {PaymentGroupModel} group\r\n */\r\nfunction groupTypeOrder(group) {\r\n switch (group.paymentGroupInstanceType) {\r\n case paymentGroupInstanceTypes.proposedTime: return 0;\r\n case paymentGroupInstanceTypes.proposedClaim: return 1;\r\n case paymentGroupInstanceTypes.complex: return 2;\r\n case paymentGroupInstanceTypes.simple: return 3;\r\n default: return 100;\r\n }\r\n}\r\n\r\n/**\r\n * @param {number} remunerationType\r\n */\r\nexport function remunerationTypeOrder(remunerationType) {\r\n switch (remunerationType) {\r\n case remunerationTypes.claim: return 1;\r\n case remunerationTypes.calculatedMeeting: return 2;\r\n case remunerationTypes.calculatedTravel: return 3;\r\n case remunerationTypes.payment: return 4;\r\n }\r\n}\r\n\r\n/**\r\n * @param {number} claimType\r\n * @returns {number} in range [0,1000)\r\n */\r\nfunction claimTypeOrder(claimType) {\r\n switch (claimType) {\r\n case claimTypes.lostIncomeAmount: return 0;\r\n case claimTypes.lostIncomeNumber: return 10;\r\n case claimTypes.lostIncomeRate: return 20;\r\n case claimTypes.legacyTravel: return 100;\r\n case claimTypes.travel: return 110;\r\n case claimTypes.parking: return 120;\r\n case claimTypes.congestion: return 130;\r\n case claimTypes.publicTransport: return 140;\r\n case claimTypes.travelTime: return 150;\r\n case claimTypes.expense: return 200;\r\n case claimTypes.adjuster: return 300;\r\n default: return 500 + claimType;\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * @param {PaymentModel} a \r\n * @param {PaymentModel} b \r\n */\r\nexport function comparePaymentModel(a, b) {\r\n const awt = a.payment.WageType;\r\n const bwt = b.payment.WageType;\r\n if (awt.Code < bwt.Code) return -1;\r\n if (bwt.Code < awt.Code) return 1;\r\n if (awt.Name < bwt.Name) return -1;\r\n if (bwt.Name < awt.Name) return 1;\r\n return a.Id < b.Id ? 1 : -1;\r\n}\r\n\r\n/**\r\n * \r\n * @param {PaymentGroupModel} a \r\n * @param {PaymentGroupModel} b \r\n */\r\nexport function compareGroup(a, b) {\r\n\r\n const groupTypeDiff = groupTypeOrder(a) - groupTypeOrder(b);\r\n if (groupTypeDiff !== 0) {\r\n return groupTypeDiff;\r\n }\r\n\r\n const instanceDiff = a.compareTo(b);\r\n if (instanceDiff !== 0) {\r\n return instanceDiff;\r\n }\r\n\r\n if (a.hasClaim && b.hasClaim) {\r\n const typeDiff = claimTypeOrder(a.claim.ClaimType) - claimTypeOrder(b.claim.ClaimType);\r\n if (typeDiff !== 0) {\r\n return typeDiff;\r\n }\r\n return a.claim.Id < b.claim.Id ? -1 : 1;\r\n }\r\n\r\n if (a.isCollapsable && !b.isCollapsable) return 1;\r\n if (b.isCollapsable && !a.isCollapsable) return -1;\r\n\r\n if (a.hasCertification && !b.hasCertification) return -1;\r\n if (b.hasCertification && !a.hasCertification) return 1;\r\n\r\n if (a.payments.length === 0 && b.payments.length === 0) {\r\n if (a.isAdded || b.isAdded) return a.isAdded ? (b.isAdded ? 0 : -1) : 1; // should not happen\r\n return a.remuneration.Id < b.remuneration.Id ? -1 : 1;\r\n }\r\n\r\n if (a.payments.length === 0) return 1;\r\n if (b.payments.length === 0) return -1;\r\n\r\n let paycount = Math.min(a.payments.length, b.payments.length);\r\n\r\n for (let ii=0; ii b.payments.length) {\r\n return 1;\r\n }\r\n if (b.payments.length > a.payments.length) {\r\n return -1;\r\n }\r\n \r\n return 0;\r\n}\r\n\r\nexport class PaymentGroupModel {\r\n /**\r\n * @param { PayslipModel } payslipModel\r\n */\r\n constructor(payslipModel) {\r\n this.payslipModel = payslipModel;\r\n \r\n /** @type {Remuneration|null} */\r\n this.remuneration = null;\r\n\r\n /** @type {Claim|null} */\r\n this.claim = null;\r\n\r\n /** @type {PaymentModel[]} */\r\n this.payments = [];\r\n\r\n /** @type {Set} */\r\n this._removed = new Set();\r\n\r\n this.title = '';\r\n }\r\n\r\n sortPayments() {\r\n this.payments.sort(comparePaymentModel);\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} _other\r\n */\r\n compareTo(_other) {\r\n return 0;\r\n }\r\n \r\n // using instanceof would cause circular dependency\r\n get paymentGroupInstanceType() {\r\n return 'unknown';\r\n }\r\n\r\n get isCollapsable() {\r\n return false;\r\n }\r\n\r\n get hasCertification() {\r\n return this.remuneration != null && this.remuneration.CertificationState !== certificationStates.skipped;\r\n }\r\n\r\n get hasCompleted() {\r\n return this.remuneration != null && (this.remuneration.CertificationState === certificationStates.skipped || this.remuneration.CertificationState === certificationStates.certified);\r\n }\r\n\r\n get hasDetail() {\r\n return this.claim != null || this.hasCertification || this.remuneration?.AuditEntries.length > 0;\r\n }\r\n\r\n get certPending() {\r\n return this.remuneration?.CertificationState === certificationStates.pending;\r\n }\r\n\r\n get certRejected() {\r\n return this.remuneration?.CertificationState === certificationStates.rejected;\r\n }\r\n\r\n get certRecalled() {\r\n return this.remuneration?.CertificationState === certificationStates.recalled;\r\n }\r\n\r\n get certCertified() {\r\n return this.remuneration?.CertificationState === certificationStates.certified;\r\n }\r\n\r\n get isAdded() {\r\n return this.remuneration == null;\r\n }\r\n\r\n get isManuallyCalculated() {\r\n return false;\r\n }\r\n\r\n get hasClaim() {\r\n return this.claim != null;\r\n }\r\n\r\n checkChanges() {\r\n if (this._removed.size > 0) return true;\r\n return _.some(this.payments, x => x.needsSaving);\r\n }\r\n\r\n getTotalAmount() {\r\n return _.sumBy(this.payments, x => x.payment.Amount || 0);\r\n }\r\n\r\n _paymentsChanged() {\r\n }\r\n\r\n /**\r\n * @param {PaymentModel} existing\r\n * @param {Payment} payment\r\n */\r\n updatePayment(existing, payment) {\r\n if (existing.group !== this) throw new TromanError('payment_not_in_group');\r\n existing.payment = payment;\r\n existing.needsSaving = true;\r\n this._paymentsChanged();\r\n }\r\n\r\n /** \r\n * @param {PaymentModel} pm\r\n */\r\n removePayment(pm) {\r\n let pos = this.payments.indexOf(pm);\r\n if (pos >= 0) {\r\n this.payments = this.payments.slice();\r\n this.payments.splice(pos, 1);\r\n if (pm.payment.Id != null) {\r\n this._removed.add(pm.payment.Id);\r\n }\r\n this._paymentsChanged();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * \r\n * @param {(pm: PaymentModel)=>boolean} predicate\r\n */\r\n removeMatchingPayments(predicate) {\r\n let remaining = [];\r\n\r\n for (let pm of this.payments) {\r\n if (predicate(pm)) {\r\n if (pm.payment.Id != null){\r\n this._removed.add(pm.payment.Id);\r\n }\r\n } else {\r\n remaining.push(pm);\r\n }\r\n }\r\n\r\n if (this.payments.length !== remaining.length) {\r\n this.payments = remaining;\r\n this._paymentsChanged();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n createAdd() {\r\n return null;\r\n }\r\n\r\n createUpdate() {\r\n if (this.remuneration == null) return null;\r\n\r\n let result = {\r\n Id: this.remuneration.Id,\r\n UpdatePayments: this.payments.filter(x => x.needsSaving).map(x => x.payment),\r\n RemovePayments: Array.from(this._removed),\r\n };\r\n \r\n return result;\r\n }\r\n}\r\n","/**\r\n * @typedef { import('./PayslipModel').PayslipModel } PayslipModel\r\n * @typedef { import('./PaymentGroupModel').PaymentGroupModel } PaymentGroupModel\r\n * @typedef { import('./PaymentModel').PaymentModel } PaymentModel\r\n */\r\n\r\nexport class PaymentLock {\r\n constructor() {\r\n this._isLocked = false;\r\n this._lockedGroup = null;\r\n this._lockedPayslip = null;\r\n }\r\n\r\n get isLocked() {\r\n return this._isLocked;\r\n }\r\n\r\n reset() {\r\n this._isLocked = false;\r\n this._lockedGroup = null;\r\n this._lockedPayslip = null;\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} pgm\r\n */\r\n lockGroup(pgm) {\r\n this._isLocked = true;\r\n this._lockedGroup = pgm;\r\n this._lockedPayslip = pgm.payslipModel;\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} psm\r\n */\r\n lockPayslip(psm) {\r\n this._isLocked = true;\r\n this._lockedPayslip = psm;\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} pgm\r\n */\r\n isLockedForGroup(pgm) {\r\n return this._lockedGroup == pgm;\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} psm\r\n */\r\n isLockedForPayslip(psm) {\r\n return this._lockedPayslip === psm;\r\n }\r\n}\r\n","import { TromanError } from '../../common/TromanError';\r\n\r\n/**\r\n * @typedef { import('../objects/Payment').Payment } Payment\r\n * @typedef { import('./PaymentGroupModel').PaymentGroupModel } PaymentGroupModel\r\n * @typedef { import('./calculation/CalculatedPayment').CalculatedPayment } CalculatedPayment\r\n*/\r\n\r\nexport class PaymentModel {\r\n /**\r\n * @param {PaymentGroupModel} group\r\n * @param {Payment} payment\r\n */\r\n constructor(group, payment) {\r\n if (group == null) throw new TromanError('missing_argument');\r\n if (payment == null) throw new TromanError('missing_argument');\r\n\r\n this.group = group;\r\n this.payment = payment;\r\n\r\n this.selectedEmployer = null;\r\n this.needsSaving = false;\r\n this.isAutoTravel = false;\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} group\r\n * @param {Payment} payment\r\n */\r\n static fromOriginal(group, payment) {\r\n return new PaymentModel(group, payment);\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} group\r\n * @param {Payment} payment\r\n */\r\n static fromCreated(group, payment) {\r\n let model = new PaymentModel(group, payment);\r\n model.needsSaving = true;\r\n return model;\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} group\r\n * @param {CalculatedPayment} calculatedPayment\r\n */\r\n static fromCalculated(group, calculatedPayment) {\r\n let model = new PaymentModel(group, calculatedPayment.payment);\r\n model.needsSaving = true;\r\n model.selectedEmployer = calculatedPayment.chosenEmployer;\r\n return model;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { claimStates } from '../objects/Claim';\r\nimport { PolitikerCalculator } from './calculation/PolitikerCalculator';\r\nimport { StandardCalculator } from './calculation/StandardCalculator';\r\nimport { PayslipModel } from './PayslipModel';\r\n\r\n/**\r\n * @typedef { import('../objects/Payment').Payment } Payment\r\n * @typedef { import('../objects/Meeting').Meeting } Meeting\r\n * @typedef { import('../objects/Attendance').Attendance } Attendance\r\n * @typedef { import('../objects/Payslip').Payslip } Payslip\r\n * @typedef { import('../objects/WageCalculation').WageCalculation } WageCalculation\r\n * @typedef { import('../objects/PolitikerSettings').PolitikerSettings } PolitikerSettings\r\n*/\r\n\r\nexport class PayslipCollection {\r\n /**\r\n * @param {Meeting} meeting\r\n * @param {Payslip[]} payslips\r\n * @param {PolitikerSettings[]} politikerSettings\r\n * @param {WageCalculation} meetingWageCalculation\r\n */\r\n constructor(meeting, payslips, politikerSettings, meetingWageCalculation) {\r\n this.hasChanges = false;\r\n\r\n let politikerCalculator = null;\r\n\r\n this.isMissingPolitiker = false;\r\n if (politikerSettings != null && politikerSettings.length > 0) {\r\n politikerCalculator = PolitikerCalculator.forDate(meeting.Date, politikerSettings);\r\n if (politikerCalculator == null) {\r\n this.isMissingPolitiker = _.some(payslips, r => _.some(r.Claims, c => c.State === claimStates.reported));\r\n }\r\n }\r\n\r\n let meetingCalculator = null;\r\n if (meetingWageCalculation != null) {\r\n meetingCalculator = new StandardCalculator(meeting, meetingWageCalculation);\r\n }\r\n\r\n let models = _.map(payslips, x => new PayslipModel(this, x, politikerCalculator, meetingCalculator));\r\n this.payslipModels = PayslipModel.order(models);\r\n _.forEach(this.payslipModels, (x, i) => x.$$order = i);\r\n\r\n this.hasAnyTransactionIssues = this.payslipModels.some(x => x.hasTransactionIssues);\r\n this.hasAnyWarnings = this.payslipModels.some(x => x.hasWarnings);\r\n this.hasAnyMissingMeetingPayment = this.payslipModels.some(x => x.isMissingMeetingPayment);\r\n this.hasAnyPolitikerTasks = this.payslipModels.some(x => x.hasPolitikerTasks);\r\n this.hasAnyRejectedCertification = this.payslipModels.some(x => x.hasRejectedCertification);\r\n this.hasAnyRecalledCertification = this.payslipModels.some(x => x.hasRecalledCertification);\r\n }\r\n\r\n /**\r\n * @param {WageCalculation} wageCalculation\r\n * @param {(x:PayslipModel)=>boolean} payslipFilter\r\n */\r\n calculate(wageCalculation, payslipFilter) {\r\n if (this.payslipModels == null) return;\r\n if (this.payslipModels.length === 0) return;\r\n\r\n let calculator = new StandardCalculator(this.payslipModels[0].attendance.Meeting, wageCalculation);\r\n for (let rem of this.payslipModels) {\r\n if (payslipFilter == null || payslipFilter(rem)) {\r\n rem.recalculate(calculator);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n */\r\n payslipChanged(payslipModel) {\r\n this.hasChanges = payslipModel.needsSaving || _.some(this.payslipModels, x => x.needsSaving);\r\n this.hasAnyMissingMeetingPayment = payslipModel.isMissingMeetingPayment || _.some(this.payslipModels, x => x.isMissingMeetingPayment);\r\n this.hasAnyPolitikerTasks = payslipModel.hasPolitikerTasks || _.some(this.payslipModels, x => x.hasPolitikerTasks);\r\n this.hasAnyRejectedCertification = payslipModel.hasRejectedCertification || _.some(this.payslipModels, x => x.hasRejectedCertification);\r\n this.hasAnyRecalledCertification = payslipModel.hasRecalledCertification || _.some(this.payslipModels, x => x.hasRecalledCertification);\r\n }\r\n\r\n /**\r\n */\r\n countSelectedPayments() {\r\n return _.sumBy(this.payslipModels, rem => _.sumBy(rem.paymentGroups, pg => _.sumBy(pg.payments, p => p.$$selected ? 1 : 0)));\r\n }\r\n\r\n /**\r\n */\r\n removeSelectedPayments() {\r\n for (let rem of this.payslipModels) {\r\n rem.removeMatchingPayments(x => x.$$selected);\r\n }\r\n }\r\n\r\n approveAllPolitiker() {\r\n for (let rem of this.payslipModels) {\r\n rem.approveAllPolitiker();\r\n }\r\n }\r\n\r\n createUpdate() {\r\n let changed = _.filter(this.payslipModels, x => x.needsSaving);\r\n return {\r\n Updated: _.map(changed, x => x.createUpdate()),\r\n };\r\n }\r\n}","import \"./payslip.less\";\r\n\r\nimport { PaymentEditorModel } from \"./editor/PaymentEditorModel\";\r\nimport { paymentGroupInstanceTypes } from \"./PaymentGroupModel\";\r\n\r\n/**\r\n * @typedef { import('./PayslipModel').PayslipModel } PayslipModel\r\n * @typedef { import('./PaymentModel').PaymentModel } PaymentModel\r\n * @typedef { import('./PaymentGroupModel').PaymentGroupModel } PaymentGroupModel\r\n * @typedef { import('./PaymentLock').PaymentLock } PaymentLock\r\n * @typedef { import('../objects/Claim').Claim } Claim\r\n */\r\n\r\nclass PayslipComponentController {\r\n static $inject = ['dialogService'];\r\n\r\n constructor(dialogService) {\r\n this._dialogService = dialogService;\r\n\r\n /** @type {PayslipModel} */\r\n this.model = null;\r\n /** @type {PaymentLock} */\r\n this.paymentLock = null;\r\n /** @type {PaymentEditorModel}*/\r\n this.editing = null;\r\n }\r\n\r\n $onChanges(changed) {\r\n if (changed.model) {\r\n this.closeEdit();\r\n\r\n if (this.model) {\r\n this.attendance = this.model.attendance;\r\n this.mission = this.attendance.Mission;\r\n this.person = this.attendance.getPerson();\r\n this.missionType = this.attendance.getMissionType();\r\n this.organization = this.attendance.getOrganization();\r\n } else {\r\n this.attendance = null;\r\n this.mission = null;\r\n this.person = null;\r\n this.missionType = null;\r\n this.organization = null;\r\n }\r\n }\r\n }\r\n\r\n $onDestroy() {\r\n this.closeEdit();\r\n }\r\n\r\n isLocked() {\r\n return this.paymentLock != null && this.paymentLock.isLocked;\r\n }\r\n\r\n showCeremonyInfo() {\r\n if (this.model.attendance.CeremonyId) {\r\n this._dialogService.showCeremony(this.model.attendance.CeremonyId);\r\n }\r\n }\r\n\r\n showTimeReportInfo() {\r\n if (this.model.hasTimeReportInfo) {\r\n this._dialogService.showAttendanceTimeReport(this.model.attendance);\r\n }\r\n }\r\n\r\n isLockTarget() {\r\n return this.paymentLock.isLockedForPayslip(this.model);\r\n }\r\n\r\n addPayment() {\r\n this.adding = PaymentEditorModel.createNew(this.paymentLock, this.model);\r\n }\r\n\r\n closeEdit() {\r\n if (this.adding != null) {\r\n this.adding = null;\r\n this.paymentLock.reset();\r\n }\r\n }\r\n\r\n /**\r\n * Classes that need to be on the container ('payment-group') and not on the component itself\r\n * @param {PaymentGroupModel} pg\r\n */\r\n getPaymentGroupClass(pg) {\r\n let ret = '';\r\n if (this.paymentLock.isLockedForGroup(pg)) {\r\n ret = 'payment-group--editing ';\r\n }\r\n\r\n switch (pg.paymentGroupInstanceType) {\r\n case paymentGroupInstanceTypes.proposedClaim:\r\n case paymentGroupInstanceTypes.proposedTime:\r\n case paymentGroupInstanceTypes.complex:\r\n ret += 'payment-group--bordered ';\r\n break;\r\n }\r\n\r\n if (pg.isCollapsable) {\r\n ret += 'payment-group--collapsable ';\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoPayslip', {\r\n template: require('./payslip.html'),\r\n bindings: {\r\n model: '<',\r\n wageTypes: '<',\r\n paymentLock: '<',\r\n },\r\n controller: PayslipComponentController\r\n});\r\n","import \"./payslip.less\";\r\n\r\nangular.module(\"tromanWeb\").component('ergoPayslipList', {\r\n template: require('./payslipList.html'),\r\n bindings: {\r\n collection: '<',\r\n wageTypes: '<',\r\n paymentLock: '<',\r\n onFilter: '&',\r\n onSelection: '&',\r\n },\r\n});\r\n","import * as _ from 'lodash';\r\nimport { TransactionErrors } from '../objects/WageGroup';\r\nimport { getAttendanceOrdering, timeReportCommand, timeReportState } from '../objects/Attendance';\r\nimport { wageModelGroups } from '../objects/WageType';\r\nimport { compareGroup } from './PaymentGroupModel';\r\nimport { ProposedGroupModel } from './proposed/ProposedGroupModel';\r\nimport { StandardCalculationContext } from './calculation/StandardCalculator';\r\nimport { certificationStates, remunerationTypes } from '../objects/Payslip';\r\nimport { ComplexGroupModel } from './complex/ComplexGroupModel';\r\nimport { SimpleGroupModel } from './simple/SimpleGroupModel';\r\nimport { ProposedTimeGroupModel } from './proposedTime/ProposedTimeGroupModel';\r\n\r\n/**\r\n * @typedef { import('../objects/Payment').Payment } Payment\r\n * @typedef { import('../objects/Claim').Claim } Claim\r\n * @typedef { import('../objects/Payslip').Remuneration } Remuneration\r\n * @typedef { import('../objects/Attendance').Attendance } Attendance\r\n * @typedef { import('../objects/Payslip').Payslip } Payslip\r\n * @typedef { import('../objects/WageCalculation').WageCalculation } WageCalculation\r\n * @typedef { import('./PayslipCollection').PayslipCollection } PayslipCollection\r\n * @typedef { import('./PaymentGroupModel').PaymentGroupModel } PaymentGroupModel\r\n * @typedef { import('./calculation/CalculatedPayment').CalculatedPayment } CalculatedPayment\r\n * @typedef { import('./calculation/StandardCalculator').StandardCalculator } StandardCalculator\r\n * @typedef { import('./calculation/PolitikerCalculator').PolitikerCalculator } PolitikerCalculator\r\n*/\r\n\r\nconst attendanceOrdering = getAttendanceOrdering(x => x.attendance);\r\n\r\n/**\r\n * @param {PayslipModel} payslipModel \r\n * @param {Remuneration} remuneration \r\n */\r\nfunction createExistingModel(payslipModel, remuneration) {\r\n if (remuneration.CertificationState === certificationStates.recalled || remuneration.CertificationState === certificationStates.rejected) {\r\n return ComplexGroupModel.create(payslipModel, remuneration);\r\n } else {\r\n return SimpleGroupModel.createExisting(payslipModel, remuneration);\r\n }\r\n}\r\n\r\n/**\r\n * @param {PaymentGroupModel} pg\r\n */\r\nfunction isPolitikerResponsePending(pg) {\r\n if (pg instanceof ProposedGroupModel) {\r\n return !pg.hasResponded;\r\n } else if (pg instanceof ProposedTimeGroupModel) {\r\n return !pg.hasResponded;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport class PayslipModel {\r\n\r\n /**\r\n * @param {PayslipCollection} collection\r\n * @param {Payslip} payslip\r\n * @param {PolitikerCalculator} politikerCalculator\r\n * @param {StandardCalculator} meetingCalculator\r\n */\r\n constructor(collection, payslip, politikerCalculator, meetingCalculator) {\r\n this.collection = collection;\r\n this.politikerCalculator = politikerCalculator;\r\n\r\n this.needsSaving = false;\r\n this.hasPayments = false;\r\n\r\n this.attendance = payslip.Attendance;\r\n this.warnings = payslip.Warnings;\r\n this.enableLostIncome = !!payslip.EnableLostIncome;\r\n this.hasWarnings = payslip.Warnings && payslip.Warnings.length > 0;\r\n\r\n this.presentTime = this.attendance.PresentTime;\r\n this.servingTime = this.attendance.ServingTime;\r\n \r\n this.isWaitingTimeReport = false;\r\n\r\n this.paymentGroups = [];\r\n /** @type {ProposedTimeGroupModel} */\r\n this.timeReportGroup = null;\r\n\r\n if (this.attendance.TimeReport) {\r\n const tr = this.attendance.TimeReport;\r\n \r\n this.hasTimeReportInfo = tr.State !== timeReportState.recalled;\r\n\r\n if (tr.State === timeReportState.reported) {\r\n this.timeReportGroup = ProposedTimeGroupModel.create(this, meetingCalculator);\r\n this.paymentGroups.push(this.timeReportGroup);\r\n } else if (tr.State === timeReportState.requested || tr.State === timeReportState.rejected) {\r\n this.isWaitingTimeReport = true;\r\n }\r\n }\r\n\r\n for (let nc of payslip.NewClaims) {\r\n this.paymentGroups.push(ProposedGroupModel.create(this, nc, politikerCalculator));\r\n }\r\n\r\n for (let rem of payslip.Remunerations) {\r\n this.paymentGroups.push(createExistingModel(this, rem));\r\n }\r\n\r\n this.paymentGroups.sort(compareGroup);\r\n\r\n this._validate();\r\n this._updateDerived();\r\n }\r\n\r\n _validate() {\r\n this.transactionIssues = [];\r\n\r\n if (this.attendance.isLegacy()) {\r\n this.transactionIssues.push(TransactionErrors.isLegacy);\r\n } else {\r\n if (!this.attendance.Mission.EmployeeNumber) {\r\n this.transactionIssues.push(TransactionErrors.noEmployeeNumber);\r\n }\r\n\r\n const p = this.attendance.Mission.Person;\r\n if (!p) {\r\n this.transactionIssues.push(TransactionErrors.isVacant);\r\n } else if (p.PersonalNumber == null || p.PersonalNumber.length != 13) {\r\n this.transactionIssues.push(TransactionErrors.noPersonalNumber);\r\n }\r\n }\r\n\r\n this.transactionIssuesString = this.transactionIssues.map(x => x.short).join(', ');\r\n this.hasTransactionIssues = this.transactionIssues.length > 0;\r\n }\r\n\r\n _updateDerived() {\r\n this.hasPayments = false;\r\n this.needsSaving = false;\r\n this.isMissingMeetingPayment = (this.attendance.isLegacy() || this.attendance.Mission.HasMeetingPay) && (this.presentTime != null && this.presentTime.length > 0);\r\n this.hasPolitikerTasks = false;\r\n this.hasRejectedCertification = false;\r\n this.hasRecalledCertification = false;\r\n this.totalAmount = 0;\r\n\r\n for (let pg of this.paymentGroups) {\r\n this.needsSaving = this.needsSaving || pg.checkChanges();\r\n this.hasPayments = this.hasPayments || pg.payments.length > 0;\r\n this.isMissingMeetingPayment = this.isMissingMeetingPayment && !pg.payments.some(x => x.payment.WageType.WageModelGroup === wageModelGroups.meeting);\r\n \r\n this.hasRejectedCertification = this.hasRejectedCertification || pg.certRejected;\r\n this.hasRecalledCertification = this.hasRecalledCertification || pg.certRecalled;\r\n \r\n this.hasPolitikerTasks = this.hasPolitikerTasks || isPolitikerResponsePending(pg);\r\n\r\n this.totalAmount = this.totalAmount + pg.getTotalAmount();\r\n }\r\n }\r\n\r\n _paymentsChanged() {\r\n this._updateDerived();\r\n this.collection.payslipChanged(this);\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} _pg\r\n */\r\n paymentGroupChanged(_pg) {\r\n this._paymentsChanged();\r\n }\r\n\r\n /**\r\n * @param {ProposedTimeGroupModel} pg \r\n * @param {boolean} accept \r\n */\r\n proposedTimeChanged(pg, accept) {\r\n if (accept) {\r\n this.presentTime = pg.presentTime;\r\n this.servingTime = pg.servingTime;\r\n this._paymentsChanged();\r\n } else {\r\n this.presentTime = this.attendance.PresentTime;\r\n this.servingTime = this.attendance.ServingTime;\r\n this._paymentsChanged();\r\n }\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} pg\r\n * @param {Claim} newClaim\r\n */\r\n claimRecalled(pg, newClaim) {\r\n let index = this.paymentGroups.indexOf(pg);\r\n if (index >= 0) {\r\n this.paymentGroups = this.paymentGroups.slice();\r\n this.paymentGroups[index] = ProposedGroupModel.create(this, newClaim, this.politikerCalculator);\r\n this.paymentGroups.sort(compareGroup);\r\n this._paymentsChanged();\r\n }\r\n }\r\n\r\n /**\r\n * @param {PaymentGroupModel} pg\r\n * @param {Remuneration} newrem\r\n */\r\n certificationRecalled(pg, newrem) {\r\n let index = this.paymentGroups.indexOf(pg);\r\n if (index >= 0) {\r\n this.paymentGroups = this.paymentGroups.slice();\r\n this.paymentGroups[index] = createExistingModel(this, newrem);\r\n this.paymentGroups.sort(compareGroup);\r\n this._paymentsChanged();\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentGroupModel} pg \r\n */\r\n remunerationDeleted(pg) {\r\n let index = this.paymentGroups.indexOf(pg);\r\n if (index >= 0) {\r\n this.paymentGroups = this.paymentGroups.slice();\r\n this.paymentGroups.splice(index, 1);\r\n this._paymentsChanged();\r\n }\r\n }\r\n\r\n /**\r\n * Calculates payments using calculator.\r\n * @param {StandardCalculator} calculator\r\n */\r\n recalculate(calculator) {\r\n let newGroups = _.reject(this.paymentGroups, x => x.isManuallyCalculated);\r\n let hasRemoved = newGroups.length !== this.paymentGroups.length;\r\n let hasCalculated = false;\r\n\r\n if (calculator != null) {\r\n let ctx = new StandardCalculationContext(this.attendance);\r\n ctx.skipMeeting = _.some(newGroups, pg => _.some(pg.payments, x => x.payment.WageType.WageModelGroup === wageModelGroups.meeting));\r\n ctx.skipTravel = _.some(newGroups, pg => _.some(pg.payments, x => x.payment.WageType.WageModelGroup === wageModelGroups.travel));\r\n ctx.presentTime = this.presentTime;\r\n ctx.servingTime = this.servingTime;\r\n\r\n let meetingPayments = calculator.calculateMeeting(ctx);\r\n if (meetingPayments.length > 0) {\r\n newGroups.push(SimpleGroupModel.createCalculated(this, remunerationTypes.calculatedMeeting, calculator.rules.WageCalculation, meetingPayments));\r\n hasCalculated = true;\r\n }\r\n\r\n let travelPayments = calculator.calculateTravel(ctx);\r\n if (travelPayments.length > 0) {\r\n newGroups.push(SimpleGroupModel.createCalculated(this, remunerationTypes.calculatedTravel, calculator.rules.WageCalculation, travelPayments));\r\n hasCalculated = true;\r\n }\r\n\r\n if (hasCalculated) {\r\n newGroups.sort(compareGroup);\r\n }\r\n }\r\n\r\n if (hasRemoved || hasCalculated) {\r\n this.paymentGroups = newGroups;\r\n this._paymentsChanged();\r\n }\r\n }\r\n\r\n approveAllPolitiker() {\r\n if (!this.hasPolitikerTasks) return;\r\n\r\n for (let pg of this.paymentGroups) {\r\n if (isPolitikerResponsePending(pg)) {\r\n pg.accept();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {Payment} payment\r\n */\r\n addPayment(payment) {\r\n let group = SimpleGroupModel.createManual(this, remunerationTypes.payment, [payment]);\r\n this.paymentGroups = _.concat(this.paymentGroups, group);\r\n this._paymentsChanged();\r\n return group.payments[0];\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentModel} existing\r\n * @param {Payment} updated\r\n */\r\n updatePayment(existing, updated) {\r\n existing.group.updatePayment(existing, updated);\r\n this._paymentsChanged();\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentModel} paymentModel\r\n */\r\n removePayment(paymentModel) {\r\n if (paymentModel.group.removePayment(paymentModel)) {\r\n this._paymentsChanged();\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {(pm: PaymentModel)=>boolean} predicate\r\n */\r\n removeMatchingPayments(predicate) {\r\n let affected = false;\r\n\r\n for (let group of this.paymentGroups) {\r\n if (group.removeMatchingPayments(predicate)) {\r\n affected = true;\r\n }\r\n }\r\n\r\n if (affected) {\r\n this._paymentsChanged();\r\n }\r\n }\r\n\r\n createUpdate() {\r\n var ret = {\r\n AttendanceId: this.attendance.Id,\r\n Attendance: null,\r\n RowVersion: this.attendance.RowVersion,\r\n AddRemunerations: [],\r\n UpdateRemunerations: [],\r\n ClaimRejections: [],\r\n };\r\n\r\n if (this.timeReportGroup != null && this.timeReportGroup.hasResponded) {\r\n ret.Attendance = {\r\n PresentTime: this.presentTime,\r\n ServingTime: this.servingTime,\r\n Comment: this.attendance.Comment,\r\n };\r\n\r\n if (this.timeReportGroup.hasAccepted) {\r\n ret.Attendance.TimeReportOperation = timeReportCommand.accept;\r\n } else if (this.timeReportGroup.hasRejected) {\r\n ret.Attendance.TimeReportOperation = timeReportCommand.reject;\r\n ret.Attendance.RejectTimeReportMessage = this.timeReportGroup.rejectionMessage;\r\n }\r\n }\r\n\r\n for (let pg of this.paymentGroups) {\r\n if ((pg instanceof ProposedGroupModel) && pg.hasRejected) {\r\n ret.ClaimRejections.push({\r\n Id: pg.claim.Id,\r\n RejectionMessage: pg.rejectionMessage,\r\n });\r\n } else if (pg.isAdded) {\r\n let add = pg.createAdd();\r\n if (_.isArray(add)) {\r\n ret.AddRemunerations.push(...add);\r\n } else if (add != null) {\r\n ret.AddRemunerations.push(add);\r\n }\r\n } else if (pg.checkChanges()) {\r\n let update = pg.createUpdate();\r\n if (update != null) {\r\n ret.UpdateRemunerations.push(update);\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n /**\r\n * \r\n * @param {PayslipModel[]} collection\r\n * @returns {PayslipModel[]}\r\n */\r\n static order(collection) {\r\n return _.orderBy(collection, attendanceOrdering);\r\n }\r\n}\r\n","/**\r\n * @typedef { import('../../objects/Payment').Payment } Payment\r\n */\r\n\r\nexport class CalculatedPayment {\r\n /**\r\n * @param {Payment} payment\r\n */\r\n constructor(payment) {\r\n this.payment = payment;\r\n this.chosenEmployer = null;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BigNumber } from 'bignumber.js';\r\nimport { Payment } from '../../objects/Payment';\r\nimport { TimeString } from '../../misc/TimeString';\r\nimport { TromanError } from '../../../common/TromanError';\r\nimport { wageModelInfos } from '../../objects/WageType';\r\nimport { MeetingAccountSource } from '../../objects/Meeting';\r\nimport { CalculatedPayment } from './CalculatedPayment';\r\n\r\n/**\r\n * @typedef { import('../../objects/Attendance').Attendance } Attendance\r\n * @typedef { import('../../objects/WageCalculation').WageCalculation } WageCalculation\r\n * @typedef { import('../../objects/WageType').WageType } WageType\r\n * @typedef { import('../../objects/WageType').VariablePrice } VariablePrice\r\n*/\r\n\r\n/**\r\n * \r\n * @param {Number|string} unitPrice\r\n * @param {Number|string} number\r\n */\r\nexport function calculateAmount(unitPrice, number) {\r\n var up = new BigNumber(unitPrice);\r\n var n = new BigNumber(number);\r\n return up.times(n).dp(4).toNumber();\r\n}\r\n\r\n/**\r\n * \r\n * @param {Number} amount\r\n */\r\nexport function roundAmount(value) {\r\n return new BigNumber(value).dp(4).toNumber();\r\n}\r\n\r\n/**\r\n * \r\n * @param {Number} unitPrice\r\n */\r\nexport function roundUnitPrice(value) {\r\n return new BigNumber(value).dp(4).toNumber();\r\n}\r\n\r\n/**\r\n * \r\n * @param {Number} value\r\n */\r\nexport function roundNumber(value) {\r\n return new BigNumber(value).dp(8).toNumber();\r\n}\r\n\r\nexport class ActiveWageType {\r\n /**\r\n * \r\n * @param {WageType} wageType\r\n * @param {any} period\r\n */\r\n constructor(wageType, period) {\r\n this.wageType = wageType;\r\n this.period = period;\r\n this.wageModel = wageModelInfos[period.WageModel];\r\n }\r\n\r\n /**\r\n * \r\n * @param {WageType} wageType\r\n * @param {Date} date\r\n */\r\n static forDate(wageType, date) {\r\n if (wageType == null) return null;\r\n\r\n const period = wageType.getPeriod(date);\r\n\r\n if (!period) {\r\n throw new TromanError('missing_period', `Löneartsuppgifter saknas för mötesdatumet (${wageType.Code} ${wageType.Name}).`);\r\n }\r\n\r\n return new ActiveWageType(wageType, period);\r\n }\r\n}\r\n\r\nexport class PaymentsCalculation {\r\n\r\n /**\r\n *\r\n * @param {Meeting} attendance\r\n */\r\n constructor(attendance) {\r\n this.attendance = attendance;\r\n\r\n this.accountSource = attendance.Meeting.AccountSource;\r\n this.meetingOrganizationAccount = attendance.Meeting.Organization.Account;\r\n this.meetingAccount = attendance.Meeting.Account;\r\n\r\n /** @type {CalculatedPayment[]} */\r\n this.result = [];\r\n }\r\n\r\n /**\r\n * \r\n * @param {String} timeString\r\n */\r\n getDuration(timeString) {\r\n var ts = TimeString.parse(timeString);\r\n if (ts == null) throw new TromanError('invalid_timestring', 'Felaktig tidsangivelse.');\r\n if (!ts.isClosed) throw new TromanError('open_timestring', 'Tidsangivelse saknar sluttid.');\r\n if (ts.duration < 0) throw new TromanError('invalid_duration');\r\n return ts.duration;\r\n }\r\n\r\n /**\r\n * \r\n * @param {ActiveWageType} awt\r\n */\r\n createBasicPayment(awt) {\r\n let payment = new Payment();\r\n \r\n payment.WageTypeId = awt.wageType.Id;\r\n payment.WageType = awt.wageType;\r\n\r\n if (awt.period.UseMeetingAccountSettings) {\r\n if (this.accountSource === MeetingAccountSource.meetingOrganization) {\r\n payment.Account = this.meetingOrganizationAccount;\r\n } else if (this.accountSource === MeetingAccountSource.meetingAccount) {\r\n payment.Account = this.meetingAccount;\r\n } else {\r\n payment.Account = this.attendance.Mission.MandatePeriod.Organization.Account;\r\n }\r\n } else {\r\n payment.Account = awt.period.Account;\r\n }\r\n\r\n return new CalculatedPayment(payment);\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} minutes\r\n */\r\n calculateNumberForMinutes(awt, minutes) {\r\n const wtp = awt.period;\r\n const subperiods = Math.ceil(minutes / wtp.SubPeriod);\r\n const periods = subperiods * wtp.SubPeriod / wtp.UnitPeriod;\r\n return periods;\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} minutes\r\n */\r\n addTimePayment(awt, minutes) {\r\n if (awt.wageModel.id !== 0) throw new TromanError('invalid_wage_model');\r\n if (!awt.wageModel.hasUnitPrice) throw new TromanError('invalid_wage_model');\r\n\r\n const periods = this.calculateNumberForMinutes(awt, minutes);\r\n return this.addNumberPayment(awt, periods);\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} minutes\r\n */\r\n addVariablePayment(awt, minutes) {\r\n if (awt.wageModel.id !== 1) throw new TromanError('invalid_wage_model');\r\n\r\n /** @type {VariablePrice} */\r\n const vp = awt.period.VariablePrice;\r\n const amount = vp.findAmount(minutes);\r\n if (amount == null) throw new TromanError('missing_variable', 'Variabelt pris saknas för ' + minutes + ' minuter.');\r\n\r\n const periods = this.calculateNumberForMinutes(awt, minutes);\r\n\r\n let cp = this.createBasicPayment(awt);\r\n cp.payment.Number = roundNumber(periods);\r\n cp.payment.Amount = roundAmount(amount);\r\n cp.payment.UnitPrice = null;\r\n\r\n this.result.push(cp);\r\n return cp;\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} number\r\n */\r\n addNumberPayment(awt, number) {\r\n if (awt.wageModel.hasUnitPrice && _.isNumber(awt.period.UnitPrice)) {\r\n return this.addNumberUnitPayment(awt, number, awt.period.UnitPrice);\r\n } else {\r\n return this.addNumberOnlyPayment(awt, number);\r\n }\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} number\r\n */\r\n addNumberOnlyPayment(awt, number) {\r\n if (typeof number !== 'number') throw new TromanError('invalid_number');\r\n if (number <= 0) throw new TromanError('invalid_argument');\r\n\r\n let cp = this.createBasicPayment(awt);\r\n cp.payment.Number = roundNumber(number);\r\n this.result.push(cp);\r\n return cp;\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} number\r\n * @param {number} unitPrice\r\n */\r\n addNumberUnitPayment(awt, number, unitPrice) {\r\n if (typeof number !== 'number') throw new TromanError('invalid_number');\r\n if (typeof unitPrice !== 'number') throw new TromanError('invalid_unitprice');\r\n if (number <= 0) throw new TromanError('invalid_argument');\r\n\r\n let cp = this.createBasicPayment(awt);\r\n cp.payment.Number = roundNumber(number);\r\n cp.payment.UnitPrice = roundUnitPrice(unitPrice);\r\n cp.payment.Amount = calculateAmount(unitPrice, number);\r\n this.result.push(cp);\r\n return cp;\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} amount\r\n */\r\n addAmountPayment(awt, amount) {\r\n if (typeof amount !== 'number') throw new TromanError('invalid_number');\r\n\r\n let cp = this.createBasicPayment(awt);\r\n cp.payment.Amount = roundAmount(amount);\r\n\r\n this.result.push(cp);\r\n return cp;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { BigNumber } from 'bignumber.js';\r\nimport { TromanError } from \"../../../common/TromanError\";\r\nimport { ActiveWageType, PaymentsCalculation } from \"./PaymentsCalculation\";\r\nimport { claimTypes } from '../../objects/Claim';\r\nimport { wageModels } from '../../objects/WageType';\r\nimport { lostIncomeBenefitsMode } from '../../objects/PolitikerSettings';\r\n\r\n/**\r\n * @typedef { import('../../objects/Attendance').Attendance } Attendance\r\n * @typedef { import('../../objects/Claim').Claim } Claim\r\n * @typedef { import('../../objects/Claim').ClaimNugget } ClaimNugget\r\n * @typedef { import('../../objects/Claim').TravelNugget } TravelNugget\r\n * @typedef { import('../../objects/Claim').ParkingNugget } ParkingNugget\r\n * @typedef { import('../../objects/Claim').CongestionNugget } CongestionNugget\r\n * @typedef { import('../../objects/Claim').PublicTransportNugget } PublicTransportNugget\r\n * @typedef { import('../../objects/Claim').TravelTimeNugget } TravelTimeNugget\r\n * @typedef { import('../../objects/Claim').ReceiptExpenseNugget } ReceiptExpenseNugget\r\n * @typedef { import('../../objects/Claim').AdjusterNugget } AdjusterNugget\r\n * @typedef { import('../../objects/Claim').LostIncomeAmountNugget } LostIncomeAmountNugget\r\n * @typedef { import('../../objects/Claim').LostIncomeNumberNugget } LostIncomeNumberNugget\r\n * @typedef { import('../../objects/Claim').LostIncomeRateNugget } LostIncomeRateNugget\r\n * @typedef { import('../../objects/PolitikerSettings').PolitikerSettings } PolitikerSettings\r\n * @typedef { import('../EmployerOptions').EmployerOptions } EmployerOptions\r\n */\r\n\r\n/**\r\n * \r\n * @param {Number|string} amount\r\n * @param {Number|string} percent\r\n */\r\nfunction calculateAmountPercentDP2(amount, percent) {\r\n const a = new BigNumber(amount);\r\n const p = new BigNumber(percent);\r\n return a.times(p.dividedBy(100)).dp(2).toNumber();\r\n}\r\n\r\n/**\r\n * \r\n * @param {Number} value\r\n */\r\nfunction numberFromMinutesDP2(value) {\r\n return new BigNumber(value).dividedBy(60).dp(2).toNumber();\r\n}\r\n\r\nexport class PolitikerCalculator {\r\n /**\r\n * @param {Date} date\r\n * @param {PolitikerSettings} settings\r\n */\r\n constructor(date, settings) {\r\n\r\n this.settings = settings;\r\n\r\n // TODO only try to get period if the wage type is actually used.\r\n this.awtVat = ActiveWageType.forDate(settings.Vat.WageType, date);\r\n this.awtLostIncomeAmount = ActiveWageType.forDate(settings.LostIncomeAmount.WageType, date);\r\n this.awtLostIncomeNumberUnit = ActiveWageType.forDate(settings.LostIncomeNumberUnit.WageType, date);\r\n this.awtLostIncomeNumber = ActiveWageType.forDate(settings.LostIncomeNumber.WageType, date);\r\n this.awtRetirementBenefits = ActiveWageType.forDate(settings.RetirementBenefits.WageType, date);\r\n this.awtVacationBenefits = ActiveWageType.forDate(settings.VacationBenefits.WageType, date);\r\n this.awtTravel = ActiveWageType.forDate(settings.Travel.WageType, date);\r\n this.awtParking = ActiveWageType.forDate(settings.Parking.WageType, date);\r\n this.awtCongestion = ActiveWageType.forDate(settings.Congestion.WageType, date);\r\n this.awtPublicTransport = ActiveWageType.forDate(settings.PublicTransport.WageType, date);\r\n this.awtTravelTime = ActiveWageType.forDate(settings.TravelTime.WageType, date);\r\n this.awtExpenses = ActiveWageType.forDate(settings.Expenses.WageType, date);\r\n this.awtAdjuster = ActiveWageType.forDate(settings.Adjuster.WageType, date);\r\n }\r\n\r\n /**\r\n * @param {Date} date\r\n * @param {PolitikerSettings[]} settingsList\r\n */\r\n static forDate(date, settingsList) {\r\n let inorder = _.orderBy(settingsList, x => x.StartDate, ['desc']);\r\n let settings = _.find(inorder, x => x.StartDate <= date);\r\n\r\n if (settings == null) {\r\n return null;\r\n } else {\r\n return new PolitikerCalculator(date, settings);\r\n }\r\n }\r\n\r\n /**\r\n * @param {Attendance} attendance\r\n * @param {Claim} claim\r\n * @param {EmployerOptions?} selectedEmployer\r\n */\r\n calculateClaim(attendance, claim, selectedEmployer) {\r\n let calculation = new PolitikerCalculation(this, attendance);\r\n calculation.selectedEmployer = selectedEmployer || null;\r\n calculation.calculateClaim(claim);\r\n return calculation.result;\r\n }\r\n\r\n /**\r\n * @param {Claim} claim\r\n */\r\n isEmployerDependent(claim) {\r\n return claim.ClaimType === claimTypes.lostIncomeNumber\r\n && this.awtLostIncomeNumber\r\n && this.awtLostIncomeNumber.wageModel.id === wageModels.lostIncomeIndividual;\r\n }\r\n}\r\n\r\nexport class PolitikerCalculation extends PaymentsCalculation {\r\n /**\r\n * @param {PolitikerCalculator} calculator\r\n * @param {Attendance} attendance\r\n */\r\n constructor(calculator, attendance) {\r\n super(attendance);\r\n this.calculator = calculator;\r\n /** @type {EmployerOptions?} */\r\n this.selectedEmployer = null;\r\n }\r\n\r\n /**\r\n * @param {Claim} claim\r\n */\r\n calculateClaim(claim) {\r\n switch (claim.ClaimType) {\r\n case claimTypes.lostIncomeAmount:\r\n this.calculateLostIncomeAmount(claim.Nugget);\r\n break;\r\n case claimTypes.lostIncomeNumber:\r\n this.calculateLostIncomeNumber(claim.Nugget);\r\n break;\r\n case claimTypes.lostIncomeRate:\r\n this.calculateLostIncomeRate(claim.Nugget);\r\n break;\r\n case claimTypes.legacyTravel:\r\n this.calculateLegacyTravel(claim.Nugget);\r\n break;\r\n case claimTypes.travel:\r\n this.calculateTravel(claim.Nugget);\r\n break;\r\n case claimTypes.parking:\r\n this.calculateParking(claim.Nugget);\r\n break;\r\n case claimTypes.congestion:\r\n this.calculateCongestion(claim.Nugget);\r\n break;\r\n case claimTypes.publicTransport:\r\n this.calculatePublicTransport(claim.Nugget);\r\n break;\r\n case claimTypes.travelTime:\r\n this.calculateTravelTime(claim.Nugget);\r\n break;\r\n case claimTypes.expense:\r\n this.calculateExpense(claim.Nugget);\r\n break;\r\n case claimTypes.adjuster:\r\n this.calculateAdjuster(claim.Nugget);\r\n break;\r\n default:\r\n throw new TromanError('unknown_claim_type', 'Anspråkstypen stöds ej');\r\n }\r\n }\r\n\r\n /**\r\n * @param {number} amount\r\n */\r\n tryAddVat(amount) {\r\n if (amount && amount > 0) {\r\n if (this.calculator.awtVat == null) {\r\n throw new TromanError('missing_vat_wagetype', 'Det finns ingen konfigurerad löneart för moms');\r\n }\r\n this.addAmountPayment(this.calculator.awtVat, amount);\r\n }\r\n }\r\n\r\n /**\r\n * @param {ClaimNugget} nugget\r\n * @param {number} lostIncomeAmount\r\n */\r\n calculateLostIncomeBenefits(nugget, lostIncomeAmount) {\r\n const retirementMode = this.calculator.settings.RetirementBenefits.Mode;\r\n if (retirementMode === lostIncomeBenefitsMode.always || (retirementMode === lostIncomeBenefitsMode.byrequest && nugget.RequestRetirementBenefits)) {\r\n\r\n if (this.calculator.awtRetirementBenefits == null) {\r\n throw new TromanError('missing_retirementbenefits_wagetype', 'Det finns ingen konfigurerad löneart för pensionsförmån');\r\n }\r\n\r\n this.addAmountPayment(this.calculator.awtRetirementBenefits, calculateAmountPercentDP2(lostIncomeAmount, this.calculator.settings.RetirementBenefits.Percent));\r\n }\r\n\r\n const vacationMode = this.calculator.settings.VacationBenefits.Mode;\r\n if (vacationMode === lostIncomeBenefitsMode.always || (vacationMode === lostIncomeBenefitsMode.byrequest && nugget.RequestVacationBenefits)) {\r\n\r\n if (this.calculator.awtVacationBenefits == null) {\r\n throw new TromanError('missing_vacationbenefits_wagetype', 'Det finns ingen konfigurerad löneart för semesterersättning');\r\n }\r\n\r\n this.addAmountPayment(this.calculator.awtVacationBenefits, calculateAmountPercentDP2(lostIncomeAmount, this.calculator.settings.VacationBenefits.Percent));\r\n }\r\n }\r\n\r\n /**\r\n * @param {LostIncomeRateNugget} nugget\r\n */\r\n calculateLostIncomeRate(nugget) {\r\n if (this.calculator.awtLostIncomeNumberUnit == null) {\r\n throw new TromanError('missing_lostincome_numberunit_wagetype', 'Det finns ingen konfigurerad löneart för förlorad inkomst (antal & á-pris)');\r\n }\r\n let cp = this.addNumberUnitPayment(this.calculator.awtLostIncomeNumberUnit, nugget.Hours, nugget.HourlyRate);\r\n this.calculateLostIncomeBenefits(nugget, cp.payment.Amount);\r\n }\r\n \r\n /**\r\n * @param {LostIncomeAmountNugget} nugget\r\n */\r\n calculateLostIncomeAmount(nugget) {\r\n if (this.calculator.awtLostIncomeAmount == null) {\r\n throw new TromanError('missing_lostincome_amount_wagetype', 'Det finns ingen konfigurerad löneart för förlorad inkomst (belopp)');\r\n }\r\n let cp = this.addAmountPayment(this.calculator.awtLostIncomeAmount, nugget.Amount);\r\n this.calculateLostIncomeBenefits(nugget, cp.payment.Amount);\r\n }\r\n \r\n /**\r\n * @param {LostIncomeNumberNugget} nugget\r\n */\r\n calculateLostIncomeNumber(nugget) {\r\n const awt = this.calculator.awtLostIncomeNumber;\r\n\r\n if (awt == null) {\r\n throw new TromanError('missing_lostincome_number_wagetype', 'Det finns ingen konfigurerad löneart för förlorad inkomst (antal)');\r\n }\r\n\r\n if (awt.wageModel.id == wageModels.lostIncomeIndividual) {\r\n if (this.selectedEmployer) {\r\n let cp = this.addNumberUnitPayment(awt, nugget.Hours, this.selectedEmployer.earning.UnitPrice);\r\n cp.chosenEmployer = this.selectedEmployer.name;\r\n this.calculateLostIncomeBenefits(nugget, cp.payment.Amount);\r\n }\r\n } else {\r\n this.addNumberPayment(awt, nugget.Hours);\r\n }\r\n }\r\n\r\n /**\r\n * @param {LegacyTravelExpenseNugget} nugget\r\n */\r\n calculateLegacyTravel(nugget) {\r\n if (nugget.DrivingDistance && nugget.DrivingDistance > 0) {\r\n if (this.calculator.awtTravel == null) {\r\n throw new TromanError('missing_travel_wagetype', 'Det finns ingen konfigurerad löneart för km-ersättning');\r\n }\r\n this.addNumberPayment(this.calculator.awtTravel, nugget.DrivingDistance);\r\n }\r\n\r\n if (nugget.Parking && nugget.Parking > 0) {\r\n if (this.calculator.awtParking == null) {\r\n throw new TromanError('missing_parking_wagetype', 'Det finns ingen konfigurerad löneart för parkering');\r\n }\r\n this.addAmountPayment(this.calculator.awtParking, nugget.Parking);\r\n\r\n this.tryAddVat(nugget.ParkingVat);\r\n }\r\n\r\n if (nugget.Congestion && nugget.Congestion > 0) {\r\n if (this.calculator.awtCongestion == null) {\r\n throw new TromanError('missing_congestion_wagetype', 'Det finns ingen konfigurerad löneart för trängselskatt');\r\n }\r\n this.addAmountPayment(this.calculator.awtCongestion, nugget.Congestion);\r\n }\r\n\r\n if (nugget.PublicTransport && nugget.PublicTransport > 0) {\r\n if (this.calculator.awtPublicTransport == null) {\r\n throw new TromanError('missing_publictransport_wagetype', 'Det finns ingen konfigurerad löneart för kollektivtrafik');\r\n }\r\n this.addAmountPayment(this.calculator.awtPublicTransport, nugget.PublicTransport);\r\n\r\n this.tryAddVat(nugget.PublicTransportVat);\r\n }\r\n\r\n if (nugget.TravelTime && nugget.TravelTime > 0) {\r\n if (this.calculator.awtTravelTime == null) {\r\n throw new TromanError('missing_traveltime_wagetype', 'Det finns ingen konfigurerad löneart för restid');\r\n }\r\n let number = numberFromMinutesDP2(nugget.TravelTime);\r\n this.addNumberPayment(this.calculator.awtTravelTime, number);\r\n }\r\n }\r\n \r\n /**\r\n * @param {TravelNugget} nugget\r\n */\r\n calculateTravel(nugget) {\r\n if (this.calculator.awtTravel == null) {\r\n throw new TromanError('missing_travel_wagetype', 'Det finns ingen konfigurerad löneart för km-ersättning');\r\n }\r\n this.addNumberPayment(this.calculator.awtTravel, nugget.DrivingDistance);\r\n }\r\n\r\n /**\r\n * @param {ParkingNugget} nugget\r\n */\r\n calculateParking(nugget) {\r\n if (this.calculator.awtParking == null) {\r\n throw new TromanError('missing_parking_wagetype', 'Det finns ingen konfigurerad löneart för parkering');\r\n }\r\n this.addAmountPayment(this.calculator.awtParking, nugget.Parking);\r\n\r\n this.tryAddVat(nugget.ParkingVat);\r\n }\r\n\r\n /**\r\n * @param {CongestionNugget} nugget\r\n */\r\n calculateCongestion(nugget) {\r\n if (this.calculator.awtCongestion == null) {\r\n throw new TromanError('missing_congestion_wagetype', 'Det finns ingen konfigurerad löneart för trängselskatt');\r\n }\r\n this.addAmountPayment(this.calculator.awtCongestion, nugget.Congestion);\r\n }\r\n\r\n /**\r\n * @param {PublicTransportNugget} nugget\r\n */\r\n calculatePublicTransport(nugget) {\r\n if (this.calculator.awtPublicTransport == null) {\r\n throw new TromanError('missing_publictransport_wagetype', 'Det finns ingen konfigurerad löneart för kollektivtrafik');\r\n }\r\n this.addAmountPayment(this.calculator.awtPublicTransport, nugget.PublicTransport);\r\n\r\n this.tryAddVat(nugget.PublicTransportVat);\r\n }\r\n\r\n /**\r\n * @param {TravelTimeNugget} nugget\r\n */\r\n calculateTravelTime(nugget) {\r\n if (this.calculator.awtTravelTime == null) {\r\n throw new TromanError('missing_traveltime_wagetype', 'Det finns ingen konfigurerad löneart för restid');\r\n }\r\n let number = numberFromMinutesDP2(nugget.TravelTime);\r\n this.addNumberPayment(this.calculator.awtTravelTime, number);\r\n }\r\n\r\n /**\r\n * @param {ReceiptExpenseNugget} nugget\r\n */\r\n calculateExpense(nugget) {\r\n if (this.calculator.awtExpenses == null) {\r\n throw new TromanError('missing_expenses_wagetype', 'Det finns ingen konfigurerad löneart för utlägg');\r\n }\r\n this.addAmountPayment(this.calculator.awtExpenses, nugget.Amount);\r\n\r\n this.tryAddVat(nugget.Vat);\r\n }\r\n\r\n /**\r\n */\r\n calculateAdjuster() {\r\n if (this.calculator.awtAdjuster == null) {\r\n throw new TromanError('missing_adjuster_wagetype', 'Det finns ingen konfigurerad löneart för justeringsarvode');\r\n }\r\n this.addNumberPayment(this.calculator.awtAdjuster, 1);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\n\r\nimport { TromanError } from '../../../common/TromanError';\r\nimport { PaymentsCalculation, ActiveWageType } from \"./PaymentsCalculation\";\r\n\r\n/**\r\n * @typedef { import('../../objects/Attendance').Attendance } Attendance\r\n */\r\n\r\nclass StandardRules {\r\n /**\r\n * @param {WageCalculation} wageCalculation\r\n * @param {Date} date\r\n */\r\n constructor(wageCalculation, date) {\r\n function findPeriod(wcwt) {\r\n let awt = ActiveWageType.forDate(wcwt.WageType, date);\r\n\r\n if (awt != null) {\r\n if (awt.wageType.RequireUnitPrice && awt.period.UnitPrice == null) {\r\n throw new TromanError('invalid_wagetype', 'Felaktig beräkningsregel, lönearten \"' + awt.wageType.display + '\" saknas à-pris');\r\n }\r\n }\r\n\r\n return awt;\r\n }\r\n\r\n this.WageCalculation = wageCalculation;\r\n this.Ordinary = _.compact(_.map(wageCalculation.WageTypes.Ordinary, findPeriod));\r\n this.Substitute = _.compact(_.map(wageCalculation.WageTypes.Substitute, findPeriod));\r\n this.Serving = _.compact(_.map(wageCalculation.WageTypes.Serving, findPeriod));\r\n this.Travel = findPeriod(wageCalculation.WageTypes.Travel);\r\n }\r\n}\r\n\r\nexport class StandardCalculationContext {\r\n /**\r\n * @param {Attendance} attendance\r\n */\r\n constructor(attendance) {\r\n this.attendance = attendance;\r\n /** @type {string} */\r\n this.presentTime = null;\r\n /** @type {string} */\r\n this.servingTime = null;\r\n this.skipMeeting = false;\r\n this.skipTravel = false;\r\n }\r\n}\r\n\r\nexport class StandardCalculator {\r\n\r\n /**\r\n *\r\n * @param {Meeting} meeting\r\n * @param {WageCalculation} wageCalculation\r\n */\r\n constructor(meeting, wageCalculation) {\r\n this.accountSource = meeting.AccountSource;\r\n this.meetingOrganizationAccount = meeting.Organization.Account;\r\n this.meetingAccount = meeting.Account;\r\n this.rules = new StandardRules(wageCalculation, meeting.Date);\r\n }\r\n\r\n /**\r\n *\r\n * @param {StandardCalculationContext} ctx\r\n */\r\n calculateMeeting(ctx) { \r\n if (ctx.attendance.isLegacy()) {\r\n return [];\r\n }\r\n\r\n let calculation = new StandardCalculation(ctx, this.rules);\r\n calculation.calculateMeeting();\r\n return calculation.result;\r\n }\r\n\r\n /**\r\n *\r\n * @param {StandardCalculationContext} ctx\r\n */\r\n calculateTravel(ctx) {\r\n if (ctx.attendance.isLegacy()) {\r\n return [];\r\n }\r\n\r\n let calculation = new StandardCalculation(ctx, this.rules);\r\n calculation.calculateTravel();\r\n return calculation.result;\r\n }\r\n}\r\n\r\nexport class StandardCalculation extends PaymentsCalculation {\r\n\r\n /**\r\n * @param {StandardCalculationContext} ctx\r\n * @param {StandardRules} rules\r\n */\r\n constructor(ctx, rules) {\r\n super(ctx.attendance);\r\n this.ctx = ctx;\r\n this.rules = rules;\r\n }\r\n\r\n calculateMeeting() { \r\n const mission = this.ctx.attendance.Mission;\r\n\r\n if (this.ctx.skipMeeting) return;\r\n if (!mission.HasMeetingPay) return;\r\n\r\n if (mission.MissionType.IsSubstitute) {\r\n this.calculateSubstitute();\r\n } else {\r\n this.calculateOrdinary();\r\n }\r\n }\r\n\r\n /**\r\n * \r\n */\r\n calculateSubstitute() {\r\n let time = this.getDuration(this.ctx.presentTime);\r\n if (time > 0) {\r\n if (this.rules.Serving.length > 0) {\r\n const serveTime = this.getDuration(this.ctx.servingTime);\r\n this._calcPayments(serveTime, this.rules.Serving);\r\n time = time - serveTime;\r\n }\r\n\r\n this._calcPayments(time, this.rules.Substitute);\r\n }\r\n }\r\n\r\n /**\r\n * \r\n */\r\n calculateOrdinary() {\r\n const time = this.getDuration(this.ctx.presentTime);\r\n this._calcPayments(time, this.rules.Ordinary);\r\n }\r\n\r\n /**\r\n * \r\n * @param {number} time\r\n * @param {ActiveWageType[]} wts\r\n */\r\n _calcPayments(time, wts) {\r\n let remaining = time;\r\n\r\n for (let ii = 0; ii < wts.length; ++ii) {\r\n if (remaining <= 0) break;\r\n\r\n const isLast = ii === wts.length - 1;\r\n remaining -= this._calcMeetingPayment(wts[ii], remaining, isLast);\r\n }\r\n\r\n if (remaining > 0) {\r\n // TODO\r\n }\r\n }\r\n\r\n /**\r\n * @param {ActiveWageType} awt\r\n * @param {number} minutes\r\n * @param {boolean} final\r\n */\r\n _calcMeetingPayment(awt, minutes, final) {\r\n if (awt.wageModel.id === 0) {\r\n const time = final ? minutes : Math.min(minutes, awt.period.UnitPeriod);\r\n this.addTimePayment(awt, time);\r\n return time;\r\n } else if (awt.wageModel.id === 1) {\r\n const time = final ? minutes : Math.min(minutes, awt.period.UnitPeriod);\r\n this.addVariablePayment(awt, minutes);\r\n return time;\r\n } else if (awt.wageModel.id === 2) {\r\n this.addNumberPayment(awt, 1);\r\n return 0;\r\n } else {\r\n throw new TromanError('invalid_wage_model');\r\n }\r\n }\r\n\r\n /**\r\n */\r\n calculateTravel() {\r\n if (this.ctx.skipTravel) return;\r\n if (!this.rules.Travel) return;\r\n\r\n const km = this.attendance.Mission.TravelPayNumber;\r\n const time = this.getDuration(this.ctx.presentTime);\r\n if (km > 0 && time > 0) {\r\n this.addNumberPayment(this.rules.Travel, km);\r\n }\r\n }\r\n}","import * as _ from 'lodash';\r\nimport { PaymentGroupModel, paymentGroupInstanceTypes, remunerationTypeOrder } from \"../PaymentGroupModel\";\r\nimport { PaymentModel } from \"../PaymentModel\";\r\nimport { certificationStates, remunerationOperations } from '../../objects/Payslip';\r\n\r\n/**\r\n * @typedef { import(\"../../objects/Payslip\").Remuneration } Remuneration\r\n */\r\n\r\nexport class ComplexGroupModel extends PaymentGroupModel {\r\n /**\r\n * @param { PayslipModel } payslipModel\r\n * @param { Remuneration } remuneration\r\n */\r\n\r\n constructor(payslipModel, remuneration) {\r\n super(payslipModel);\r\n this.remuneration = remuneration;\r\n this.operation = remunerationOperations.none;\r\n this.claim = remuneration.Claim || null;\r\n /** @type {PaymentModel[]} */\r\n this.payments = _.map(remuneration.Payments, x => PaymentModel.fromOriginal(this, x));\r\n this.hasActivePayments = _.some(this.payments, x => !x.payment.IsLocked);\r\n /** @type {string?} */\r\n this._message = null;\r\n this.sortPayments();\r\n }\r\n\r\n get paymentGroupInstanceType() {\r\n return paymentGroupInstanceTypes.complex;\r\n }\r\n\r\n get isRejected() {\r\n return this.remuneration.CertificationState === certificationStates.rejected;\r\n }\r\n\r\n get isRecalled() {\r\n return this.remuneration.CertificationState === certificationStates.recalled;\r\n }\r\n\r\n get willCertify() {\r\n return this.operation === remunerationOperations.certify;\r\n }\r\n\r\n get willRejectClaim() {\r\n return this.operation === remunerationOperations.rejectClaim;\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentGroupModel} other \r\n */\r\n compareTo(other) {\r\n if (!(other instanceof ComplexGroupModel)) return 0;\r\n return remunerationTypeOrder(this.remuneration.RemunerationType) - remunerationTypeOrder(other.remuneration.RemunerationType);\r\n }\r\n\r\n respondCertify(message) {\r\n this.operation = remunerationOperations.certify;\r\n this.message = message;\r\n this.payslipModel.paymentGroupChanged(this);\r\n }\r\n\r\n respondRejectClaim(message) {\r\n this.operation = remunerationOperations.rejectClaim;\r\n this.message = message;\r\n this.payslipModel.paymentGroupChanged(this);\r\n }\r\n\r\n clearResponse() {\r\n this.operation = remunerationOperations.none;\r\n this.message = null;\r\n this.payslipModel.paymentGroupChanged(this);\r\n }\r\n\r\n getTotalAmount() {\r\n if (this.operation === remunerationOperations.remove || this.operation === remunerationOperations.rejectClaim) {\r\n return 0;\r\n }\r\n return super.getTotalAmount();\r\n }\r\n\r\n checkChanges() {\r\n return this.operation !== remunerationOperations.none || super.checkChanges();\r\n }\r\n\r\n createUpdate() {\r\n let update = super.createUpdate();\r\n update.Operation = this.operation;\r\n update.Message = this.message;\r\n return update;\r\n }\r\n \r\n _paymentsChanged() {\r\n this.hasActivePayments = _.some(this.payments, x => !x.payment.IsLocked);\r\n if (!this.hasActivePayments) {\r\n this.operation = remunerationOperations.none;\r\n this.certificationMessage = null;\r\n }\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param { Remuneration } remuneration\r\n */\r\n static create(payslipModel, remuneration) {\r\n return new ComplexGroupModel(payslipModel, remuneration);\r\n }\r\n}","\r\nimport './complexRemuneration.less';\r\nimport * as _ from 'lodash';\r\nimport { certificationStates, remunerationOperations } from '../../objects/Payslip';\r\nimport { auditIncidents } from '../../objects/Audit';\r\nimport { GroupDialogResult } from '../groupDialog/GroupDialogResult';\r\nimport { getCertificationStateSubtitle, getRemunerationTitle } from '../../misc/textHelper';\r\n\r\n/**\r\n * @typedef { import('./ComplexGroupModel').ComplexGroupModel } ComplexGroupModel\r\n * @typedef { import('../PaymentLock').PaymentLock } PaymentLock\r\n * @typedef { import('../../objects/Claim').Claim } Claim\r\n * @typedef { import('../../server/ApiServer').ApiServer } ApiServer\r\n */\r\n\r\nclass ComplexRemunerationController {\r\n static $inject = ['tromanServer', 'downloadService', 'dialogService'];\r\n /**\r\n * @param {ApiServer} tromanServer\r\n * @param {any} downloadService\r\n * @param {any} dialogService\r\n */\r\n constructor(tromanServer, downloadService, dialogService) {\r\n this._tromanServer = tromanServer;\r\n this._downloadService = downloadService;\r\n this._dialogService = dialogService;\r\n this.editRejection = false;\r\n\r\n this.title = '';\r\n this.defaultSubtitle = '';\r\n\r\n this.isCertifying = false;\r\n this.certificationMessage = '';\r\n this.isRejectingClaim = false;\r\n this.rejectClaimMessage = '';\r\n\r\n /** @type {ComplexGroupModel} */\r\n this.paymentGroup = null;\r\n /** @type {PaymentLock} */\r\n this.paymentLock = null;\r\n }\r\n\r\n $onChanges(changed) {\r\n if (changed.paymentGroup) {\r\n if (this.paymentGroup != null) {\r\n this.title = getRemunerationTitle(this.paymentGroup.remuneration.RemunerationType, this.paymentGroup.claim?.ClaimType);\r\n this.defaultSubtitle = getCertificationStateSubtitle(this.paymentGroup.remuneration.CertificationState);\r\n if (this.paymentGroup.isRejected) {\r\n const rejections = _.filter(this.paymentGroup.remuneration.AuditEntries, x => x.Incident === auditIncidents.certificationRejected);\r\n this.lastRejection = _.maxBy(rejections, x => x.Timestamp);\r\n this.rejectClaimMessage = this.lastRejection.Message;\r\n }\r\n } else {\r\n this.title = '';\r\n this.defaultSubtitle = '';\r\n this.lastRejection = null;\r\n this.subClass = null;\r\n }\r\n }\r\n }\r\n\r\n get subClass() {\r\n switch (this.paymentGroup?.remuneration.CertificationState) {\r\n case certificationStates.recalled: return 'complex-remuneration-component--recalled';\r\n case certificationStates.rejected: return 'complex-remuneration-component--rejected';\r\n default: return '';\r\n }\r\n }\r\n\r\n get subtitle() {\r\n if (this.paymentGroup.operation === remunerationOperations.remove) {\r\n return 'raderas';\r\n } else if (this.paymentGroup.operation === remunerationOperations.certify) {\r\n return 'ny attest';\r\n } else if (this.paymentGroup.operation === remunerationOperations.rejectClaim) {\r\n return 'anspråk avslås';\r\n } else {\r\n return this.defaultSubtitle;\r\n }\r\n }\r\n\r\n remove() {\r\n this.paymentGroup.operation = remunerationOperations.remove;\r\n this.paymentGroup.payslipModel.paymentGroupChanged(this.paymentGroup);\r\n }\r\n\r\n certify() {\r\n if (this.paymentGroup.isRejected) {\r\n this.isCertifying = true;\r\n } else {\r\n this.paymentGroup.respondCertify(null);\r\n }\r\n }\r\n\r\n confirmCertification() {\r\n this.isCertifying = false;\r\n this.paymentGroup.respondCertify(this.certificationMessage);\r\n }\r\n \r\n cancelCertification() {\r\n this.isCertifying = false;\r\n }\r\n\r\n rejectClaim() {\r\n this.isRejectingClaim = true;\r\n }\r\n\r\n confirmRejectClaim(){\r\n this.isRejectingClaim = false;\r\n this.paymentGroup.respondRejectClaim(this.rejectClaimMessage);\r\n }\r\n\r\n cancelRejectClaim(){\r\n this.isRejectingClaim = false;\r\n }\r\n\r\n abort() {\r\n this.paymentGroup.operation = remunerationOperations.none;\r\n this.paymentGroup.certificationMessage = null;\r\n this.paymentGroup.payslipModel.paymentGroupChanged(this.paymentGroup);\r\n }\r\n\r\n get willRemovePayments() {\r\n return this.paymentGroup?.operation === remunerationOperations.remove || this.paymentGroup?.operation === remunerationOperations.rejectClaim;\r\n }\r\n\r\n get showAbort() {\r\n return this.paymentGroup?.operation !== remunerationOperations.none;\r\n }\r\n\r\n get showRemove() {\r\n if (this.showAbort) return false;\r\n if (this.isCertifying) return false;\r\n if (this.paymentGroup?.hasClaim) return false;\r\n return true;\r\n }\r\n\r\n get showCertify() {\r\n if (this.showAbort) return false;\r\n if (this.isCertifying) return false;\r\n if (!this.paymentGroup.hasActivePayments) return false;\r\n return true;\r\n }\r\n\r\n get showRejectClaim() {\r\n if (this.showAbort) return false;\r\n if (!this.paymentGroup.isRejected) return false;\r\n if (!this.paymentGroup?.hasClaim) return false;\r\n return true;\r\n }\r\n\r\n showDetails() {\r\n this._dialogService.showPaymentGroup(this.paymentGroup).then(result => {\r\n if (result instanceof GroupDialogResult) {\r\n result.apply(this.paymentGroup);\r\n }\r\n });\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoComplexRemuneration', {\r\n template: require('./complexRemuneration.html'),\r\n bindings: {\r\n paymentGroup: '<',\r\n paymentLock: '<',\r\n wageTypes: '<',\r\n },\r\n controller: ComplexRemunerationController,\r\n});\r\n","import './paymentEditor.less';\r\n\r\nimport * as _ from 'lodash';\r\nimport { MeetingAccountSource } from '../../objects/Meeting';\r\nimport { calculateAmount } from '../calculation/PaymentsCalculation';\r\nimport { wageModelGroups } from '../../objects/WageType';\r\n\r\n/**\r\n * @typedef { import('./PaymentEditorModel').PaymentEditorModel } PaymentEditorModel\r\n * @typedef { import('../../objects/Payment').Payment } Payment\r\n * @typedef { import('../../objects/Attendance').Attendance } Attendance\r\n * @typedef { import('../../objects/WageType').WageType } WageType\r\n*/\r\n\r\nclass PaymentEditorController {\r\n\r\n constructor() {\r\n this.missingPeriod = false;\r\n\r\n /** @type {PaymentEditorModel} */\r\n this.model = null;\r\n /** @type {Payment} */\r\n this.payment = null;\r\n /** @type {Attendance} */\r\n this.attendance = null;\r\n /** @type {WageType[]} */\r\n this.activeWageTypes = null;\r\n /** @type {WageType[]} */\r\n this.activeWageTypes = null;\r\n }\r\n\r\n /**\r\n * \r\n * @param {any} changed\r\n */\r\n $onChanges(changed) {\r\n if (changed.model) {\r\n if (this.model) {\r\n this.payment = this.model.payment;\r\n this.attendance = this.model.payslipModel.attendance;\r\n this.wasLocked = this.model.original?.payment.IsLocked;\r\n this.updateWageTypes();\r\n this.loadPeriod();\r\n } else {\r\n this.payment = null;\r\n this.attendance = null;\r\n this.operation = null;\r\n this.activeWageTypes = null;\r\n this.wasLocked = false;\r\n }\r\n }\r\n\r\n if (changed.wageTypes) {\r\n this.updateWageTypes();\r\n }\r\n }\r\n\r\n updateWageTypes() {\r\n if (this.model.enableLostIncome) {\r\n this.activeWageTypes = this.wageTypes;\r\n } else {\r\n this.activeWageTypes = _.filter(this.wageTypes, x => x.WageModelGroup !== wageModelGroups.lostIncome);\r\n }\r\n }\r\n\r\n isEmployerEnabled() {\r\n if (!this.period) return false;\r\n\r\n if (this.period.WageModel !== 4)\r\n return false;\r\n\r\n return !this.model.isPersisted;\r\n }\r\n\r\n isUnitPriceRequired() {\r\n return this.payment?.WageType?.RequireUnitPrice;\r\n }\r\n\r\n isUnitPriceEnabled() {\r\n if (!this.period) return false;\r\n\r\n const wm = this.period.WageModel;\r\n if (wm === 1 || wm === 4 || wm === 5) {\r\n return false;\r\n }\r\n\r\n return this.period.UnitPrice == null;\r\n }\r\n\r\n isNumberRequired() {\r\n return this.payment?.WageType?.RequireNumber || (this.isAmountRequired() && !this.isAmountEnabled());\r\n }\r\n\r\n isNumberEnabled() {\r\n if (!this.period) return false;\r\n\r\n if (this.isUnitPriceEnabled()) {\r\n return _.isFinite(this.payment.UnitPrice);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n isAmountRequired() {\r\n return this.payment?.WageType?.RequireAmount;\r\n }\r\n\r\n isAmountEnabled() {\r\n if (!this.period) return false;\r\n\r\n return !this.isNumberEnabled();\r\n }\r\n\r\n calculate() {\r\n if (!this.period) return null;\r\n\r\n if (this.period.WageModel === 1) {\r\n if (_.isFinite(this.payment.Number)) {\r\n const minutes = Math.round(this.payment.Number * this.period.UnitPeriod);\r\n return this.period.VariablePrice.findAmount(minutes);\r\n }\r\n } else {\r\n if (_.isFinite(this.payment.UnitPrice) && _.isFinite(this.payment.Number)) {\r\n return calculateAmount(this.payment.UnitPrice, this.payment.Number);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n numberChanged() {\r\n if (this.isNumberEnabled()) {\r\n this.payment.Amount = this.calculate();\r\n }\r\n }\r\n\r\n unitPriceChanged() {\r\n if (this.isUnitPriceEnabled()) {\r\n if (_.isFinite(this.payment.UnitPrice)) {\r\n this.payment.Amount = this.calculate();\r\n } else {\r\n this.payment.Number = null;\r\n this.payment.Amount = null;\r\n }\r\n }\r\n }\r\n\r\n wageTypeChanged() {\r\n this.loadPeriod();\r\n if (this.period != null) {\r\n if (this.period.UseMeetingAccountSettings) {\r\n if (this.attendance.Meeting.AccountSource === MeetingAccountSource.meetingOrganization) {\r\n this.payment.Account = this.attendance.Meeting.Organization.Account;\r\n } else if (this.attendance.Meeting.AccountSource === MeetingAccountSource.meetingAccount) {\r\n this.payment.Account = this.attendance.Meeting.Account;\r\n } else {\r\n if (this.attendance.isLegacy()) {\r\n this.payment.Account = \"\";\r\n } else {\r\n this.payment.Account = this.attendance.Mission.MandatePeriod.Organization.Account;\r\n }\r\n }\r\n } else {\r\n this.payment.Account = this.period.Account;\r\n }\r\n\r\n const wm = this.period.WageModel;\r\n if (wm === 1 || wm === 5) {\r\n this.payment.Number = null;\r\n this.payment.Amount = null;\r\n this.payment.UnitPrice = null;\r\n } else if (wm == 4) {\r\n const employers = this.model?.employerOptions;\r\n if (employers && employers.length > 0) {\r\n this.model.selectedEmployer = employers[0].name;\r\n this.payment.UnitPrice = employers[0].earning.UnitPrice;\r\n } else {\r\n this.model.selectedEmployer = null;\r\n this.payment.UnitPrice = null;\r\n }\r\n } else {\r\n this.payment.Number = null;\r\n this.payment.Amount = null;\r\n if (_.isFinite(this.period.UnitPrice)) {\r\n this.payment.UnitPrice = this.period.UnitPrice;\r\n } else {\r\n this.payment.UnitPrice = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n employerChanged() {\r\n if (this.payment == null) return;\r\n\r\n const opt = _.find(this.model?.employerOptions, x => x.name === this.model.selectedEmployer);\r\n if (opt) {\r\n this.payment.UnitPrice = opt.earning.UnitPrice;\r\n this.payment.Amount = this.calculate();\r\n } else {\r\n this.payment.UnitPrice = null;\r\n this.payment.Amount = this.calculate();\r\n }\r\n }\r\n\r\n loadPeriod() {\r\n const wt = this.payment.WageType;\r\n if (wt) {\r\n this.period = wt.getPeriod(this.attendance.Meeting.Date);\r\n this.missingPeriod = (this.period == null);\r\n } else {\r\n this.period = null;\r\n this.missingPeriod = false;\r\n }\r\n }\r\n\r\n apply() {\r\n this.model.apply();\r\n this.onClose();\r\n }\r\n\r\n remove() {\r\n this.model.remove();\r\n this.onClose();\r\n }\r\n\r\n abort() {\r\n this.onClose();\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoPaymentEditor', {\r\n template: require('./PaymentEditor.html'),\r\n bindings: {\r\n model: '<',\r\n wageTypes: '<',\r\n onClose: '&',\r\n },\r\n controller: PaymentEditorController\r\n});","import { EmployerOptions } from '../EmployerOptions';\r\nimport { Payment } from '../../objects/Payment';\r\n\r\n/**\r\n * @typedef { import('../PaymentLock').PaymentLock } PaymentLock\r\n * @typedef { import('../PayslipModel').PayslipModel } PayslipModel\r\n * @typedef { import('../PaymentModel').PaymentModel } PaymentModel\r\n*/\r\n\r\nexport class PaymentEditorModel {\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {Payment} payment\r\n */\r\n constructor(payslipModel, payment) {\r\n this.payslipModel = payslipModel;\r\n this.payment = payment;\r\n\r\n /** @type {string}*/\r\n this.selectedEmployer = null;\r\n /** @type {EmployerOptions[]} */\r\n this._employerOptions = null;\r\n /** @type {PaymentModel} */\r\n this.original = null;\r\n }\r\n\r\n get enableLostIncome() {\r\n return this.payslipModel.enableLostIncome;\r\n }\r\n\r\n get isNew() {\r\n return this.original == null;\r\n }\r\n\r\n get isPersisted() {\r\n return !!this.payment.Id;\r\n }\r\n\r\n get employerOptions() {\r\n if (this._employerOptions == null) {\r\n this._employerOptions = EmployerOptions.fromAttendance(this.payslipModel.attendance);\r\n }\r\n return this._employerOptions;\r\n }\r\n\r\n apply() {\r\n let pm = this.original;\r\n\r\n if (pm == null) {\r\n pm = this.payslipModel.addPayment(this.payment);\r\n } else {\r\n this.payslipModel.updatePayment(pm, this.payment);\r\n }\r\n\r\n pm.selectedEmployer = this.selectedEmployer;\r\n }\r\n\r\n remove() {\r\n if (this.original) {\r\n this.payslipModel.removePayment(this.original);\r\n }\r\n }\r\n\r\n /**\r\n * @param {PaymentLock} paymentLock\r\n * @param {PayslipModel} payslipModel\r\n */\r\n static createNew(paymentLock, payslipModel) {\r\n if (paymentLock == null || paymentLock.isLocked) return null;\r\n\r\n let model = new PaymentEditorModel(payslipModel, new Payment());\r\n \r\n paymentLock.lockPayslip(payslipModel);\r\n\r\n return model;\r\n }\r\n\r\n /**\r\n * @param {PaymentLock} paymentLock\r\n * @param {PaymentModel} paymentModel\r\n */\r\n static createExisting(paymentLock, paymentModel) {\r\n if (paymentLock == null || paymentLock.isLocked) return null;\r\n\r\n let payment = paymentModel.payment.clone();\r\n let model = new PaymentEditorModel(paymentModel.group.payslipModel, payment);\r\n model.selectedEmployer = paymentModel.selectedEmployer;\r\n model.original = paymentModel;\r\n\r\n paymentLock.lockGroup(paymentModel.group);\r\n\r\n return model;\r\n }\r\n}\r\n","import './groupDialog.less';\r\n\r\nimport * as _ from 'lodash';\r\nimport { claimTypes } from '../../objects/Claim';\r\nimport { getAttachmentTypeName } from '../../objects/Attachment';\r\nimport { AuditEntry } from '../../components/auditlog/auditlogComponent';\r\nimport { getCertificationState, getClaimStateText, getRemunerationTitle } from '../../misc/textHelper';\r\nimport { CertificationRecalledResult, ClaimRecalledResult, RemunerationDeletedResult } from './GroupDialogResult';\r\nimport { remunerationTypes } from '../../objects/Payslip';\r\nimport { SimpleGroupModel } from '../simple/SimpleGroupModel';\r\nimport { ProposedGroupModel } from '../proposed/ProposedGroupModel';\r\nimport { ComplexGroupModel } from '../complex/ComplexGroupModel';\r\n\r\n/**\r\n * @typedef { import('../PaymentGroupModel').PaymentGroupModel } PaymentGroupModel\r\n * @typedef { import('../../server/ApiServer').ApiServer } ApiServer\r\n */\r\n\r\nangular.module(\"tromanWeb\").controller('GroupDialogController', ['ObjectCache', 'tromanServer', 'downloadService', 'dialogService', '$uibModalInstance', '$scope', 'paymentGroup', \r\n /**\r\n * @param {ObjectCache} ObjectCache\r\n * @param {ApiServer} tromanServer\r\n * @param {any} downloadService\r\n * @param {any} $scope\r\n * @param {PaymentGroupModel} paymentGroup\r\n */\r\n function (ObjectCache, tromanServer, downloadService, dialogService, $uibModalInstance, $scope, paymentGroup) {\r\n\r\n ObjectCache.getAllUsers().then(result => {\r\n if (paymentGroup.remuneration != null) {\r\n this.audit = AuditEntry.generateAudit(paymentGroup.remuneration.AuditEntries, result);\r\n } else if (paymentGroup.claim != null) {\r\n this.audit = AuditEntry.generateAudit(paymentGroup.claim.AuditEntries, result);\r\n } else {\r\n this.audit = [];\r\n }\r\n });\r\n\r\n this.paymentGroup = paymentGroup;\r\n this.claimTypes = claimTypes;\r\n this.canRecallClaim = paymentGroup.hasClaim && !paymentGroup.isAdded;\r\n const certificationStarted = paymentGroup.certPending || paymentGroup.certCertified;\r\n this.canRecallCertification = certificationStarted && !paymentGroup.hasClaim;\r\n this.canDelete = !certificationStarted && !paymentGroup.hasClaim;\r\n\r\n if (paymentGroup instanceof SimpleGroupModel) {\r\n this.title = getRemunerationTitle(paymentGroup.remunerationType, paymentGroup.claim?.ClaimType);\r\n } else if (paymentGroup instanceof ProposedGroupModel) {\r\n this.title = getRemunerationTitle(remunerationTypes.claim, paymentGroup.claim?.ClaimType);\r\n } else if (paymentGroup instanceof ComplexGroupModel) {\r\n this.title = getRemunerationTitle(paymentGroup.remuneration.RemunerationType, paymentGroup.claim?.ClaimType);\r\n }\r\n\r\n if (paymentGroup.claim != null) {\r\n this.claim = paymentGroup.claim;\r\n this.nugget = paymentGroup.claim.Nugget;\r\n this.status = getClaimStateText(this.claim.State);\r\n if (paymentGroup.hasCertification) {\r\n this.status = this.status + ', ' + getCertificationState(paymentGroup.remuneration.CertificationState);\r\n }\r\n } else {\r\n this.status = getCertificationState(paymentGroup.remuneration?.CertificationState);\r\n }\r\n\r\n this.close = function () {\r\n $scope.$close();\r\n };\r\n\r\n this.deleteRemuneration = function() {\r\n dialogService.confirm(['Radera ersättning inklusive alla arvoden']).then(() => {\r\n tromanServer.Payroll.deleteRemuneration(paymentGroup.remuneration.Id).then(() => {\r\n $uibModalInstance.close(new RemunerationDeletedResult(paymentGroup.remuneration.Id));\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n });\r\n };\r\n\r\n this.attachmentTitle = function (attachment) {\r\n return getAttachmentTypeName(attachment.AttachmentType);\r\n };\r\n\r\n this.downloadAttachment = function (attachment) {\r\n tromanServer.Files.downloadAttachment(attachment.Id)\r\n .then(rsp => downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n };\r\n\r\n this.recallClaim = function () {\r\n dialogService.confirm(['Återkalla godkännande av anspråk?']).then(() => {\r\n tromanServer.Payroll.recallClaim({\r\n Id: paymentGroup.remuneration.Id,\r\n }).then(result => {\r\n $uibModalInstance.close(new ClaimRecalledResult(result));\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n });\r\n };\r\n\r\n this.recallCertification = function () {\r\n dialogService.confirm(['Återkalla begäran om attest']).then(() => {\r\n tromanServer.Payroll.recallCertification({\r\n Id: paymentGroup.remuneration.Id,\r\n }).then(result => {\r\n $uibModalInstance.close(new CertificationRecalledResult(result));\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n });\r\n };\r\n }\r\n]);\r\n","/**\r\n * @typedef { import('../PaymentGroupModel').PaymentGroupModel } PaymentGroupModel\r\n */\r\n\r\nimport { TromanError } from '../../../common/TromanError';\r\n\r\nexport class GroupDialogResult {\r\n /**\r\n * \r\n * @param {PaymentGroupModel} paymentGroup \r\n */\r\n apply(_paymentGroup) {\r\n }\r\n}\r\n\r\nexport class RemunerationDeletedResult extends GroupDialogResult {\r\n constructor(remunerationId) {\r\n super();\r\n if (!remunerationId) throw new TromanError('missing_remuneration_id');\r\n this.remunerationId = remunerationId;\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentGroupModel} paymentGroup \r\n */\r\n apply(paymentGroup) {\r\n paymentGroup.payslipModel.remunerationDeleted(paymentGroup);\r\n }\r\n}\r\n\r\nexport class CertificationRecalledResult extends GroupDialogResult {\r\n constructor(newRemuneration) {\r\n super();\r\n if (!newRemuneration) throw new TromanError('missing_new_remuneration');\r\n this.newRemuneration = newRemuneration;\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentGroupModel} paymentGroup \r\n */\r\n apply(paymentGroup) {\r\n paymentGroup.payslipModel.certificationRecalled(paymentGroup, this.newRemuneration);\r\n }\r\n}\r\n\r\nexport class ClaimRecalledResult extends GroupDialogResult {\r\n constructor(newClaim) {\r\n super();\r\n if (!newClaim) throw new TromanError('missing_new_claim');\r\n this.newClaim = newClaim;\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentGroupModel} paymentGroup \r\n */\r\n apply(paymentGroup) {\r\n paymentGroup.payslipModel.claimRecalled(paymentGroup, this.newClaim);\r\n }\r\n}\r\n","import { paymentGroupInstanceTypes } from \"../PaymentGroupModel\";\r\nimport { PaymentEditorModel } from \"../editor/PaymentEditorModel\";\r\nimport \"./paymentsList.less\";\r\n\r\nclass PaymentsListController {\r\n $onChanges(changed) {\r\n if (changed.paymentGroup) {\r\n if (this.paymentGroup != null) {\r\n this.foo = null;\r\n } else {\r\n this.foo = null;\r\n }\r\n }\r\n }\r\n\r\n $onDestroy() {\r\n this.closeEdit();\r\n }\r\n\r\n isLocked() {\r\n return this.paymentLock != null && this.paymentLock.isLocked;\r\n }\r\n\r\n closeEdit() {\r\n if (this.editing != null) {\r\n this.editing = null;\r\n this.paymentLock.reset();\r\n }\r\n }\r\n\r\n canSelect() {\r\n switch (this.paymentGroup.paymentGroupInstanceType) {\r\n case paymentGroupInstanceTypes.proposedClaim:\r\n case paymentGroupInstanceTypes.proposedTime:\r\n return false;\r\n default:\r\n return this.canEdit();\r\n }\r\n }\r\n\r\n canEdit() {\r\n return this.paymentGroup != null && !this.paymentGroup.certPending && !this.paymentGroup.certCertified;\r\n }\r\n\r\n editPayment(paymentModel) {\r\n this.editing = PaymentEditorModel.createExisting(this.paymentLock, paymentModel);\r\n }\r\n\r\n isEditingPayment(paymentModel) {\r\n return this.editing != null && this.editing.original === paymentModel;\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoPaymentsList', {\r\n template: require('./paymentsList.html'),\r\n bindings: {\r\n paymentGroup: '<',\r\n paymentLock: '<',\r\n wageTypes: '<',\r\n },\r\n controller: PaymentsListController,\r\n});\r\n","import \"./proposedTime.less\";\r\n\r\nimport * as _ from 'lodash';\r\nimport { auditIncidents } from \"../../objects/Audit\";\r\n\r\n/**\r\n * @typedef { import('./ProposedTimeGroupModel').ProposedTimeGroupModel } ProposedTimeGroupModel\r\n */\r\n\r\nclass ProposedTimeController {\r\n static $inject = ['tromanServer', 'downloadService', 'dialogService'];\r\n /**\r\n * @param {ApiServer} tromanServer\r\n * @param {any} downloadService\r\n * @param {any} dialogService\r\n */\r\n constructor(tromanServer, downloadService, dialogService) {\r\n this._tromanServer = tromanServer;\r\n this._downloadService = downloadService;\r\n this._dialogService = dialogService;\r\n this.editRejection = false;\r\n\r\n /** @type {ProposedTimeGroupModel} */\r\n this.paymentGroup = null;\r\n /** @type {PaymentLock} */\r\n this.paymentLock = null;\r\n }\r\n\r\n get rejectionForm() {\r\n return this._rejectionForm;\r\n }\r\n\r\n // A little hackish, force rejection form to be default dirty\r\n set rejectionForm(value) {\r\n this._rejectionForm = value;\r\n if (value) {\r\n value.$setDirty();\r\n }\r\n }\r\n\r\n $onChanges(changed) {\r\n if (changed.paymentGroup) {\r\n if (this.paymentGroup) {\r\n this.isSubstitute = this.paymentGroup.payslipModel.attendance.canServeAsSubstitute(); \r\n const rejections = _.filter(this.paymentGroup.payslipModel.attendance.TimeReport.AuditEntries, x => x.Incident === auditIncidents.timeRejected);\r\n this.lastRejection = _.maxBy(rejections, x => x.Timestamp);\r\n\r\n this.title = 'Ny närvarotid rapporterad från Troman Politiker';\r\n } else {\r\n this.timereport = null;\r\n this.title = null;\r\n }\r\n }\r\n }\r\n\r\n get isLocked() {\r\n return this.paymentLock.isLocked;\r\n }\r\n\r\n acceptTimeReport() {\r\n this.paymentGroup.accept();\r\n }\r\n\r\n rejectTimeReport() {\r\n this.paymentGroup.rejecting();\r\n this.paymentLock.lockGroup(this.paymentGroup);\r\n }\r\n\r\n confirmRejection() {\r\n this.paymentGroup.rejected();\r\n this.paymentLock.reset();\r\n }\r\n\r\n cancelRejection() {\r\n this.paymentGroup.reset();\r\n this.paymentLock.reset();\r\n }\r\n\r\n abortTimeReport() {\r\n this.paymentGroup.reset();\r\n }\r\n\r\n showDetails() {\r\n this._dialogService.showAttendanceTimeReport(this.paymentGroup.payslipModel.attendance);\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoProposedTime', {\r\n template: require('./proposedTime.html'),\r\n bindings: {\r\n paymentGroup: '<',\r\n paymentLock: '<',\r\n wageTypes: '<',\r\n },\r\n controller: ProposedTimeController,\r\n});\r\n\r\n","import * as _ from 'lodash';\r\nimport { remunerationTypes } from '../../objects/Payslip';\r\nimport { PaymentGroupModel, comparePaymentModel, paymentGroupInstanceTypes } from '../PaymentGroupModel';\r\nimport { PaymentModel } from '../PaymentModel';\r\nimport { StandardCalculationContext } from '../calculation/StandardCalculator';\r\nimport { TimeString } from '../../misc/TimeString';\r\n\r\n/**\r\n * @typedef { import('../PayslipModel').PayslipModel } PayslipModel\r\n * @typedef { import('../calculation/StandardCalculator').StandardCalculator } StandardCalculator\r\n */\r\n\r\nconst proposedState = Object.freeze({\r\n initial: 0,\r\n accepted: 1,\r\n rejecting: 2,\r\n rejected: 3,\r\n});\r\n\r\nexport class ProposedTimeGroupModel extends PaymentGroupModel {\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n */\r\n constructor(payslipModel) {\r\n super(payslipModel);\r\n\r\n this.presentTime = payslipModel.attendance.TimeReport.PresentTime;\r\n this.servingTime = payslipModel.attendance.TimeReport.ServingTime;\r\n\r\n const presentTimeString = TimeString.parse(this.presentTime);\r\n const meetingTimeString = TimeString.parse(payslipModel.attendance.Meeting.MeetingTime);\r\n this.isPresentOutsideMeeting = presentTimeString && (meetingTimeString == null || !meetingTimeString.contains(presentTimeString));\r\n \r\n this._state = proposedState.initial;\r\n this.rejectionMessage = '';\r\n }\r\n \r\n get paymentGroupInstanceType() {\r\n return paymentGroupInstanceTypes.proposedTime;\r\n }\r\n\r\n checkChanges() {\r\n return this.hasResponded;\r\n }\r\n\r\n get isInitial() {\r\n return this._state === proposedState.initial;\r\n }\r\n\r\n get hasAccepted() {\r\n return this._state === proposedState.accepted;\r\n }\r\n\r\n get hasRejected() {\r\n return this._state === proposedState.rejected;\r\n }\r\n\r\n get isRejecting() {\r\n return this._state === proposedState.rejecting;\r\n }\r\n\r\n get hasResponded() {\r\n return this.hasAccepted || this.hasRejected;\r\n }\r\n\r\n get canAccept() {\r\n return this.availableEmployers == null || this.selectedEmployer != null;\r\n }\r\n\r\n _setState(state) {\r\n if (this._state !== state) {\r\n this._state = state;\r\n this.payslipModel.paymentGroupChanged(this);\r\n }\r\n }\r\n\r\n accept() {\r\n this._setState(proposedState.accepted);\r\n this.payslipModel.proposedTimeChanged(this, true);\r\n }\r\n\r\n rejecting() {\r\n this._setState(proposedState.rejecting);\r\n }\r\n\r\n rejected() {\r\n this._setState(proposedState.rejected);\r\n }\r\n\r\n reset() {\r\n this._setState(proposedState.initial);\r\n this.payslipModel.proposedTimeChanged(this, false);\r\n }\r\n\r\n createAdd() {\r\n if (!this.hasAccepted) return null;\r\n\r\n let [travelPayments, meetingPayments] = _.partition(this.payments, x => x.isAutoTravel);\r\n\r\n let result = [];\r\n\r\n if (meetingPayments.length > 0) {\r\n result.push({\r\n RemunerationType: remunerationTypes.calculatedMeeting,\r\n AcceptsClaim: null,\r\n WageCalculationId: this.wageCalculation.Id,\r\n Payments: _.map(meetingPayments, x => x.payment),\r\n });\r\n }\r\n\r\n if (travelPayments.length > 0) {\r\n result.push({\r\n RemunerationType: remunerationTypes.calculatedTravel,\r\n AcceptsClaim: null,\r\n WageCalculationId: this.wageCalculation.Id,\r\n Payments: _.map(travelPayments, x => x.payment),\r\n });\r\n }\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {StandardCalculator} calculator\r\n */\r\n static create(payslipModel, calculator) {\r\n\r\n let result = new ProposedTimeGroupModel(payslipModel);\r\n \r\n if (calculator != null) {\r\n let ctx = new StandardCalculationContext(payslipModel.attendance);\r\n ctx.presentTime = payslipModel.attendance.TimeReport.PresentTime;\r\n ctx.servingTime = payslipModel.attendance.TimeReport.ServingTime;\r\n \r\n let calculatedMeeting = calculator.calculateMeeting(ctx);\r\n let meetingPayments = _.map(calculatedMeeting, x => PaymentModel.fromCalculated(result, x));\r\n meetingPayments.sort(comparePaymentModel);\r\n\r\n let calculatedTravel = calculator.calculateTravel(ctx);\r\n let travelPayments = _.map(calculatedTravel, x => PaymentModel.fromCalculated(result, x));\r\n _.forEach(travelPayments, x => { x.isAutoTravel = true; });\r\n travelPayments.sort(comparePaymentModel);\r\n\r\n result.payments = _.concat(meetingPayments, travelPayments);\r\n result.wageCalculation = calculator.rules.WageCalculation;\r\n }\r\n\r\n result.sortPayments();\r\n\r\n return result;\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport { remunerationTypes } from '../../objects/Payslip';\r\nimport { EmployerOptions } from '../EmployerOptions';\r\nimport { PaymentGroupModel, paymentGroupInstanceTypes } from '../PaymentGroupModel';\r\nimport { PaymentModel } from '../PaymentModel';\r\n\r\n/**\r\n * @typedef { import('../../objects/Claim').Claim } Claim\r\n * @typedef { import('../PayslipModel').PayslipModel } PayslipModel\r\n * @typedef { import('../calculation/PolitikerCalculator').PolitikerCalculator } PolitikerCalculator\r\n */\r\n\r\nconst proposedState = Object.freeze({\r\n initial: 0,\r\n accepted: 1,\r\n rejecting: 2,\r\n rejected: 3,\r\n});\r\n\r\nexport class ProposedGroupModel extends PaymentGroupModel {\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {PolitikerCalculator} calculator\r\n */\r\n constructor(payslipModel, calculator) {\r\n super(payslipModel);\r\n\r\n this.calculator = calculator;\r\n\r\n this._state = proposedState.initial;\r\n this.rejectionMessage = '';\r\n\r\n /** @type {EmployerOptions} */\r\n this.selectedEmployer = null;\r\n /** @type {EmployerOptions[]} */\r\n this.availableEmployers = null;\r\n }\r\n\r\n checkChanges() {\r\n return this.hasResponded;\r\n }\r\n\r\n get paymentGroupInstanceType() {\r\n return paymentGroupInstanceTypes.proposedClaim;\r\n }\r\n\r\n get isInitial() {\r\n return this._state === proposedState.initial;\r\n }\r\n\r\n get hasAccepted() {\r\n return this._state === proposedState.accepted;\r\n }\r\n\r\n get hasRejected() {\r\n return this._state === proposedState.rejected;\r\n }\r\n\r\n get isRejecting() {\r\n return this._state === proposedState.rejecting;\r\n }\r\n\r\n get hasResponded() {\r\n return this.hasAccepted || this.hasRejected;\r\n }\r\n\r\n get canAccept() {\r\n return this.availableEmployers == null || this.selectedEmployer != null;\r\n }\r\n\r\n _setState(state) {\r\n if (this._state !== state) {\r\n this._state = state;\r\n this.payslipModel.paymentGroupChanged(this);\r\n }\r\n }\r\n\r\n accept() {\r\n this._setState(proposedState.accepted);\r\n }\r\n\r\n rejecting() {\r\n this._setState(proposedState.rejecting);\r\n }\r\n\r\n rejected() {\r\n this._setState(proposedState.rejected);\r\n }\r\n\r\n reset() {\r\n this._setState(proposedState.initial);\r\n }\r\n\r\n /**\r\n */\r\n recalculate() {\r\n if (this.calculator != null) {\r\n let calculated = this.calculator.calculateClaim(this.payslipModel.attendance, this.claim, this.selectedEmployer);\r\n this.payments = _.map(calculated, x => PaymentModel.fromCalculated(this, x));\r\n this.payslipModel.paymentGroupChanged(this);\r\n }\r\n }\r\n\r\n createAdd() {\r\n if (!this.hasAccepted) return null;\r\n\r\n let result = {\r\n RemunerationType: remunerationTypes.claim,\r\n AcceptsClaim: this.claim.Id,\r\n Payments: this.payments.map(x => x.payment),\r\n };\r\n\r\n return result;\r\n }\r\n \r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {Claim} claim\r\n * @param {PolitikerCalculator} calculator\r\n */\r\n static create(payslipModel, claim, calculator) {\r\n\r\n let result = new ProposedGroupModel(payslipModel, calculator);\r\n\r\n result.claim = claim;\r\n\r\n if (calculator.isEmployerDependent(claim)) {\r\n result.availableEmployers = EmployerOptions.fromAttendance(payslipModel.attendance);\r\n if (result.availableEmployers.length === 1) {\r\n result.selectedEmployer = result.availableEmployers[0];\r\n }\r\n }\r\n\r\n if (calculator != null) {\r\n let calculatedPayments = calculator.calculateClaim(payslipModel.attendance, claim, result.selectedEmployer);\r\n result.payments = _.map(calculatedPayments, x => PaymentModel.fromCalculated(result, x));\r\n }\r\n\r\n result.sortPayments();\r\n\r\n return result;\r\n }\r\n}\r\n","import './proposedRemuneration.less';\r\n\r\nimport * as _ from 'lodash';\r\nimport { getAttachmentTypeName } from '../../objects/Attachment';\r\nimport { claimTypes } from '../../objects/Claim';\r\nimport { auditIncidents } from '../../objects/Audit';\r\nimport { getRemunerationTitle } from '../../misc/textHelper';\r\nimport { remunerationTypes } from '../../objects/Payslip';\r\n\r\n/**\r\n * @typedef { import('./ProposedGroupModel').ProposedGroupModel } ProposedGroupModel\r\n * @typedef { import('../PaymentLock').PaymentLock } PaymentLock\r\n * @typedef { import('../../objects/Claim').Claim } Claim\r\n * @typedef { import('../../server/ApiServer').ApiServer } ApiServer\r\n */\r\n\r\n/**\r\n * \r\n * @param {Claim} claim \r\n * @returns \r\n */\r\nfunction getClaimDescription(claim) {\r\n switch (claim.ClaimType) {\r\n case claimTypes.legacyTravel:\r\n if (claim.Nugget.RouteFrom || claim.Nugget.RouteTo) {\r\n return claim.Nugget.RouteFrom + \" till \" + claim.Nugget.RouteTo;\r\n } else {\r\n let parts = [];\r\n if (claim.Nugget.Parking) {\r\n parts.push('Parkering');\r\n }\r\n if (claim.Nugget.Congestion) {\r\n parts.push('Trängselskatt');\r\n }\r\n if (claim.Nugget.PublicTransport) {\r\n parts.push('Kollektivtrafik');\r\n }\r\n if (claim.Nugget.TravelTime) {\r\n parts.push('Restid');\r\n }\r\n return parts.join(\", \");\r\n }\r\n case claimTypes.travel:\r\n return claim.Nugget.RouteFrom + \" till \" + claim.Nugget.RouteTo;\r\n case claimTypes.expense:\r\n return claim.Nugget.Purpose;\r\n case claimTypes.lostIncomeAmount:\r\n case claimTypes.lostIncomeNumber:\r\n case claimTypes.lostIncomeRate:\r\n return claim.Nugget.Employer;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nclass ProposedRemunerationController {\r\n static $inject = ['tromanServer', 'downloadService', 'dialogService'];\r\n /**\r\n * @param {ApiServer} tromanServer\r\n * @param {any} downloadService\r\n * @param {any} dialogService\r\n */\r\n constructor(tromanServer, downloadService, dialogService) {\r\n this._tromanServer = tromanServer;\r\n this._downloadService = downloadService;\r\n this._dialogService = dialogService;\r\n this.editRejection = false;\r\n\r\n /** @type {ProposedGroupModel} */\r\n this.paymentGroup = null;\r\n /** @type {Claim} */\r\n this.claim = null;\r\n /** @type {PaymentLock} */\r\n this.paymentLock = null;\r\n }\r\n\r\n get rejectionForm() {\r\n return this._rejectionForm;\r\n }\r\n\r\n // A little hackish, force rejection form to be default dirty\r\n set rejectionForm(value) {\r\n this._rejectionForm = value;\r\n if (value) {\r\n value.$setDirty();\r\n }\r\n }\r\n\r\n attachmentTitle(attachment) {\r\n return getAttachmentTypeName(attachment.AttachmentType);\r\n }\r\n\r\n $onChanges(changed) {\r\n if (changed.paymentGroup) {\r\n if (this.paymentGroup && this.paymentGroup.claim) {\r\n this.claim = this.paymentGroup.claim;\r\n \r\n const rejections = _.filter(this.claim.AuditEntries, x => x.Incident === auditIncidents.claimRejected);\r\n this.lastRejection = _.maxBy(rejections, x => x.Timestamp);\r\n\r\n this.title = getRemunerationTitle(remunerationTypes.claim, this.paymentGroup.claim.ClaimType);\r\n this.description = getClaimDescription(this.claim);\r\n } else {\r\n this.claim = null;\r\n this.title = null;\r\n this.description = null;\r\n }\r\n }\r\n }\r\n\r\n get isLocked() {\r\n return this.paymentLock.isLocked;\r\n }\r\n\r\n acceptClaim() {\r\n this.paymentGroup.accept();\r\n }\r\n\r\n rejectClaim() {\r\n this.paymentGroup.rejecting();\r\n this.paymentLock.lockGroup(this.paymentGroup);\r\n }\r\n\r\n confirmRejection() {\r\n this.paymentGroup.rejected();\r\n this.paymentLock.reset();\r\n }\r\n\r\n cancelRejection() {\r\n this.paymentGroup.reset();\r\n this.paymentLock.reset();\r\n }\r\n\r\n abortClaim() {\r\n this.paymentGroup.reset();\r\n }\r\n\r\n showDetails() {\r\n this._dialogService.showPaymentGroup(this.paymentGroup);\r\n }\r\n \r\n downloadAttachment(attachment) {\r\n this._tromanServer.Files.downloadAttachment(attachment.Id)\r\n .then(rsp => this._downloadService.downloadBlob(rsp.blob, rsp.filename));\r\n }\r\n\r\n employerChanged() {\r\n this.paymentGroup.recalculate();\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoProposedRemuneration', {\r\n template: require('./proposedRemuneration.html'),\r\n bindings: {\r\n paymentGroup: '<',\r\n paymentLock: '<',\r\n wageTypes: '<',\r\n },\r\n controller: ProposedRemunerationController,\r\n});\r\n","import * as _ from 'lodash';\r\n\r\nimport { PaymentGroupModel, paymentGroupInstanceTypes, remunerationTypeOrder } from '../PaymentGroupModel';\r\nimport { PaymentModel } from '../PaymentModel';\r\nimport { remunerationTypes } from '../../objects/Payslip';\r\n\r\n/**\r\n * @typedef { import('../../objects/Claim').Claim } Claim\r\n * @typedef { import('../PayslipModel').PayslipModel } PayslipModel\r\n * @typedef { import('../objects/WageCalculation').WageCalculation } WageCalculation\r\n * @typedef { import('../calculation/PolitikerCalculator').PolitikerCalculator } PolitikerCalculator\r\n */\r\n\r\nexport class SimpleGroupModel extends PaymentGroupModel {\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {number} remunerationType\r\n */\r\n constructor(payslipModel, remunerationType) {\r\n super(payslipModel);\r\n\r\n this.remunerationType = remunerationType;\r\n\r\n /** @type {WageCalculation|null} */\r\n this.wageCalculation = null;\r\n }\r\n\r\n get paymentGroupInstanceType() {\r\n return paymentGroupInstanceTypes.simple;\r\n }\r\n\r\n get isCollapsable() {\r\n return this.remunerationType === remunerationTypes.payment && !this.hasDetail;\r\n }\r\n\r\n get isManuallyCalculated() {\r\n return this.isAdded && (this.remunerationType === remunerationTypes.calculatedMeeting || this.remunerationType == remunerationTypes.calculatedTravel);\r\n }\r\n\r\n /**\r\n * \r\n * @param {PaymentGroupModel} other \r\n */\r\n compareTo(other) {\r\n if (!(other instanceof SimpleGroupModel)) return 0;\r\n return remunerationTypeOrder(this.remunerationType) - remunerationTypeOrder(other.remunerationType);\r\n }\r\n\r\n createAdd() {\r\n if (!this.isAdded) return null;\r\n\r\n let result = {\r\n RemunerationType: this.remunerationType,\r\n WageCalculationId: this.wageCalculation?.Id || null,\r\n Payments: this.payments.map(x => x.payment),\r\n };\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {Remuneration} remuneration\r\n */\r\n static createExisting(payslipModel, remuneration) {\r\n let result = new SimpleGroupModel(payslipModel, remuneration.RemunerationType);\r\n result.remuneration = remuneration;\r\n result.claim = remuneration.Claim || null;\r\n result.payments = _.map(remuneration.Payments, x => PaymentModel.fromOriginal(result, x));\r\n result.sortPayments();\r\n return result;\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {number} remunerationType\r\n * @param {WageCalculation} wageCalculation\r\n * @param {CalculatedPayment[]} calculatedPayments\r\n */\r\n static createCalculated(payslipModel, remunerationType, wageCalculation, calculatedPayments) {\r\n let result = new SimpleGroupModel(payslipModel, remunerationType);\r\n result.wageCalculation = wageCalculation;\r\n result.payments = _.map(calculatedPayments, x => PaymentModel.fromCalculated(result, x));\r\n result.sortPayments();\r\n return result;\r\n }\r\n\r\n /**\r\n * @param {PayslipModel} payslipModel\r\n * @param {number} remunerationType\r\n * @param {Payment[]} payments\r\n */\r\n static createManual(payslipModel, remunerationType, payments) {\r\n let result = new SimpleGroupModel(payslipModel, remunerationType);\r\n result.payments = _.map(payments, x => PaymentModel.fromCreated(result, x));\r\n result.sortPayments();\r\n return result;\r\n }\r\n}\r\n","import { getCertificationStateSubtitle, getRemunerationTitle } from '../../misc/textHelper';\r\nimport { GroupDialogResult } from '../groupDialog/GroupDialogResult';\r\nimport './simpleRemuneration.less';\r\n\r\n/**\r\n * @typedef { import('./SimpleGroupModel').SimpleGroupModel } SimpleGroupModel\r\n * @typedef { import('../PaymentLock').PaymentLock } PaymentLock\r\n * @typedef { import('../../objects/Claim').Claim } Claim\r\n * @typedef { import('../../server/ApiServer').ApiServer } ApiServer\r\n */\r\n\r\n/**\r\n * @param {SimpleGroupModel} pg\r\n */\r\nfunction getSubTitle(pg) {\r\n if (pg.hasCompleted && pg.hasClaim && pg.payments.length === 0) {\r\n return 'godkänt anspråk utan arvoden';\r\n }\r\n\r\n if (pg.remuneration != null) {\r\n return getCertificationStateSubtitle(pg.remuneration.CertificationState);\r\n }\r\n}\r\n\r\nclass SimpleRemunerationController {\r\n static $inject = ['dialogService'];\r\n /**\r\n * @param {any} dialogService\r\n */\r\n constructor(dialogService) {\r\n this._dialogService = dialogService;\r\n /** @type {SimpleGroupModel} */\r\n this.paymentGroup = null;\r\n }\r\n\r\n $onChanges(changed) {\r\n if (changed.paymentGroup) {\r\n if (this.paymentGroup != null) {\r\n let maintitle = getRemunerationTitle(this.paymentGroup.remunerationType, this.paymentGroup.claim?.ClaimType);\r\n let subtitle = getSubTitle(this.paymentGroup);\r\n this.title = subtitle ? `${maintitle} (${subtitle})` : maintitle;\r\n } else {\r\n this.title = null;\r\n }\r\n }\r\n }\r\n\r\n showDetail() {\r\n if (this.paymentGroup && this.paymentGroup.hasDetail) {\r\n this._dialogService.showPaymentGroup(this.paymentGroup).then(result => {\r\n if (result instanceof GroupDialogResult) {\r\n result.apply(this.paymentGroup);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").component('ergoSimpleRemuneration', {\r\n template: require('./simpleRemuneration.html'),\r\n bindings: {\r\n paymentGroup: '<',\r\n paymentLock: '<',\r\n wageTypes: '<',\r\n },\r\n controller: SimpleRemunerationController,\r\n});\r\n","import './pendingCertification.less';\r\nimport * as _ from 'lodash';\r\n\r\n/**\r\n * @typedef { import('../objects/PendingCertification').PendingCertification } PendingCertification\r\n */\r\n\r\nangular.module(\"tromanWeb\").controller('PendingCertificationController', ['$q', 'tromanServer', 'dialogService', 'stateService', function ($q, tromanServer, dialogService, stateService) {\r\n\r\n this._table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function () {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.filterPending = _.isUndefined(params.filterPending) || (!!params.filterPending);\r\n\r\n $q.all({\r\n pending: tromanServer.Payroll.getPendingCertification(),\r\n }).then(data => {\r\n /** @type {PendingCertification[]} */\r\n this.items = data.pending;\r\n this.items = _.orderBy(this.items, x => x.Organization.Name);\r\n _.forEach(this.items, x => {\r\n let criteria = { OrganizationIds: [ x.OrganizationId ] };\r\n if (x.CertifierId != null) {\r\n criteria.CertifierIds = [ x.CertifierId ];\r\n } else {\r\n criteria.IsAbandoned = true;\r\n }\r\n x.$criteria = criteria;\r\n });\r\n }).catch(err => {\r\n this.error = err;\r\n });\r\n };\r\n\r\n // We need to apply filter when table is available (it is not in $onInit).\r\n // This little hack does that\r\n // I have not found a clean solution yet ($postLink does not seem to be called)\r\n Object.defineProperty(this, 'table', {\r\n get: function() { return this._table; },\r\n set: function(val) {\r\n this._table = val;\r\n if (val) {\r\n val.search(this.filterPending, '$hasPending', true);\r\n }\r\n }\r\n });\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n if (_.has(changed, 'filterPending')) {\r\n this.filterPending = changed.filterPending;\r\n this.table?.search(this.filterPending, '$hasPending', true);\r\n }\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.filterPendingChanged = function filterChanged() {\r\n stateService.replaceParams({ filterPending: this.filterPending });\r\n };\r\n\r\n this.emailList = function emailList() {\r\n if (this.table == null) return;\r\n\r\n var list = _.chain(this.table.selectedItems())\r\n .map(x => x.Certifier)\r\n .reject(_.isNil)\r\n .uniqBy(x => x.Id)\r\n .value();\r\n\r\n dialogService.createEmailList(list);\r\n };\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { AddedFileInfo, AttachmentCollection } from '../attachments/AttachmentCollection';\r\nimport { attachmentTypes } from '../objects/Attachment';\r\n\r\n/**\r\n * @typedef { import('../objects/Attachment').AttachmentInfo } AttachmentInfo\r\n */\r\n\r\nexport class PersonAttachmentCollection extends AttachmentCollection {\r\n\r\n /**\r\n * @param {AttachmentInfo[]} attachments\r\n * @param {any} photo\r\n */\r\n constructor(attachments, photo) {\r\n super(_.filter(attachments, x => x.AttachmentType !== attachmentTypes.profilePhoto));\r\n\r\n if (photo != null) {\r\n this._existingPhoto = photo.info;\r\n this._existingPhotoDataUrl = photo.data;\r\n } else {\r\n this._existingPhoto = null;\r\n this._existingPhotoDataUrl = null;\r\n }\r\n\r\n /** @type {AddedFileInfo} */\r\n this._newPhoto = null;\r\n this._shouldRemovePhoto = false;\r\n }\r\n\r\n hasChanges() {\r\n return this._newPhoto != null || this._shouldRemovePhoto || super.hasChanges();\r\n }\r\n\r\n createUpdate() {\r\n let result = super.createUpdate();\r\n if (this._newPhoto != null) {\r\n result.Added.push(this._newPhoto.createAdd());\r\n }\r\n else if (this._shouldRemovePhoto) {\r\n result.Removed.push(this._existingPhoto.Id);\r\n }\r\n return result;\r\n }\r\n\r\n canRemovePhoto() {\r\n return this._existingPhoto != null && this._newPhoto == null && !this._shouldRemovePhoto;\r\n }\r\n\r\n removePhoto() {\r\n if (!this.canRemovePhoto()) return;\r\n this._shouldRemovePhoto = true;\r\n }\r\n\r\n canRevertPhoto() {\r\n return this._newPhoto != null || this._shouldRemovePhoto;\r\n }\r\n\r\n revertPhoto() {\r\n if (!this.canRevertPhoto()) return;\r\n\r\n this._newPhoto = null;\r\n this._addedSize = this._addedSize - this._newPhoto.size;\r\n this._shouldRemovePhoto = false;\r\n }\r\n\r\n hasPhoto() {\r\n return this._newPhoto != null || (this._existingPhoto != null && !this._shouldRemovePhoto);\r\n }\r\n\r\n photoDataUrl() {\r\n if (this._newPhoto != null) {\r\n return this._newPhoto.data;\r\n } else if (this._existingPhoto != null && !this._shouldRemovePhoto) {\r\n return this._existingPhotoDataUrl;\r\n }\r\n }\r\n\r\n /**\r\n * @param {FileResult[]} files\r\n */\r\n setPhoto(files) {\r\n if (files && files.length > 0) {\r\n if (this._newPhoto != null) {\r\n this._addedSize = this._addedSize - this._newPhoto.size;\r\n }\r\n\r\n this._newPhoto = new AddedFileInfo(files[0], attachmentTypes.profilePhoto);\r\n this._shouldRemovePhoto = false;\r\n this._addedSize = this._addedSize + this._newPhoto.size;\r\n }\r\n }\r\n}","import { Award } from '../objects/Award';\r\n\r\nangular.module(\"tromanWeb\").controller('PersonAwardsController', ['tromanServer', 'dialogService', 'personState', 'isTroman', function (tromanServer, dialogService, personState, isTroman) {\r\n\r\n this._loadItems = function _loadItems() {\r\n tromanServer.Awards.search({\r\n PersonId: personState.person.Id\r\n }).then(data => {\r\n this.awards = data;\r\n }).catch(err => {\r\n this.awards = null;\r\n dialogService.error(err);\r\n });\r\n };\r\n\r\n this.edit = function edit(item) {\r\n dialogService.editAward(item).then(() => this._loadItems());\r\n };\r\n\r\n this.add = function add() {\r\n var toAdd = new Award();\r\n toAdd.Person = personState.person;\r\n dialogService.editAward(toAdd).then(() => this._loadItems());\r\n };\r\n\r\n this.canCreateList = function () {\r\n if (this.awardsTable != null && this.awardsTable.selectionCount > 0)\r\n return true;\r\n\r\n return false;\r\n };\r\n\r\n this.createList = function createList() {\r\n\r\n if (!this.canCreateList()) return;\r\n\r\n var selected = [];\r\n if (this.awardsTable != null) {\r\n selected = this.awardsTable.selectedItems();\r\n }\r\n\r\n dialogService.createAwardList(selected, `Lista - ${ isTroman ? 'Gratifikationer' : 'Utbildning' } ( ${personState.person.display} )`);\r\n };\r\n\r\n this._loadItems();\r\n}]);\r\n","import './person.less';\r\nimport * as _ from 'lodash';\r\nimport { PersonHasLoanedEquipment } from '../server/ApiWarnings';\r\n\r\nangular.module(\"tromanWeb\").controller('PersonController', ['stateService', 'dialogService', 'tromanServer', 'personArchive', 'isTroman', 'systemInfo', 'personState', function (stateService, dialogService, tromanServer, personArchive, isTroman, systemInfo, personState) {\r\n\r\n this.parties = personState.parties;\r\n this.divisions = personState.divisions;\r\n this.person = personState.person;\r\n this.enableArchive = !!(this.person.Id && this.person.Active);\r\n this.isPolitikerEnabled = systemInfo.IsPolitikerEnabled;\r\n\r\n this.canArchive = function () {\r\n if (!this.enableArchive) return false;\r\n if (personState.form != null) {\r\n if (personState.form.$dirty)\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n this.canActivate = function () {\r\n if (this.enableArchive) return false;\r\n if (personState.form != null) {\r\n if (personState.form.$dirty)\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n this.archive = function archive() {\r\n if (!this.canArchive()) return;\r\n\r\n personArchive.archiveSingle(this.person).then(opt => {\r\n tromanServer.Persons.archive(this.person, opt.clearContact, opt.unpublish, opt.politikerExpireDate, opt.deleteFiles)\r\n .then(warnings => {\r\n if (_.has(warnings, PersonHasLoanedEquipment)) {\r\n return dialogService.warning(['Personen har arkiverats.', { text: 'Personen har fortfarande utlånad utrustning.', iserror: true }]);\r\n }\r\n })\r\n .then(() => { stateService.forceReload(); })\r\n .catch(dialogService.error);\r\n });\r\n };\r\n\r\n this.activate = function activate() {\r\n if (!this.canActivate()) return;\r\n\r\n dialogService.confirm([\"Aktivera \" + this.person.name + \".\", \"Är du säker?\"]).then(() => {\r\n tromanServer.Persons.activate(this.person.Id)\r\n .then(() => { stateService.forceReload(); })\r\n .catch(dialogService.error);\r\n });\r\n };\r\n\r\n this.hardRemove = function hardRemove() {\r\n if (this.person == null || this.person.Id == null) return;\r\n\r\n const confirmText = ['Radera ' + this.person.name + ' permanent.', 'Detta kan inte ångras', 'Är du säker?'];\r\n\r\n if (isTroman) {\r\n dialogService.confirm(confirmText).then(() => {\r\n tromanServer.Persons.hardRemove(this.person.Id)\r\n .then(() => { stateService.forceGo('persons'); })\r\n .catch(dialogService.error);\r\n });\r\n } else {\r\n let remove = (purge) => {\r\n if (purge) {\r\n return tromanServer.Persons.purge(this.person.Id);\r\n } else {\r\n return tromanServer.Persons.hardRemove(this.person.Id);\r\n }\r\n };\r\n \r\n let msg = {\r\n message: confirmText,\r\n options: {\r\n text: 'Radera personen totalt (inklusive t.ex. uppdrag och arvoden med mera).',\r\n value: false\r\n }\r\n };\r\n \r\n dialogService.confirmAdvanced(msg).then(purgePerson => {\r\n remove(purgePerson.value)\r\n .then(() => { stateService.forceGo('persons'); })\r\n .catch(dialogService.error);\r\n });\r\n }\r\n };\r\n\r\n this.createReport = function createReport() {\r\n var list = [this.person];\r\n dialogService.createReport({ persons: list });\r\n };\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport * as EnumValues from '../misc/EnumValues';\r\nimport * as utility from '../misc/utility';\r\nimport { PersonAttachmentCollection } from './PersonAttachmentCollection';\r\n\r\nangular.module(\"tromanWeb\").controller('PersonEditController', ['stateService', 'dialogService', 'tromanServer', 'personState', 'systemInfo', function (stateService, dialogService, tromanServer, personState, systemInfo) {\r\n\r\n var isSaving = false;\r\n\r\n this.table = null;\r\n this.items = null;\r\n this.systemInfo = systemInfo;\r\n\r\n this.person = personState.person.clone();\r\n this.person.initEdit();\r\n this.shared = personState;\r\n this.photoWarning = null;\r\n this.attachments = new PersonAttachmentCollection(this.person.Attachments, personState.photo);\r\n\r\n stateService.guard(() => this.shared.form.$dirty || this.attachments.hasChanges());\r\n\r\n this.canSave = function canSave() {\r\n return this.person != null && !isSaving && (this.shared.form.$dirty || this.attachments.hasChanges()) && this.attachments.isValid() && this.shared.form.$valid;\r\n };\r\n\r\n this.isValidMunicipality = function isValidMunicipality() {\r\n // Do not show the warning when there are no default settings\r\n if (personState.systemSettings.DefaultValidMunicipalities && personState.systemSettings.DefaultValidMunicipalities.length > 0) {\r\n return utility.isValidMunicipality(this.person.MunicipalityCode, personState.systemSettings.DefaultValidMunicipalities);\r\n }\r\n return true;\r\n };\r\n\r\n this.lookup = function lookup() {\r\n if (!systemInfo.IsSparLookupEnabled) {\r\n dialogService.notify(\r\n \"Denna tjänst hämtar folkbokförda uppgifter direkt från Statens Personadressregister (SPAR). Vill ni aktivera denna tjänst kontakta Troman på support@troman.se.\",\r\n \"Tjänsten inte aktiv\");\r\n } else {\r\n const personalNumber = this.person.PersonalNumber;\r\n tromanServer.Integrations.lookupPerson(personalNumber).then(res => {\r\n if (!res) {\r\n dialogService.notify(\"Inga uppgifter hittades.\", \"Inga uppgifter hittades\");\r\n } else {\r\n this.person.RegisteredName = res.RegisteredName || this.person.RegisteredName;\r\n this.person.LastName = res.LastName || this.person.LastName;\r\n this.person.MunicipalityCode = res.MunicipalityCode;\r\n this.person.homeAddress = this.person.homeAddress || {};\r\n this.person.homeAddress.Address =\r\n res.Address ? res.Address.Address : this.person.homeAddress.Address;\r\n this.person.homeAddress.ZipCode =\r\n res.Address ? res.Address.ZipCode : this.person.homeAddress.ZipCode;\r\n this.person.homeAddress.City = res.Address ? res.Address.City : this.person.homeAddress.City;\r\n this.person.LookupDateChanged = true;\r\n\r\n this.shared.form.$setDirty();\r\n\r\n var message = res.Address ? \"Uppgifterna hämtades.\" : \"Uppgifterna hämtades, adress saknades.\";\r\n dialogService.notify(message, \"Uppgifter hämtade\");\r\n }\r\n }).catch(dialogService.error);\r\n }\r\n };\r\n\r\n this.populateGender = function populateGender(ev) {\r\n var pnr = ev.currentTarget.value;\r\n if (/^(19|20)[0-9]{6}[-]?[0-9]{4}$/.test(pnr)) {\r\n if (pnr.charAt(pnr.length - 2) % 2 === 0)\r\n this.person.Gender = EnumValues.Gender.Woman;\r\n else\r\n this.person.Gender = EnumValues.Gender.Man;\r\n }\r\n };\r\n\r\n this.editingEarning = null;\r\n\r\n this.createEarning = function createEarning() {\r\n return {\r\n EmployerName: '',\r\n UnitPrice: 0.00,\r\n ValidFrom: utility.todayDate()\r\n };\r\n };\r\n\r\n this.earningsAdd = function earningsAdd() {\r\n if (!this.earningsApply()) return;\r\n\r\n this.editingEarning = this.createEarning();\r\n this.person.Earnings.push(this.editingEarning);\r\n this.earningsfocus = true;\r\n };\r\n\r\n this.earningsEdit = function earningsEdit(item) {\r\n if (!this.earningsApply()) return;\r\n\r\n this.earningsfocus = true;\r\n this.editingEarning = item;\r\n };\r\n\r\n this.earningsCanApply = function earningsCanApply() {\r\n if (!this.earningsform.$valid) return false;\r\n return true;\r\n };\r\n\r\n this.earningsApply = function earningsApply() {\r\n if (!this.editingEarning) return true;\r\n if (!this.earningsCanApply()) return false;\r\n this.editingEarning = null;\r\n return true;\r\n };\r\n\r\n this.earningsRemove = function earningsRemove() {\r\n if (!this.editingEarning) return;\r\n\r\n var index = this.person.Earnings.indexOf(this.editingEarning);\r\n if (index >= 0) {\r\n this.person.Earnings.splice(index, 1);\r\n this.editingEarning = null;\r\n this.earningsform.$setDirty();\r\n }\r\n };\r\n\r\n this.checkOverlaps = function checkOverlaps() {\r\n let earnings = _.groupBy(this.person.Earnings || [], x => x.EmployerName);\r\n let hasOverlapping = _.some(earnings, elist => {\r\n for (let ii = 1; ii < elist.length; ++ii) {\r\n let a = elist[ii - 1];\r\n let b = elist[ii];\r\n if (utility.isOverlapping(a.ValidFrom, a.ValidTo, b.ValidFrom, b.ValidTo)) {\r\n var msg = 'Överlappande datum för arbetsgivaren \"' + a.EmployerName + '\"';\r\n dialogService.error(msg);\r\n return true;\r\n }\r\n }\r\n });\r\n return !hasOverlapping;\r\n };\r\n\r\n this._politikerAccess = this.person.HasPolitikerAccess ? (this.person.PolitikerExpireDate == null ? 0 : 2) : 1;\r\n this.initialHasPolitikerAccess = this.person.HasPolitikerAccess;\r\n\r\n Object.defineProperties(this, {\r\n politikerAccess: {\r\n enumerable: true,\r\n get: function () {\r\n return this._politikerAccess;\r\n },\r\n set: function (value) {\r\n if (value === this._politikerAccess) {\r\n return;\r\n }\r\n\r\n if (value === 0 || value === 2) {\r\n this.person.HasPolitikerAccess = true;\r\n } else if (value === 1) {\r\n this.person.HasPolitikerAccess = false;\r\n } else {\r\n throw new RangeError('Not valid value');\r\n }\r\n\r\n this.person.PolitikerExpireDate = null;\r\n this._politikerAccess = value;\r\n }\r\n }\r\n });\r\n\r\n this.photoLoaded = function (evt) {\r\n let imageElement = evt.target;\r\n\r\n this.photoWarning = null;\r\n\r\n if (imageElement) {\r\n let nw = imageElement.naturalWidth;\r\n let nh = imageElement.naturalHeight;\r\n if (nw > 500 || nh > 500) {\r\n this.photoWarning = `Bilden är större (${nw}x${nh}) än rekommenderat`;\r\n }\r\n }\r\n };\r\n\r\n this.save = function save() {\r\n if (!this.canSave()) return;\r\n\r\n if (this.editingEarning) {\r\n if (!this.earningsCanApply()) return;\r\n this.earningsApply();\r\n }\r\n if (!this.checkOverlaps()) return;\r\n\r\n this.shared.form.$commitViewValue();\r\n this.shared.form.$setSubmitted();\r\n\r\n if (this.shared.form.$invalid) return;\r\n\r\n if (this.attachments.hasChanges()) {\r\n this.person.AttachmentUpdate = this.attachments.createUpdate();\r\n }\r\n\r\n isSaving = true;\r\n if (this.person.Id == null) {\r\n tromanServer.Persons.addEntity(this.person)\r\n .finally(() => { isSaving = false; })\r\n .then(rsp => {\r\n stateService.forceGo('person.details', { personId: rsp.result.Id }, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error);\r\n } else {\r\n tromanServer.Persons.updateEntity(this.person)\r\n .finally(() => { isSaving = false; })\r\n .then(() => {\r\n stateService.forceReload('person');\r\n })\r\n .catch(dialogService.error);\r\n }\r\n };\r\n}]);\r\n","import { Equipment } from '../objects/Equipment';\r\n\r\nangular.module(\"tromanWeb\").controller('PersonEquipmentController', ['tromanServer', 'dialogService', 'personState', function (tromanServer, dialogService, personState) {\r\n\r\n var self = this;\r\n\r\n function loadItems() {\r\n tromanServer.Equipment.search({\r\n PersonId: personState.person.Id\r\n }).then(function (data) {\r\n self.equipment = data;\r\n }).catch(function (err) {\r\n self.equipment = null;\r\n dialogService.error(err);\r\n });\r\n }\r\n\r\n self.edit = function edit(eq) {\r\n dialogService.editEquipment(eq).then(loadItems);\r\n };\r\n\r\n self.add = function add() {\r\n var toAdd = new Equipment();\r\n toAdd.Person = personState.person;\r\n dialogService.editEquipment(toAdd).then(loadItems);\r\n };\r\n\r\n self.canCreateList = function () {\r\n if (self.equipmentTable != null && self.equipmentTable.selectionCount > 0)\r\n return true;\r\n\r\n return false;\r\n };\r\n\r\n self.createList = function createList() {\r\n\r\n if (!self.canCreateList()) return;\r\n\r\n var selected = [];\r\n if (self.equipmentTable != null) {\r\n selected = self.equipmentTable.selectedItems();\r\n }\r\n\r\n dialogService.createEquipmentList(selected, 'Lista - Utrustning ( ' + personState.person.display + ' )');\r\n };\r\n\r\n loadItems();\r\n}]);\r\n","import { Mission, MissionStatus } from '../objects/Mission';\r\nimport { getMissionDateDuration } from '../misc/DateCalculator';\r\nimport * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\n\r\nangular.module(\"tromanWeb\").controller('PersonMissionsController', ['tromanServer', 'dialogService', 'personState', function (tromanServer, dialogService, personState) {\r\n\r\n var self = this;\r\n\r\n self.historyVisible = false;\r\n self.selectedOrganizationIds = [];\r\n self.gratuityDuration = null;\r\n self.totalDuration = null;\r\n\r\n function loadItems() {\r\n tromanServer.Missions.search({\r\n MissionStatus: self.historyVisible ? null : MissionStatus.ActiveOrFuture,\r\n PersonId: personState.person.Id\r\n }).then(function (allmissions) {\r\n self.error = null;\r\n self.allmissions = allmissions;\r\n self.missions = [];\r\n self.historyMissions = [];\r\n self.organizations = [];\r\n self.selectedOrganizationIds = [];\r\n\r\n let orgids = new Set();\r\n\r\n allmissions.forEach(function (x) {\r\n if (x.Active) {\r\n self.missions.push(x);\r\n } else {\r\n self.historyMissions.push(x);\r\n }\r\n\r\n if (!orgids.has(x.MandatePeriod.OrganizationId)) {\r\n orgids.add(x.MandatePeriod.OrganizationId);\r\n self.organizations.push(x.MandatePeriod.Organization);\r\n }\r\n });\r\n\r\n self.organizations = _.sortBy(self.organizations, x => x.Name);\r\n\r\n if (!self.historyVisible) {\r\n self.historyMissions = null;\r\n } else {\r\n self.selectedOrganizationChanged();\r\n }\r\n }).catch(function (err) {\r\n self.error = err;\r\n self.missions = null;\r\n self.historyMissions = null;\r\n });\r\n }\r\n\r\n self.add = function add() {\r\n var toadd = new Mission();\r\n toadd.Person = personState.person;\r\n dialogService.editMission(toadd).then(loadItems);\r\n };\r\n\r\n self.edit = function edit(mission) {\r\n dialogService.editMission(mission).then(loadItems);\r\n };\r\n\r\n function hasSelectedMissions() {\r\n if (self.missionTable != null && self.missionTable.selectionCount > 0)\r\n return true;\r\n\r\n if (self.historyTable != null && self.historyTable.selectionCount > 0)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n function getSelectedMissions() {\r\n var selected = [];\r\n if (self.missionTable != null) {\r\n selected = self.missionTable.selectedItems();\r\n }\r\n if (self.historyTable != null) {\r\n selected = selected.concat(self.historyTable.selectedItems());\r\n }\r\n return selected;\r\n }\r\n\r\n self.canUpdateSelected = hasSelectedMissions;\r\n self.updateSelected = function updateSelected() {\r\n if (!self.canUpdateSelected()) return;\r\n\r\n dialogService.updatePersonMissions(getSelectedMissions(), personState.person).then(loadItems);\r\n };\r\n\r\n self.canCreateList = hasSelectedMissions;\r\n self.createList = function createList() {\r\n if (!self.canCreateList()) return;\r\n\r\n dialogService.createMissionList(getSelectedMissions());\r\n };\r\n\r\n self.canAddToMissionGroup = hasSelectedMissions;\r\n self.addToMissionGroup = function addToMissionGroup() {\r\n if (!self.canAddToMissionGroup()) return;\r\n\r\n dialogService.addToMissionGroup(getSelectedMissions());\r\n };\r\n\r\n self.showHistory = function () {\r\n self.historyVisible = true;\r\n loadItems();\r\n };\r\n\r\n self.selectedOrganizationChanged = function () {\r\n if (self.allmissions == null) return;\r\n\r\n let missions = self.allmissions;\r\n if (self.selectedOrganizationIds.length > 0) {\r\n missions = self.allmissions.filter(x => self.selectedOrganizationIds.indexOf(x.MandatePeriod.OrganizationId) >= 0);\r\n }\r\n\r\n self.durationCutoff = utility.todayDate();\r\n self.gratuityDuration = getMissionDateDuration(missions.filter(x => x.IsGroundForGratuity), self.durationCutoff);\r\n self.totalDuration = getMissionDateDuration(missions, self.durationCutoff);\r\n };\r\n\r\n loadItems();\r\n}]);\r\n","import { Person } from '../objects/Person';\r\nimport * as _ from 'lodash';\r\nimport { attachmentTypes } from '../objects/Attachment';\r\n\r\nangular.module(\"tromanWeb\").factory('PersonState', ['$q', 'tromanServer', 'ObjectCache', 'dialogService', function ($q, tromanServer, ObjectCache, dialogService) {\r\n\r\n function PersonState() {\r\n }\r\n\r\n PersonState.create = function (personId) {\r\n return getPerson(personId)\r\n .then(loadRelated)\r\n .then(loaded)\r\n .catch(err => {\r\n dialogService.error(err);\r\n return $q.reject(err);\r\n });\r\n };\r\n\r\n function getPerson(personId) {\r\n if (personId) {\r\n return tromanServer.Persons.get(personId);\r\n } else {\r\n return $q.when(new Person());\r\n }\r\n }\r\n\r\n function loadPhoto(person) {\r\n let photo = _.find(person.Attachments, x => x.AttachmentType === attachmentTypes.profilePhoto);\r\n if (photo != null) {\r\n return tromanServer.Files.downloadAttachment(photo.Id).then(dlr => {\r\n return dlr.asDataUrl().then(durl => ({\r\n data: durl,\r\n info: photo,\r\n }));\r\n });\r\n } else {\r\n return $q.when(null);\r\n }\r\n }\r\n\r\n function loadRelated(person) {\r\n return $q.all({\r\n person: $q.when(person),\r\n photo: loadPhoto(person),\r\n parties: ObjectCache.getParties(person.Party),\r\n divisions: ObjectCache.getDivisions(person.Division),\r\n systemSettings: tromanServer.System.getSettings(),\r\n });\r\n }\r\n\r\n function loaded(data) {\r\n var ret = new PersonState();\r\n\r\n angular.extend(ret, data);\r\n\r\n if (!data.person.Id) {\r\n data.person.HasMeetingPay = true;\r\n data.person.Publish = _.cloneDeep(data.systemSettings.DefaultPersonPublish);\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n return PersonState;\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { MissionStatus } from '../objects/Mission';\r\nimport { NoPartyOption } from '../objects/Party';\r\nimport { EntityCollection } from '../misc/EntityCollection';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('PersonsController', ['$q', 'stateService', 'tromanServer', 'ObjectCache', 'dialogService', 'systemInfo', 'personArchive', '$filter', function ($q, stateService, tromanServer, ObjectCache, dialogService, systemInfo, personArchive, $filter) {\r\n\r\n this.table = null;\r\n this.items = null;\r\n this.criteria = null;\r\n this.filter = null;\r\n this.loading = true;\r\n this.isPolitikerEnabled = systemInfo.IsPolitikerEnabled;\r\n\r\n function searchWithCriteria(criteria) {\r\n var sc = _.cloneDeep(criteria);\r\n\r\n let noPartyIndex = _.indexOf(sc.PartyIds, NoPartyOption.Id);\r\n if (noPartyIndex >= 0) {\r\n sc.PartyIds.splice(noPartyIndex, 1);\r\n sc.WithoutParty = true;\r\n }\r\n\r\n return tromanServer.Persons.search(sc);\r\n }\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refreshItems();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.$onInit = function () {\r\n const params = stateService.getParams();\r\n this.criteria = createCriteria(params.criteria);\r\n this.filter = params.filter;\r\n\r\n $q.all({\r\n organizations: ObjectCache.allOrganizations(),\r\n parties: ObjectCache.allParties(),\r\n organizationTypes: ObjectCache.getOrganizationTypes(),\r\n missionTypes: ObjectCache.getMissionTypes(),\r\n persons: searchWithCriteria(this.criteria),\r\n }).then(data => {\r\n this.organizationTypes = data.organizationTypes;\r\n this.missionTypes = data.missionTypes;\r\n this.organizations = new EntityCollection(data.organizations);\r\n this.parties = new EntityCollection([NoPartyOption].concat(data.parties));\r\n this.items = data.persons;\r\n this.error = null;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this._refreshItems = function _refreshItems(selectItems) {\r\n this.loading = true;\r\n searchWithCriteria(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n if (selectItems) {\r\n var toselect = new Set(selectItems);\r\n this.items.forEach(person => {\r\n person.$$selected = toselect.has(person.Id);\r\n });\r\n }\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.resetCriteria = function resetCriteria() {\r\n this.criteria = createCriteria(null);\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function () {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this.selectedOrganizationsChanged = function () {\r\n if (this.organizations.some(this.criteria.OrganizationIds, x => !x.Active)) {\r\n this.criteria.Archived = 1;\r\n this.criteria.OrganizationMissionStatus = MissionStatus.All;\r\n } else {\r\n this.criteria.OrganizationMissionStatus = null;\r\n }\r\n };\r\n\r\n this.selectedPartiesChanged = function () {\r\n if (this.parties.some(this.criteria.PartyIds, x => !x.Active)) {\r\n this.criteria.Archived = 1;\r\n }\r\n };\r\n\r\n this.hasPolitikerAccessChanged = function () {\r\n if (this.criteria.HasPolitikerAccess) {\r\n this.criteria.Archived = 1;\r\n }\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createPersonList(list);\r\n };\r\n\r\n this.emailList = function emailList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createEmailList(list);\r\n };\r\n\r\n this.createReport = function createReport() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createReport({ persons: list });\r\n };\r\n\r\n function formatResponse(res, options) {\r\n var ret = [];\r\n\r\n if (res.Archived === 1) {\r\n ret.push(\"1 person arkiverad.\");\r\n } else {\r\n ret.push(res.Archived + \" personer arkiverade.\");\r\n }\r\n\r\n if (res.WithLoanedEquipment >= 1) {\r\n if (res.Archived === 1) {\r\n ret.push({ text: \"Personen har ej återlämnad utrustning.\", iserror: true });\r\n } else {\r\n ret.push({ text: res.WithLoanedEquipment + \" av personerna har ej återlämnad utrustning.\", iserror: true });\r\n }\r\n }\r\n\r\n if (res.AlreadyArchived === 1) {\r\n ret.push(\"1 person var redan arkiverad.\");\r\n } else if (res.AlreadyArchived > 1) {\r\n ret.push(res.AlreadyArchived + \" personer var redan arkiverade.\");\r\n }\r\n\r\n if (res.NotArchived != null) {\r\n if (res.NotArchived.length === 1) {\r\n ret.push(\"1 person kunde inte arkiveras. Den har markerats i personlistan.\");\r\n } else if (res.NotArchived.length > 1) {\r\n ret.push(res.NotArchived.length + \" personer kunde inte arkiveras. De har markerats i personlistan.\");\r\n }\r\n }\r\n\r\n if (options.clearContact) {\r\n if (res.Cleared === 1) {\r\n ret.push(\"1 person hade kontaktuppgifter som raderades.\");\r\n } else {\r\n ret.push(res.Cleared + \" personer hade kontaktuppgifter som raderades.\");\r\n }\r\n }\r\n\r\n if (options.deleteFiles) {\r\n if (res.WithDeletedFiles === 1) {\r\n ret.push(\"1 person hade filer/foto som raderades.\");\r\n } else {\r\n ret.push(res.Cleared + \" personer hade filer/foto som raderades.\");\r\n }\r\n }\r\n\r\n if (options.unpublish) {\r\n if (res.Unpublished === 1) {\r\n ret.push(\"1 person har avpublicerats från Troman Publik.\");\r\n } else {\r\n ret.push(res.Unpublished + \" personer har avpublicerats från Troman Publik.\");\r\n }\r\n }\r\n\r\n if (options.politikerExpireDate != null) {\r\n if (res.PolitikerExpireSet === 0) {\r\n ret.push(\"0 personer har fått tillgång till Troman Politiker avslutad.\");\r\n } else if (res.PolitikerExpireSet === 1) {\r\n ret.push(`1 persons tillgång till Troman Politiker avslutas ${$filter('ergoDate')(options.politikerExpireDate)}.`);\r\n } else {\r\n ret.push(`${res.PolitikerExpireSet} personers tillgång till Troman Politiker avslutas ${$filter('ergoDate')(options.politikerExpireDate)}.`);\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n this.archiveSelection = function archiveSelection() {\r\n if (this.table == null) return;\r\n var selected = this.table.selectedItems();\r\n\r\n personArchive.archiveMultiple(selected).then(opt => {\r\n tromanServer.Persons.archiveMultiple(selected, opt.clearContact, opt.unpublish, opt.politikerExpireDate, opt.deleteFiles)\r\n .then(res => {\r\n dialogService.notify(formatResponse(res, opt), \"Arkivera personer\").then(() => {\r\n this._refreshItems(res.NotArchived);\r\n });\r\n })\r\n .catch(dialogService.error);\r\n });\r\n };\r\n}]);\r\n","import './personArchive.less';\r\n\r\nimport { addCalendarDays } from \"../../misc/DateCalculator\";\r\nimport { todayDate } from \"../../misc/utility\";\r\n\r\nangular.module(\"twshared\").controller('PersonArchiveController', ['$uibModalInstance', 'tromanGlobals', 'persons', function ($uibModalInstance, tromanGlobals, persons) {\r\n\r\n this.count = persons.length;\r\n this.enableUnpublish = true;\r\n\r\n this.clearContact = false;\r\n this.unpublish = false;\r\n this.deleteFiles = false;\r\n\r\n if (persons.length === 1) {\r\n this.target = persons[0].name;\r\n this.enableUnpublish = !persons[0].Publish?.DisablePublish;\r\n } else {\r\n this.target = `${persons.length} personer`;\r\n }\r\n\r\n this.isPolitikerEnabled = tromanGlobals.systemInfo.IsPolitikerEnabled;\r\n this.terminatePolitiker = this.isPolitikerEnabled;\r\n this.politikerExpireDate = addCalendarDays(todayDate(), tromanGlobals.systemInfo.PolitikerReportingDays);\r\n\r\n this.cancel = function () {\r\n $uibModalInstance.dismiss(\"cancelled\");\r\n };\r\n\r\n this.canOk = function () {\r\n return this.form && this.form.$valid;\r\n };\r\n\r\n this.ok = function () {\r\n $uibModalInstance.close({\r\n clearContact: this.clearContact,\r\n deleteFiles: this.deleteFiles,\r\n unpublish: this.unpublish,\r\n politikerExpireDate: this.terminatePolitiker ? this.politikerExpireDate : null,\r\n });\r\n };\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"twshared\").factory('personArchive', ['$uibModal', function ($uibModal) {\r\n\r\n var so = {};\r\n\r\n function showDialog(persons) {\r\n return $uibModal.open({\r\n animation: false,\r\n template: require('./personArchive.html'),\r\n controller: 'PersonArchiveController as $ctrl',\r\n windowClass: \"modal fade in\",\r\n size: 'md',\r\n resolve: {\r\n persons: function () { return persons; },\r\n }\r\n }).result;\r\n }\r\n\r\n so.archiveMultiple = function (persons) {\r\n return showDialog(persons);\r\n };\r\n\r\n so.archiveSingle = function (person) {\r\n return showDialog([person]);\r\n };\r\n\r\n return so;\r\n}]);\r\n","import './politikerSettings.less';\r\nimport * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { addCalendarDays } from '../misc/DateCalculator';\r\nimport { wageModelGroups } from '../objects/WageType';\r\nimport { PolitikerSettings } from '../objects/PolitikerSettings';\r\n\r\nclass SettingInfo {\r\n /**\r\n * \r\n * @param {PolitikerSettings} settings\r\n * @param {SettingInfo} next\r\n */\r\n constructor(settings, next) {\r\n if (settings) {\r\n this.id = settings.Id;\r\n this.settings = settings;\r\n this.next = next;\r\n this.previous = null;\r\n\r\n if (next) {\r\n this.ends = addCalendarDays(next.settings.StartDate, -1);\r\n next.previous = this;\r\n }\r\n }\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('PolitikerSettingsController', ['$q', 'tromanServer', 'stateService', 'dialogService', function ($q, tromanServer, stateService, dialogService) {\r\n\r\n this._isSaving = false;\r\n\r\n this.$onInit = function () {\r\n $q.all({\r\n systemSettings: tromanServer.System.getSettings(),\r\n settings: tromanServer.Politiker.getSettings(),\r\n wageTypes: tromanServer.WageTypes.list(),\r\n }).then(data => {\r\n this.systemSettings = data.systemSettings;\r\n this.allWageTypes = data.wageTypes;\r\n this.travelWageTypes = _.filter(data.wageTypes, x => x.WageModelGroup === wageModelGroups.travel);\r\n this.lostIncomeWageTypes = _.filter(data.wageTypes, x => x.WageModelGroup === wageModelGroups.lostIncome);\r\n this.otherWageTypes = _.filter(data.wageTypes, x => x.WageModelGroup === wageModelGroups.other);\r\n\r\n const sorted = _.orderBy(data.settings, [x => x.StartDate], ['desc']);\r\n this.settings = _.reduce(sorted, (a, x) => { let m = new SettingInfo(x, a.length > 0 ? a[a.length - 1] : null); a.push(m); return a; }, []);\r\n this.selected = _.first(this.settings);\r\n this.onSelectedChanged();\r\n }).catch(err => {\r\n this.settings = null;\r\n this.selected = null;\r\n this.editing = null;\r\n this.allWageTypes = null;\r\n this.travelWageTypes = null;\r\n this.lostIncomeWageTypes = null;\r\n this.otherWageTypes = null;\r\n dialogService.error(err);\r\n });\r\n };\r\n\r\n this.canChangePeriod = function () {\r\n return !this.isAdding() && this.form && !this.form.$dirty;\r\n };\r\n\r\n this.onSelectedChanged = function () {\r\n if (this.selected) {\r\n this.editing = this.selected.settings.clone();\r\n this.maxdate = this.selected.ends;\r\n this.mindate = addCalendarDays(this.selected.previous?.settings.StartDate, 1);\r\n } else {\r\n this.editing = null;\r\n this.mindate = null;\r\n this.maxdate = null;\r\n }\r\n };\r\n\r\n this.isAdding = function () {\r\n return !!(this.editing && !this.editing.Id);\r\n };\r\n\r\n this.canAddPeriod = function () {\r\n if (this.isAdding()) return false;\r\n if (!this.settings) return false;\r\n if (!this.editing) return true;\r\n return this.form && !this.form.$dirty;\r\n };\r\n\r\n this.addPeriod = function () {\r\n if (!this.canAddPeriod()) return;\r\n\r\n if (this.settings.length > 0) {\r\n this.maxdate = null;\r\n this.mindate = addCalendarDays(this.settings[0].settings.StartDate, 1);\r\n } else {\r\n this.maxdate = null;\r\n this.mindate = null;\r\n }\r\n\r\n let today = utility.todayDate();\r\n this.editing = new PolitikerSettings();\r\n this.editing.StartDate = (this.mindate == null || this.mindate <= today) ? today : this.mindate;\r\n\r\n this.selected = new SettingInfo();\r\n this.settings.splice(0, 0, this.selected);\r\n };\r\n\r\n this.canCancel = function () {\r\n if (this._isSaving) return false;\r\n if (!this.editing) return false;\r\n if (!this.form) return false;\r\n\r\n return this.isAdding() || this.form.$dirty;\r\n };\r\n\r\n this.cancel = function () {\r\n if (!this.canCancel()) return;\r\n\r\n if (this.isAdding()) {\r\n this.settings.splice(0, 1);\r\n this.selected = _.first(this.settings);\r\n }\r\n\r\n this.onSelectedChanged();\r\n this.form.$setPristine();\r\n };\r\n\r\n this.canRemove = function () {\r\n if (this._isSaving) return false;\r\n if (!this.editing) return false;\r\n if (!this.form) return false;\r\n if (this.isAdding()) return false;\r\n\r\n return true;\r\n };\r\n\r\n this.remove = function () {\r\n if (!this.canRemove()) return;\r\n\r\n dialogService.confirm([\"Radera perioden permanent.\", \"Detta kan inte ångras\", \"Är du säker?\"])\r\n .then(() => {\r\n this._isSaving = true;\r\n tromanServer.Politiker.removePeriod(this.editing.Id)\r\n .then(() => {\r\n stateService.reload();\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => { this._isSaving = false; });\r\n });\r\n };\r\n\r\n this.canSave = function () {\r\n if (this._isSaving) return false;\r\n if (!this.editing) return false;\r\n if (!this.form) return false;\r\n if (!this.form.$valid) return false;\r\n\r\n return this.isAdding() || this.form.$dirty;\r\n };\r\n\r\n this.save = function save() {\r\n\r\n if (!this.canSave()) return;\r\n\r\n this.form.$commitViewValue();\r\n\r\n if (this.form.$invalid) return;\r\n\r\n this.form.$setSubmitted();\r\n\r\n this._isSaving = true;\r\n tromanServer.Politiker.setPeriod(this.editing)\r\n .then(() => {\r\n stateService.reload();\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => { this._isSaving = false; });\r\n };\r\n\r\n this.canSaveSystem = function () {\r\n if (this._isSaving) return false;\r\n if (!this.systemSettingsForm) return false;\r\n if (!this.systemSettingsForm.$valid) return false;\r\n\r\n return this.systemSettingsForm.$dirty;\r\n };\r\n\r\n this.saveSystem = function () {\r\n\r\n if (!this.canSaveSystem()) return;\r\n\r\n this.systemSettingsForm.$commitViewValue();\r\n\r\n if (this.systemSettingsForm.$invalid) return;\r\n\r\n this.systemSettingsForm.$setSubmitted();\r\n\r\n this._isSaving = true;\r\n tromanServer.System.setSettings(this.systemSettings)\r\n .then(() => {\r\n stateService.reload();\r\n })\r\n .catch(dialogService.error)\r\n .finally(() => { this._isSaving = false; });\r\n };\r\n}]);\r\n","import './profile.less';\r\n\r\nangular.module(\"tromanWeb\").controller('ProfileController', ['accountServer', 'isTroman', 'dialogService', 'systemInfo', 'userProfile', function (accountServer, isTroman, dialogService, systemInfo, userProfile) {\r\n\r\n let self = this;\r\n\r\n function resetPasswordForm() {\r\n self.currentPassword = null;\r\n self.newPassword = null;\r\n self.confirmPassword = null;\r\n\r\n if (self.passwordform) {\r\n self.passwordform.$setPristine();\r\n self.passwordform.$setUntouched();\r\n }\r\n }\r\n\r\n this.systemInfo = systemInfo;\r\n this.profile = userProfile;\r\n this.passwordform = null;\r\n\r\n resetPasswordForm();\r\n\r\n this.getActiveRoles = function () {\r\n return isTroman ? userProfile.TromanRoles.display : userProfile.ValmanRoles.display;\r\n };\r\n\r\n this.canChangePassword = function () {\r\n if (!this.passwordform) return false;\r\n if (!this.passwordform.$valid) return false;\r\n\r\n return true;\r\n };\r\n\r\n this.changePassword = function () {\r\n if (!this.canChangePassword()) return;\r\n\r\n accountServer.Profile\r\n .changePassword(this.currentPassword, this.newPassword)\r\n .finally(() => {\r\n resetPasswordForm();\r\n })\r\n .then(() => {\r\n dialogService.notify('Lösenordet har ändrats.');\r\n })\r\n .catch(dialogService.error);\r\n };\r\n}]);\r\n","import * as reportLimits from './reportLimits';\r\n\r\nReportDialogController.$inject = ['downloadService', 'reportService', 'ObjectCache'];\r\nfunction ReportDialogController(downloadService, reportService, ObjectCache) {\r\n\r\n this.$onInit = function () {\r\n const filter = this._resolve.filter;\r\n\r\n if (filter.persons == null || filter.persons.length === 0) {\r\n this.error = \"Inga personer valda\";\r\n } else if (filter.persons.length > reportLimits.MaxPersonIds) {\r\n this.error = \"För många personer valda (max \" + reportLimits.MaxPersonIds + \")\";\r\n } else {\r\n filter.persons = filter.persons.map(x => x.Id).filter(x => x != null);\r\n this.selection = filter.persons.length + ((filter.persons.length === 1) ? \" person\" : \" personer\");\r\n }\r\n\r\n reportService.getPersonReports().then(list => {\r\n this.reports = list;\r\n this.report = this.reports[0];\r\n this.reportChanged();\r\n }).catch(err => void (this.error = err));\r\n\r\n ObjectCache.allWageTypes().then(data => void (this.wageTypes = data));\r\n };\r\n\r\n this.reportChanged = function () {\r\n this.enable = this.report.params;\r\n this.args = reportService.getDefaultArguments(this.report);\r\n this.args.Query.PersonIds = this._resolve.filter.persons;\r\n };\r\n\r\n this.canSave = function () {\r\n return this.form && this.form.$valid && !this.isSaving && this._resolve.filter.persons.length > 0 && this._resolve.filter.persons.length <= reportLimits.MaxPersonIds;\r\n };\r\n\r\n this.submit = function submit() {\r\n\r\n if (!this.canSave()) return;\r\n\r\n this.isSaving = true;\r\n this.error = null;\r\n\r\n reportService\r\n .generate(this.report.Id, this.args)\r\n .finally(() => this.isSaving = false)\r\n .then(rsp => downloadService.downloadBlob(rsp.blob, rsp.filename))\r\n .catch(err => void (this.error = err));\r\n };\r\n\r\n this.close = function () {\r\n this._close({ $value: 'done' });\r\n };\r\n}\r\n\r\nangular.module(\"tromanWeb\").component(\"ergoReportDialog\", {\r\n template: require('./reportDialog.html'),\r\n bindings: {\r\n _close: '&close',\r\n _dismiss: '&dismiss',\r\n _resolve: ' 0) {\r\n args.Query.PartyIds = [];\r\n _.forEach(self.selectedParties, party => {\r\n if (party.Id === NoPartyOption.Id) {\r\n args.Query.WithoutParty = true;\r\n } else {\r\n args.Query.PartyIds.push(party.Id);\r\n }\r\n });\r\n }\r\n\r\n reportService\r\n .generate(self.report.Id, args)\r\n .then(function (rsp) {\r\n self.isSaving = false;\r\n downloadService.downloadBlob(rsp.blob, rsp.filename);\r\n })\r\n .catch(function (err) {\r\n self.error = err;\r\n self.isSaving = false;\r\n });\r\n };\r\n\r\n load();\r\n}]);","export const MaxPersonIds = 200;\r\n","ReportOptionsController.$inject = [];\r\nfunction ReportOptionsController() {\r\n}\r\n\r\nangular.module(\"tromanWeb\").component(\"ergoReportOptions\", {\r\n template: require('./reportOptions.html'),\r\n bindings: {\r\n args: '<',\r\n enable: '<'\r\n },\r\n controller: ReportOptionsController\r\n});\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { MissionStatus } from '../objects/Mission';\r\n\r\nangular.module(\"tromanWeb\").factory('reportService', ['$q', 'tromanServer', 'isTroman', function reportServiceFactory($q, tromanServer, isTroman) {\r\n\r\n var reportService = {};\r\n var cachedReports = null;\r\n\r\n function loadReports() {\r\n if (cachedReports != null) {\r\n return $q.when(cachedReports);\r\n } else {\r\n return tromanServer.Reports.getReports()\r\n .then(infos => cachedReports = _.mapKeys(infos, x => x.Id));\r\n }\r\n }\r\n \r\n const hiddenReportIds = [\r\n 'ConsentLetter',\r\n 'Attestation'\r\n ];\r\n\r\n reportService.getVisibleReports = function getVisibleReports() {\r\n return loadReports().then(reports => _.sortBy(_.filter(reports, x => hiddenReportIds.indexOf(x.Id) < 0), ['Identifier']));\r\n };\r\n \r\n const personReportIds = [\r\n 'ConsentLetter',\r\n 'Label_70x36',\r\n 'Equipment',\r\n 'PersonEarnings',\r\n 'PersonAttendance',\r\n 'StatAttendance',\r\n 'PaymentAccumulation',\r\n 'PaymentSummary'\r\n ];\r\n\r\n reportService.getPersonReports = function getPersonReports() {\r\n return loadReports().then(reports => personReportIds.map(x => reports[x]).filter(x => x.params.Query.PersonIds));\r\n };\r\n\r\n reportService.getDefaultArguments = function (report) {\r\n var ret = angular.copy(report.Defaults);\r\n var today = utility.todayDate();\r\n if (report.params.Query.BirthdayFrom)\r\n ret.Query.BirthdayFrom = new Date(today.getTime());\r\n if (report.params.Query.BirthdayTo)\r\n ret.Query.BirthdayTo = new Date(today.getFullYear(), 11, 31);\r\n if (report.params.Query.AgeFactor)\r\n ret.Query.AgeFactor = 5;\r\n if (report.params.Query.OnlyCurrentMandatePeriod)\r\n ret.Query.OnlyCurrentMandatePeriod = true;\r\n if (report.params.Query.MissionStatus)\r\n ret.Query.MissionStatus = MissionStatus.ActiveOrFuture;\r\n if (report.params.Query.AssociatedMissionStatus)\r\n ret.Query.AssociatedMissionStatus = MissionStatus.None;\r\n if (report.params.Query.MeetingDateFrom)\r\n ret.Query.MeetingDateFrom = new Date(today.getFullYear(), 0, 1);\r\n if (report.params.Query.IsEquipmentReturned)\r\n ret.Query.IsEquipmentReturned = false;\r\n if (report.params.Query.EarningValidToStart)\r\n ret.Query.EarningValidToStart = new Date(today.getTime());\r\n\r\n if (report.Id === 'Label_70x36') {\r\n if (report.params.Options.AddressUse)\r\n ret.Options.AddressUse = 3; // DistributionHome\r\n } else if (report.Id == 'ConsentLetter') {\r\n ret.Options.Title = \"Medgivandebrev\";\r\n if (isTroman) {\r\n ret.Options.LeadText =\r\n \"I vårt förtroendevaldaregister Troman finns ett antal uppgifter registrerade om dig. \" +\r\n \"I enlighet med gällande lagstiftning och regler upplyser vi dig här vilka uppgifter som finns.\\r\\n\" +\r\n \"Uppgifterna kan dels användas för presentation på vår hemsida. \" +\r\n \"Men också i de fall som de efterfrågas av allmänheten. \" +\r\n \"Men framförallt är det uppgifter som vi behöver för att kunna komma i kontakt med dig, och för att registrera in uppdrag, historik, med mera.\\r\\n\" +\r\n \"Kontrollera att uppgifterna stämmer. Fyll gärna på med sådant som saknas. Och slutligen markera de uppgifter som du samtycker att vi publicerar på Internet.\";\r\n } else {\r\n ret.Options.LeadText =\r\n \"I vårt valarbetarsystem Valman finns ett antal uppgifter registrerade om dig. \" +\r\n \"I enlighet med gällande lagstiftning och regler upplyser vi dig här vilka uppgifter som finns.\\r\\n\" +\r\n \"Uppgifterna används för att vi ska kunna komma i kontakt med dig och för att registrera dina arbetspass.\\r\\n\" +\r\n \"Kontrollera att uppgifterna stämmer. Fyll gärna på med sådant som saknas.\";\r\n }\r\n ret.Options.UsePersonComment = true;\r\n }\r\n\r\n return ret;\r\n };\r\n\r\n reportService.generate = function generate(id, pars) {\r\n return tromanServer.Reports.generate(id, pars);\r\n };\r\n\r\n return reportService;\r\n}]);\r\n","import { Award } from '../objects/Award';\r\nimport { Division } from '../objects/Division';\r\nimport { Equipment } from '../objects/Equipment';\r\nimport { MandatePeriod } from '../objects/MandatePeriod';\r\nimport { MissionType } from '../objects/MissionType';\r\nimport { Setting } from '../objects/Setting';\r\nimport { OrganizationType } from '../objects/OrganizationType';\r\nimport { Party } from '../objects/Party';\r\nimport { WageCalculation } from '../objects/WageCalculation';\r\nimport { WageType } from '../objects/WageType';\r\n\r\nimport { ResourceEndpoint } from './ResourceEndpoint';\r\nimport { MeetingEndpoint } from './MeetingEndpoint';\r\nimport { MissionEndpoint } from './MissionEndpoint';\r\nimport { SystemEndpoint } from './SystemEndpoint';\r\nimport { OrganizationEndpoint } from './OrganizationEndpoint';\r\nimport { PersonEndpoint } from './PersonEndpoint';\r\nimport { WageGroupEndpoint } from './WageGroupEndpoint';\r\nimport { PaymentRoundEndpoint } from './PaymentRoundEndpoint';\r\nimport { ReportEndpoint } from './ReportEndpoint';\r\nimport { MissionGroupEndpoint } from './MissionGroupEndpoint';\r\nimport { PayrollEndpoint } from './PayrollEndpoint';\r\nimport { IntegrationEndpoint } from './IntegrationEndpoint';\r\nimport { NotificationEndpoint } from './NotificationEndpoint';\r\nimport { CeremonyEndpoint } from './CeremonyEndpoint';\r\n\r\nimport { ApiService } from './ApiService';\r\nimport { PolitikerEndpoint } from './PolitikerEndpoint';\r\nimport { FileEndpoint } from './FileEndpoint';\r\n\r\n/**\r\n * @typedef { import('../../auth/Authentication').Authentication } Authentication\r\n */\r\n\r\nexport class ApiServer {\r\n\r\n /**\r\n *\r\n * @param {Authentication} auth\r\n * @param {string} apiurl\r\n */\r\n constructor(auth, apiurl) {\r\n let api = new ApiService(auth, apiurl);\r\n\r\n this.Awards = new ResourceEndpoint('/api/awards', api, Award);\r\n this.Divisions = new ResourceEndpoint('/api/divisions', api, Division);\r\n this.Equipment = new ResourceEndpoint('/api/equipment', api, Equipment);\r\n this.MandatePeriods = new ResourceEndpoint('/api/mandates', api, MandatePeriod);\r\n this.MissionTypes = new ResourceEndpoint('/api/missiontypes', api, MissionType);\r\n this.Settings = new ResourceEndpoint('/api/settings', api, Setting);\r\n this.OrganizationTypes = new ResourceEndpoint('/api/organizationtypes', api, OrganizationType);\r\n this.Parties = new ResourceEndpoint('/api/parties', api, Party);\r\n this.WageCalculations = new ResourceEndpoint('/api/wagecalculations', api, WageCalculation);\r\n this.WageTypes = new ResourceEndpoint('/api/wagetypes', api, WageType);\r\n\r\n this.Meetings = new MeetingEndpoint('/api/meetings', api);\r\n this.Missions = new MissionEndpoint('/api/missions', api);\r\n this.System = new SystemEndpoint('/api/system', api);\r\n this.Organizations = new OrganizationEndpoint('/api/organizations', api);\r\n this.Persons = new PersonEndpoint('/api/persons', api);\r\n this.WageGroups = new WageGroupEndpoint('/api/wagegroups', api);\r\n this.PaymentRounds = new PaymentRoundEndpoint('/api/rounds', api);\r\n this.MissionGroups = new MissionGroupEndpoint('/api/missiongroups', api);\r\n this.Payroll = new PayrollEndpoint('/api/payroll', api);\r\n\r\n this.Reports = new ReportEndpoint('/api/reports', api);\r\n this.Notifications = new NotificationEndpoint('/api/notifications', api);\r\n\r\n this.Integrations = new IntegrationEndpoint('/api/integrations', api);\r\n\r\n this.Ceremonies = new CeremonyEndpoint('/api/ceremonies', api);\r\n this.Politiker = new PolitikerEndpoint('/api/politiker', api);\r\n this.Files = new FileEndpoint('/api/files', api);\r\n }\r\n}","import * as _ from 'lodash';\r\nimport { ResponseContext } from './ResponseContext';\r\nimport { TromanError } from '../../common/TromanError';\r\nimport { checkResponseErrors, makeRequestInit } from '../../common/fetchHelper';\r\n\r\n/**\r\n * @typedef { import('../../common/auth/Authentication').Authentication } Authentication\r\n * @typedef { (any, ctx: ResponseContext) => any } ResultParser\r\n */\r\n\r\nexport class ApiResponse {\r\n constructor(data) {\r\n if (data == null) throw new TromanError('api_invalid_response');\r\n\r\n this.result = data.Result;\r\n this.context = new ResponseContext(data.Objects || []);\r\n this.warnings = data.Warnings;\r\n }\r\n\r\n parseEntity(entityConstructor) {\r\n if (this.result == null) throw new TromanError('api_missing_result');\r\n\r\n if (_.isArray(this.result)) {\r\n return this.result.map(id => this.context.get(id, entityConstructor));\r\n } else {\r\n return this.context.get(this.result, entityConstructor);\r\n }\r\n }\r\n\r\n createEntityResponse(entityConstructor) {\r\n if (this.result == null) throw new TromanError('api_missing_result');\r\n\r\n return {\r\n result: this.parseEntity(entityConstructor),\r\n warnings: this.warnings,\r\n };\r\n }\r\n\r\n /**\r\n * \r\n * @param {ResultParser} resultParser\r\n */\r\n parseListResult(resultParser) {\r\n if (this.result == null) throw new TromanError('api_missing_result');\r\n if (!_.isArray(this.result)) throw new TromanError('api_result_not_array');\r\n\r\n return _.map(this.result, x => resultParser(x, this.context));\r\n }\r\n\r\n /**\r\n * \r\n * @param {ResultParser} resultParser\r\n */\r\n parseSingleResult(resultParser) {\r\n if (this.result == null) throw new TromanError('api_missing_result');\r\n\r\n return resultParser(this.result, this.context);\r\n }\r\n\r\n getResult() {\r\n if (this.result == null) throw new TromanError('api_missing_result');\r\n\r\n return this.result;\r\n }\r\n\r\n createEmptyResponse() {\r\n return {\r\n warnings: this.warnings,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * @param {Response} rsp\r\n */\r\nfunction parseResponse(rsp) {\r\n return rsp.json().then(data => new ApiResponse(data));\r\n}\r\n\r\nfunction voidResponse() {\r\n}\r\n\r\n/**\r\n * \r\n * @param {string} contentDisposition\r\n */\r\nfunction parseContentDispositionFilename(contentDisposition) {\r\n var re = /filename\\*\\s*=\\s*UTF-8''([^;]*)/i;\r\n var m = re.exec(contentDisposition);\r\n if (m && m[1]) {\r\n return decodeURIComponent(m[1]).trim();\r\n } else {\r\n throw new TromanError('parse_contentdisposition_filename');\r\n }\r\n}\r\n\r\nexport class DownloadResult {\r\n constructor(filename, blob) {\r\n this.filename = filename;\r\n this.blob = blob;\r\n }\r\n\r\n asDataUrl() {\r\n return new Promise((resolve, reject) => {\r\n let fr = new FileReader();\r\n fr.onload = evt => resolve(evt.target.result);\r\n fr.onerror = evt => reject(evt.target.error);\r\n fr.onabort = _evt => reject('aborted');\r\n fr.readAsDataURL(this.blob);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * \r\n * @param {Response} rsp\r\n */\r\nfunction handleDownloadResponse(rsp) {\r\n let cd = rsp.headers.get('Content-Disposition');\r\n let fn = parseContentDispositionFilename(cd);\r\n return rsp.blob().then(blob => new DownloadResult(fn, blob));\r\n}\r\n\r\nexport class ApiService {\r\n /**\r\n *\r\n * @param {Authentication} auth\r\n * @param {string} baseurl\r\n */\r\n constructor(auth, baseurl) {\r\n this._fetchWith = function _fetchWith(url, init) {\r\n // Need to wrap using $q for angularjs change detection.\r\n return auth.fetch(baseurl + url, init).then(checkResponseErrors);\r\n };\r\n }\r\n \r\n getResponse(url) {\r\n const init = makeRequestInit('GET');\r\n return this._fetchWith(url, init).then(parseResponse);\r\n }\r\n\r\n postResponse(url, obj) {\r\n const init = makeRequestInit('POST', obj);\r\n return this._fetchWith(url, init).then(parseResponse);\r\n }\r\n\r\n postVoid(url, obj) {\r\n const init = makeRequestInit('POST', obj);\r\n return this._fetchWith(url, init).then(voidResponse);\r\n }\r\n\r\n putResponse(url, obj) {\r\n const init = makeRequestInit('PUT', obj);\r\n return this._fetchWith(url, init).then(parseResponse);\r\n }\r\n\r\n putVoid(url, obj) {\r\n const init = makeRequestInit('PUT', obj);\r\n return this._fetchWith(url, init).then(voidResponse);\r\n }\r\n\r\n postDownload(url, obj) {\r\n var init = makeRequestInit('POST', obj);\r\n return this._fetchWith(url, init).then(handleDownloadResponse);\r\n }\r\n\r\n getDownload(url) {\r\n const init = makeRequestInit('GET');\r\n return this._fetchWith(url, init).then(handleDownloadResponse);\r\n }\r\n}","export const PersonHasLoanedEquipment = \"person_has_loaned_equipment\";\r\nexport const PersonHasMultipleMissions = \"person_multiple_missions\";\r\nexport const MissionInGroup = \"mission_in_group\";\r\n","import * as utility from '../misc/utility';\r\nimport { CeremonyDetails, CeremonyInfo } from '../objects/Ceremony';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n */\r\n\r\nexport class CeremonyEndpoint {\r\n /**\r\n * \r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this.url = url;\r\n this._api = api;\r\n }\r\n\r\n getCeremony(id) {\r\n if (!utility.isGuid(id)) throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id);\r\n return this._api.getResponse(dst)\r\n .then(rsp => rsp.parseSingleResult(CeremonyDetails.mapResponse));\r\n }\r\n\r\n getCeremonies(criteria) {\r\n var dst = this.url + '/search';\r\n return this._api.postResponse(dst, criteria)\r\n .then(rsp => rsp.parseListResult(CeremonyInfo.mapResponse));\r\n }\r\n\r\n attachCeremony(id, cmd) {\r\n if (!utility.isGuid(id)) throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id) + '/attach';\r\n return this._api.postResponse(dst, cmd)\r\n .then(rsp => rsp.getResult());\r\n }\r\n\r\n convertCeremony(id, cmd) {\r\n if (!utility.isGuid(id)) throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id) + '/convert';\r\n return this._api.postResponse(dst, cmd)\r\n .then(rsp => rsp.getResult());\r\n }\r\n\r\n rejectCeremony(id, cmd) {\r\n if (!utility.isGuid(id)) throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id) + '/reject';\r\n return this._api.postVoid(dst, cmd);\r\n }\r\n}\r\n\r\n","import * as utility from '../misc/utility';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n */\r\n\r\nexport class FileEndpoint {\r\n /**\r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this.url = url;\r\n this._api = api;\r\n }\r\n\r\n downloadAttachment(id) {\r\n if (!utility.isGuid(id)) throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/attachment/' + encodeURIComponent(id);\r\n return this._api.getDownload(dst);\r\n }\r\n}\r\n\r\n","import { TromanError } from '../../common/TromanError';\r\nimport { RESPONSE_404, RESPONSE_502 } from '../../common/ApiResponseCodes';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n*/\r\n\r\nexport class IntegrationEndpoint {\r\n /**\r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this.url = url;\r\n this._api = api;\r\n }\r\n\r\n lookupPerson(personalNumber) {\r\n var dst = this.url + '/persons/lookup';\r\n return this._api.postResponse(dst,\r\n {\r\n personalNumber: personalNumber\r\n })\r\n .then(rsp => rsp.getResult())\r\n .catch((error) => {\r\n if (error instanceof TromanError) {\r\n if (error.code === RESPONSE_404) {\r\n return null;\r\n }\r\n if (error.code === RESPONSE_502) {\r\n throw error.message;\r\n }\r\n }\r\n\r\n throw error;\r\n });\r\n }\r\n}\r\n\r\n","import { Meeting, MeetingPolitikerInfo, MeetingPendingInfo } from '../objects/Meeting';\r\nimport { ResourceEndpoint } from './ResourceEndpoint';\r\n\r\n/**\r\n * @typedef { import('../objects/Attachment').AttachmentCmd } AttachmentCmd\r\n */\r\n\r\n/**\r\n * @typedef MeetingCmd\r\n * @type {object}\r\n * @property {Meeting} Meeting\r\n * @property {AttachmentCmd} Attachments\r\n */\r\n\r\nexport class MeetingEndpoint extends ResourceEndpoint {\r\n constructor(url, api) {\r\n super(url, api, Meeting);\r\n }\r\n\r\n /**\r\n * @param {MeetingCmd} cmd\r\n */\r\n addMeeting(cmd) {\r\n if (!(cmd.Meeting instanceof Meeting)) {\r\n throw new TypeError('Invalid Argument');\r\n }\r\n\r\n let dst = this.url;\r\n return this._api.postResponse(dst, cmd)\r\n .then(rsp => rsp.createEntityResponse(this.resourceConstructor));\r\n }\r\n\r\n /**\r\n * @param {Meeting} obj\r\n */\r\n addEntity(obj) {\r\n return this.addMeeting({ Meeting: obj });\r\n }\r\n\r\n /**\r\n * @param {MeetingCmd} cmd\r\n */\r\n updateMeeting(cmd) {\r\n if (!(cmd.Meeting instanceof Meeting)) {\r\n throw new TypeError('Invalid Argument');\r\n }\r\n\r\n var dst = this.url + '/' + encodeURIComponent(cmd.Meeting.Id);\r\n return this._api.putResponse(dst, cmd)\r\n .then(rsp => rsp.createEntityResponse(this.resourceConstructor));\r\n }\r\n\r\n /**\r\n * @param {Meeting} obj\r\n */\r\n updateEntity(obj) {\r\n return this.updateMeeting({ Meeting: obj });\r\n }\r\n\r\n getMeetingsWithClaims(criteria) {\r\n var dst = this.url + '/claims';\r\n return this._api.postResponse(dst, criteria)\r\n .then(rsp => rsp.parseListResult(MeetingPolitikerInfo.mapResponse));\r\n }\r\n\r\n getMeetingsWithPending(criteria) {\r\n var dst = this.url + '/pending';\r\n return this._api.postResponse(dst, criteria)\r\n .then(rsp => rsp.parseListResult(MeetingPendingInfo.mapResponse));\r\n }\r\n}\r\n\r\n","import { Mission } from '../objects/Mission';\r\nimport { ResourceEndpoint } from './ResourceEndpoint';\r\n\r\nexport class MissionEndpoint extends ResourceEndpoint {\r\n constructor(url, api) {\r\n super(url, api, Mission);\r\n }\r\n\r\n updateMultiple(missionUpdate) {\r\n var dst = this.url + '/multiple';\r\n return this._api.putResponse(dst, missionUpdate).then(rsp => rsp.createEmptyResponse());\r\n }\r\n\r\n updateSorting(sortUpdate) {\r\n var dst = this.url + '/sorting';\r\n return this._api.putVoid(dst, sortUpdate);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { MissionGroup } from '../objects/MissionGroup';\r\nimport { ResourceEndpoint } from './ResourceEndpoint';\r\n\r\nexport class MissionGroupEndpoint extends ResourceEndpoint {\r\n constructor(url, api) {\r\n super(url, api, MissionGroup);\r\n }\r\n\r\n addToMissionGroup(missionGroupId, missions) {\r\n if (!utility.isGuid(missionGroupId)) throw \"Invalid parameter, expected guid\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(missionGroupId) + '/include';\r\n\r\n return this._api.postVoid(dst, {\r\n Id: missionGroupId,\r\n MissionIds: _.map(missions, x => x.Id),\r\n });\r\n }\r\n\r\n removeFromMissionGroup(missionGroupId, missions) {\r\n if (!utility.isGuid(missionGroupId)) throw \"Invalid parameter, expected guid\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(missionGroupId) + '/exclude';\r\n\r\n return this._api.postVoid(dst, {\r\n Id: missionGroupId,\r\n MissionIds: _.map(missions, x => x.Id),\r\n });\r\n }\r\n}\r\n","import { FrontPageNotifications } from '../objects/FrontPageNotifications';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n*/\r\n\r\nexport class NotificationEndpoint {\r\n /**\r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this._url = url;\r\n this._api = api;\r\n }\r\n\r\n getFrontPagenotifications() {\r\n return this._api.getResponse(this._url + '/frontpage')\r\n .then(rsp => new FrontPageNotifications(rsp.getResult(), rsp.context));\r\n }\r\n}\r\n","import { Organization } from '../objects/Organization';\r\nimport { ResourceEndpoint } from './ResourceEndpoint';\r\n\r\nexport class OrganizationEndpoint extends ResourceEndpoint {\r\n constructor(url, api) {\r\n super(url, api, Organization);\r\n }\r\n\r\n removeWageGroup(organizations) {\r\n var dst = this.url + '/removewagegroup';\r\n var items = organizations.map(x => ({\r\n Id: x.Id,\r\n RowVersion: x.RowVersion\r\n }));\r\n return this._api.postVoid(dst, { Items: items });\r\n }\r\n}\r\n","import { PaymentRound } from '../objects/PaymentRound';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n*/\r\n\r\nexport class PaymentRoundEndpoint {\r\n /**\r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this._url = url;\r\n this._api = api;\r\n }\r\n\r\n getUrl(paymentRound) {\r\n if (!(paymentRound instanceof PaymentRound)) {\r\n throw new TypeError('Invalid Argument');\r\n }\r\n return this._url + '/' + encodeURIComponent(paymentRound.Id);\r\n }\r\n\r\n downloadFile(paymentRound) {\r\n var dst = this.getUrl(paymentRound) + '/download';\r\n return this._api.postDownload(dst, {});\r\n }\r\n\r\n search(searchCriteria) {\r\n var dst = this._url + '/search';\r\n return this._api.postResponse(dst, searchCriteria)\r\n .then(x => x.parseEntity(PaymentRound));\r\n }\r\n}\r\n","import * as utility from '../misc/utility';\r\nimport { Payslip, Remuneration } from '../objects/Payslip';\r\nimport { AttendanceList } from '../objects/Attendance';\r\nimport { PendingCertification } from '../objects/PendingCertification';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n*/\r\n\r\nexport class PayrollEndpoint {\r\n /**\r\n * \r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this._url = url;\r\n this._api = api;\r\n }\r\n\r\n getAttendance(meetingId) {\r\n if (!utility.isGuid(meetingId))\r\n throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this._url + '/' + encodeURIComponent(meetingId) + '/attendance';\r\n return this._api.getResponse(dst)\r\n .then(AttendanceList.fromResponse);\r\n }\r\n\r\n getMeetingPayroll(meetingId) {\r\n if (!utility.isGuid(meetingId)) throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this._url + '/' + encodeURIComponent(meetingId);\r\n return this._api.getResponse(dst)\r\n .then(x => x.parseListResult(Payslip.mapResponse));\r\n }\r\n\r\n updateMeetingPayroll(meetingId, cmd) {\r\n if (!utility.isGuid(meetingId)) throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this._url + '/' + encodeURIComponent(meetingId) + '/update';\r\n\r\n return this._api.postVoid(dst, cmd);\r\n }\r\n\r\n recallTimereport(meetingId, cmd) {\r\n if (!utility.isGuid(meetingId)) throw \"Invalid parameter, expected GUID\";\r\n\r\n let dst = this._url + '/' + encodeURIComponent(meetingId) + '/recalltimereport';\r\n\r\n return this._api.postResponse(dst, cmd).then(x => x.context.getAttendance(x.getResult()));\r\n }\r\n\r\n reactivateTimereport(meetingId, cmd) {\r\n if (!utility.isGuid(meetingId)) throw \"Invalid parameter, expected GUID\";\r\n\r\n let dst = this._url + '/' + encodeURIComponent(meetingId) + '/reactivatetimereport';\r\n\r\n return this._api.postResponse(dst, cmd).then(x => x.context.getAttendance(x.getResult()));\r\n }\r\n\r\n recallClaim(cmd) {\r\n let dst = this._url + '/recallclaim';\r\n return this._api\r\n .postResponse(dst, cmd)\r\n .then(x => x.context.getClaim(x.getResult()));\r\n }\r\n\r\n recallCertification(cmd) {\r\n let dst = this._url + '/recallcertification';\r\n\r\n return this._api.postResponse(dst, cmd).then(x => {\r\n let result = new Remuneration(x.getResult());\r\n result.resolve(x.context);\r\n return result;\r\n });\r\n }\r\n\r\n deleteRemuneration(id) {\r\n if (!utility.isGuid(id)) throw \"Invalid parameter, expected GUID\";\r\n\r\n let dst = this._url + '/deleteremuneration';\r\n \r\n return this._api.postVoid(dst, { Id: id });\r\n }\r\n\r\n getPendingCertification() {\r\n return this._api\r\n .postResponse(this._url + '/pendingcertification', {})\r\n .then(PendingCertification.fromResponse);\r\n }\r\n}\r\n","import * as utility from '../misc/utility';\r\nimport { Person } from '../objects/Person';\r\nimport { ResourceEndpoint } from './ResourceEndpoint';\r\n\r\nexport class PersonEndpoint extends ResourceEndpoint {\r\n constructor(url, api) {\r\n super(url, api, Person);\r\n }\r\n\r\n archive(person, deleteContactInfo, unpublishPublik, politikerExpireDate, deleteFiles) {\r\n if (!(person instanceof Person)) throw \"Invalid parameter, expected person\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(person.Id) + '/archive';\r\n\r\n return this._api.postResponse(dst, {\r\n Id: person.Id,\r\n RowVersion: person.RowVersion,\r\n DeleteContactInformation: deleteContactInfo,\r\n DeleteFiles: deleteFiles,\r\n UnpublishPublik: unpublishPublik,\r\n PolitikerExpireDate: politikerExpireDate,\r\n }).then(x => x.warnings || {});\r\n }\r\n\r\n archiveMultiple(persons, deleteContactInfo, unpublishPublik, politikerExpireDate, deleteFiles) {\r\n var dst = this.url + '/archive';\r\n var items = persons.map(person => ({\r\n Id: person.Id,\r\n RowVersion: person.RowVersion\r\n }));\r\n var cmd = {\r\n Items: items,\r\n DeleteContactInformation: deleteContactInfo,\r\n DeleteFiles: deleteFiles,\r\n UnpublishPublik: unpublishPublik,\r\n PolitikerExpireDate: politikerExpireDate,\r\n };\r\n return this._api.postResponse(dst, cmd).then(rsp => rsp.getResult());\r\n }\r\n\r\n purge(id) {\r\n if (!utility.isGuid(id))\r\n throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id) + '/purge';\r\n\r\n return this._api.postVoid(dst, {});\r\n }\r\n}\r\n","import { PolitikerSettings } from '../objects/PolitikerSettings';\r\nimport { TromanError } from '../../common/TromanError';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n */\r\n\r\nexport class PolitikerEndpoint {\r\n /**\r\n * \r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this.url = url;\r\n this._api = api;\r\n }\r\n\r\n getSettings() {\r\n var dst = this.url + '/settings';\r\n return this._api.getResponse(dst)\r\n .then(rsp => rsp.parseEntity(PolitikerSettings));\r\n }\r\n\r\n setPeriod(settings) {\r\n if (!(settings instanceof PolitikerSettings)) throw new TromanError(\"invalid_parameter\");\r\n\r\n if (settings.Id) {\r\n return this._api.putVoid(this.url + '/settings/' + encodeURIComponent(settings.Id), settings).then(() => settings.Id);\r\n } else {\r\n return this._api.postResponse(this.url + '/settings', settings).then(x => x.getResult());\r\n }\r\n }\r\n\r\n removePeriod(id) {\r\n return this._api.postVoid(this.url + '/settings/' + encodeURIComponent(id) + '/delete');\r\n }\r\n}\r\n\r\n","import * as _ from 'lodash';\r\nimport { ReportInfo } from '../objects/ReportInfo';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n*/\r\n\r\nexport class ReportEndpoint {\r\n /**\r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this._url = url;\r\n this._api = api;\r\n this._cached = null;\r\n }\r\n\r\n getReports() {\r\n return this._api.getResponse(this._url)\r\n .then(rsp => _.map(rsp.getResult(), x => new ReportInfo(x)));\r\n }\r\n\r\n generate(id, pars) {\r\n var parameters = angular.copy(pars);\r\n return this._api.postDownload(this._url + '/' + id, parameters);\r\n }\r\n}\r\n","import * as utility from '../misc/utility';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n*/\r\n\r\nexport class ResourceEndpoint {\r\n /**\r\n * @param {string} url\r\n * @param {ApiService} api\r\n * @param {any} resourceConstructor\r\n */\r\n constructor(url, api, resourceConstructor) {\r\n this.url = url;\r\n this.resourceConstructor = resourceConstructor;\r\n this._api = api;\r\n }\r\n\r\n list() {\r\n return this.search({});\r\n }\r\n\r\n search(searchCriteria) {\r\n var dst = this.url + '/search';\r\n return this._api.postResponse(dst, searchCriteria)\r\n .then(rsp => rsp.parseEntity(this.resourceConstructor));\r\n }\r\n\r\n get(id) {\r\n if (!utility.isGuid(id))\r\n throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id);\r\n return this._api.getResponse(dst)\r\n .then(rsp => rsp.parseEntity(this.resourceConstructor));\r\n }\r\n\r\n addEntity(obj) {\r\n if (!(obj instanceof this.resourceConstructor)) {\r\n throw new TypeError('Invalid Argument');\r\n }\r\n var dst = this.url;\r\n return this._api.postResponse(dst, obj)\r\n .then(rsp => rsp.createEntityResponse(this.resourceConstructor));\r\n }\r\n\r\n updateEntity(obj) {\r\n if (!(obj instanceof this.resourceConstructor)) {\r\n throw new TypeError('Invalid Argument');\r\n }\r\n var dst = this.url + '/' + encodeURIComponent(obj.Id);\r\n return this._api.putResponse(dst, obj)\r\n .then(rsp => rsp.createEntityResponse(this.resourceConstructor));\r\n }\r\n\r\n activate(id) {\r\n if (!utility.isGuid(id))\r\n throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id) + '/activate';\r\n return this._api.postVoid(dst, {});\r\n }\r\n\r\n archive(id) {\r\n if (!utility.isGuid(id))\r\n throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id) + '/archive';\r\n return this._api.postVoid(dst, {});\r\n }\r\n\r\n hardRemove(id) {\r\n if (!utility.isGuid(id))\r\n throw \"Invalid parameter, expected GUID\";\r\n\r\n var dst = this.url + '/' + encodeURIComponent(id) + '/delete';\r\n return this._api.postVoid(dst, {});\r\n }\r\n\r\n updateSorting(items) {\r\n var dst = this.url + '/sorting';\r\n return this._api.putVoid(dst, items);\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\n\r\nimport { TromanError } from '../../common/TromanError';\r\n\r\nimport { Division } from '../objects/Division';\r\nimport { MandatePeriod } from '../objects/MandatePeriod';\r\nimport { Meeting } from '../objects/Meeting';\r\nimport { Mission } from '../objects/Mission';\r\nimport { MissionType } from '../objects/MissionType';\r\nimport { Organization } from '../objects/Organization';\r\nimport { OrganizationType } from '../objects/OrganizationType';\r\nimport { Party } from '../objects/Party';\r\nimport { Person } from '../objects/Person';\r\nimport { WageGroup } from '../objects/WageGroup';\r\nimport { WageType } from '../objects/WageType';\r\nimport { Attendance } from '../objects/Attendance';\r\nimport { PaymentRound } from '../objects/PaymentRound';\r\nimport { WageCalculation } from '../objects/WageCalculation';\r\nimport { Payment } from '../objects/Payment';\r\nimport { PolitikerSettings } from '../objects/PolitikerSettings';\r\nimport { Claim } from '../objects/Claim';\r\n\r\nexport class ResponseContext {\r\n\r\n constructor(objects) {\r\n var self = this;\r\n this.objects = {};\r\n objects.forEach(function (x) {\r\n self.objects[x.Id] = x;\r\n });\r\n this.built = {};\r\n }\r\n\r\n _getObject(constructor, id) {\r\n if (id == null) throw new TypeError('Expected Guid, got null');\r\n if (!utility.isGuid(id)) throw new TypeError('Expected Guid, got ' + typeof id);\r\n\r\n let existing = this.built[id];\r\n if (existing != null) {\r\n return existing;\r\n }\r\n\r\n let src = this.objects[id];\r\n if (src == null) {\r\n throw new TromanError('response_missing_id');\r\n }\r\n\r\n let obj = new constructor(src);\r\n this.built[id] = obj;\r\n obj.resolve(this, src);\r\n return obj;\r\n }\r\n\r\n get(id, constructor) {\r\n if (_.isArray(id)) {\r\n return id.map(this._getObject.bind(this, constructor));\r\n } else if (id != null) {\r\n return this._getObject(constructor, id);\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {string} id\r\n * @returns {Person}\r\n */\r\n getPerson(id) {\r\n return this.get(id, Person);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Mission}\r\n */\r\n getMission(id) {\r\n return this.get(id, Mission);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Organization}\r\n */\r\n getOrganization(id) {\r\n return this.get(id, Organization);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Meeting}\r\n */\r\n getMeeting(id) {\r\n return this.get(id, Meeting);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Division}\r\n */\r\n getDivision(id) {\r\n return this.get(id, Division);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {MissionType}\r\n */\r\n getMissionType(id) {\r\n return this.get(id, MissionType);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {OrganizationType}\r\n */\r\n getOrganizationType(id) {\r\n return this.get(id, OrganizationType);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Party}\r\n */\r\n getParty(id) {\r\n return this.get(id, Party);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {MandatePeriod}\r\n */\r\n getMandatePeriod(id) {\r\n return this.get(id, MandatePeriod);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {WageGroup}\r\n */\r\n getWageGroup(id) {\r\n return this.get(id, WageGroup);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {WageType}\r\n */\r\n getWageType(id) {\r\n return this.get(id, WageType);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {WageCalculation}\r\n */\r\n getWageCalculation(id) {\r\n return this.get(id, WageCalculation);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Attendance}\r\n */\r\n getAttendance(id) {\r\n return this.get(id, Attendance);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {PaymentRound}\r\n */\r\n getPaymentRound(id) {\r\n return this.get(id, PaymentRound);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Payment}\r\n */\r\n getPayment(id) {\r\n return this.get(id, Payment);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {PolitikerSettings}\r\n */\r\n getPolitikerSettings(id) {\r\n return this.get(id, PolitikerSettings);\r\n }\r\n\r\n /**\r\n *\r\n * @param {string} id\r\n * @returns {Claim}\r\n */\r\n getClaim(id) {\r\n return this.get(id, Claim);\r\n }\r\n}\r\n","import { SystemSettings } from '../objects/SystemSettings';\r\nimport { SystemInfo } from '../objects/SystemInfo';\r\n\r\n/**\r\n * @typedef { import('./ApiService').ApiService } ApiService\r\n*/\r\n\r\nexport class SystemEndpoint {\r\n /**\r\n * @param {string} url\r\n * @param {ApiService} api\r\n */\r\n constructor(url, api) {\r\n this._url = url;\r\n this._api = api;\r\n }\r\n\r\n getInfo() {\r\n return this._api.getResponse(this._url + '/info')\r\n .then(rsp => new SystemInfo(rsp.getResult(), rsp.context));\r\n }\r\n\r\n getSettings() {\r\n return this._api.getResponse(this._url + '/settings')\r\n .then(rsp => new SystemSettings(rsp.getResult()));\r\n }\r\n\r\n setSettings(obj) {\r\n if (!(obj instanceof SystemSettings))\r\n throw new TypeError(\"Not a SystemSettings\");\r\n return this._api.putResponse(this._url + '/settings', obj)\r\n .then(rsp => new SystemSettings(rsp.getResult()));\r\n }\r\n\r\n updatePublik() {\r\n return this._api.postVoid(this._url + '/updatepublik');\r\n }\r\n\r\n applyMunicipalityCodeSettings() {\r\n return this._api.postVoid(this._url + '/applymunicipality');\r\n }\r\n}\r\n","import { WageGroup } from '../objects/WageGroup';\r\nimport { ResourceEndpoint } from './ResourceEndpoint';\r\n\r\nexport class WageGroupEndpoint extends ResourceEndpoint {\r\n constructor(url, api) {\r\n super(url, api, WageGroup);\r\n }\r\n\r\n getUrl(wageGroup) {\r\n if (!(wageGroup instanceof WageGroup)) {\r\n throw new TypeError('Invalid Argument');\r\n }\r\n return this.url + '/' + encodeURIComponent(wageGroup.Id);\r\n }\r\n\r\n addRound(wageGroup, year, month, senderName) {\r\n var dst = this.getUrl(wageGroup) + '/addround';\r\n return this._api.postVoid(dst, {\r\n Id: wageGroup.Id,\r\n RowVersion: wageGroup.RowVersion,\r\n Year: year,\r\n Month: month,\r\n SenderName: senderName\r\n });\r\n }\r\n\r\n lockRound(wageGroup, locked) {\r\n var dst = this.getUrl(wageGroup) + '/lockround';\r\n return this._api.postVoid(dst, {\r\n Id: wageGroup.Id,\r\n RowVersion: wageGroup.RowVersion,\r\n IsLocked: !!locked\r\n });\r\n }\r\n\r\n removeRound(wageGroup) {\r\n var dst = this.getUrl(wageGroup) + '/removeround';\r\n return this._api.postVoid(dst, {\r\n Id: wageGroup.Id,\r\n RowVersion: wageGroup.RowVersion\r\n });\r\n }\r\n\r\n addVersion(wageGroup, senderName) {\r\n var dst = this.getUrl(wageGroup) + '/addversion';\r\n return this._api.postVoid(dst, {\r\n Id: wageGroup.Id,\r\n RowVersion: wageGroup.RowVersion,\r\n SenderName: senderName\r\n });\r\n }\r\n}\r\n","import * as _ from 'lodash';\r\nimport * as ApiWarnings from '../server/ApiWarnings';\r\n\r\nangular.module(\"tromanWeb\").factory('DialogControllerBase', ['$q', 'dialogService', function ($q, dialogService) {\r\n function DialogControllerBase(service, $scope) {\r\n\r\n var isSaving = false;\r\n\r\n $scope.$on('modal.closing', (event, reason, closing) => {\r\n if (!closing && reason !== 'cancelled') {\r\n event.preventDefault();\r\n this.cancel();\r\n }\r\n });\r\n\r\n this.getTitle = function () { throw 'Not Implemented'; };\r\n this.getItem = function () { throw 'Not Implemented'; };\r\n\r\n this.cancel = function cancel() {\r\n if (this.editForm.$dirty) {\r\n dialogService.confirm([\"Det finns osparade ändringar som kommer gå förlorade.\", \"Är du säker?\"]).then(() => {\r\n $scope.$dismiss(\"cancelled\");\r\n });\r\n } else {\r\n $scope.$dismiss(\"cancelled\");\r\n }\r\n };\r\n\r\n this.activate = function activate() {\r\n var item = this.getItem();\r\n var msg = \"Aktivera \" + this.getTitle() + \".\";\r\n\r\n dialogService.confirm([msg, \"Är du säker?\"]).then(() => {\r\n service.activate(item.Id)\r\n .then(() => { $scope.$close({ removed: item }); })\r\n .catch(err => this.showError(err));\r\n });\r\n };\r\n\r\n this.archive = function archive() {\r\n var item = this.getItem();\r\n var msg = \"Arkivera \" + this.getTitle() + \".\";\r\n\r\n dialogService.confirm([msg, \"Är du säker?\"]).then(() => {\r\n service.archive(item.Id)\r\n .then(() => { $scope.$close({ removed: item }); })\r\n .catch(err => this.showError(err));\r\n });\r\n };\r\n\r\n this.hardRemove = function hardRemove() {\r\n var msg = \"Radera \" + this.getTitle() + \" permanent.\";\r\n var item = this.getItem();\r\n dialogService.confirm([msg, \"Detta kan inte ångras\", \"Är du säker?\"]).then(() => {\r\n service.hardRemove(item.Id)\r\n .then(() => { $scope.$close({ removed: item }); })\r\n .catch(err => this.showError(err));\r\n });\r\n };\r\n\r\n this.canSave = function canSave() {\r\n return !isSaving;\r\n };\r\n\r\n this.canActivate = function canActivate() {\r\n return this.editForm.$dirty;\r\n };\r\n\r\n this.save = function save() {\r\n this.editForm.$commitViewValue();\r\n this.editForm.$setSubmitted();\r\n\r\n if (this.editForm.$invalid) return;\r\n\r\n var item = this.getItem();\r\n\r\n isSaving = true;\r\n if (item.Id == null) {\r\n service.addEntity(item)\r\n .then(rsp => this.checkResponse(rsp))\r\n .then(rsp => { $scope.$close({ added: rsp.result }); })\r\n .catch(err => this.showError(err))\r\n .finally(() => { isSaving = false; });\r\n } else {\r\n service.updateEntity(item)\r\n .then(rsp => this.checkResponse(rsp))\r\n .then(() => { $scope.$close({ updated: item }); })\r\n .catch(err => this.showError(err))\r\n .finally(() => { isSaving = false; });\r\n }\r\n };\r\n\r\n this.checkResponse = function checkResponse(rsp) {\r\n let warnings = [];\r\n\r\n if (_.has(rsp.warnings, ApiWarnings.PersonHasMultipleMissions)) {\r\n warnings.push('Personen har överlappande uppdrag.');\r\n }\r\n\r\n if (_.has(rsp.warnings, ApiWarnings.MissionInGroup)) {\r\n warnings.push('Uppdraget hör till en plocklista.');\r\n }\r\n\r\n if (warnings.length > 0) {\r\n return dialogService.warning(warnings).then(() => rsp).catch(() => rsp);\r\n }\r\n\r\n return $q.when(rsp);\r\n };\r\n\r\n this.showError = function showError(err) {\r\n this.error = err;\r\n };\r\n\r\n this.loadItem = function loadItem(item) {\r\n this.isAdding = !(item && item.Id);\r\n if (this.isAdding) {\r\n return $q.when(item);\r\n }\r\n return service.get(item.Id);\r\n };\r\n }\r\n\r\n return DialogControllerBase;\r\n}]);\r\n","angular.module(\"tromanWeb\").factory('browserService', [function () {\r\n\r\n var so = {};\r\n\r\n var NEXTNAMEID = 0;\r\n so.openChildWindow = function openChildWindow(url, name, params) {\r\n window.childParams = window.childParams || {};\r\n name = name || (\"CHILD\" + (NEXTNAMEID++));\r\n window.childParams[name] = params;\r\n var win = window.open(url, name);\r\n return win;\r\n };\r\n\r\n return so;\r\n\r\n}]);\r\n","/* globals webkitURL */\r\n\r\nimport { TextEncoderLite } from 'text-encoder-lite';\r\n\r\nangular.module(\"tromanWeb\").factory('downloadService', ['$log', function ($log) {\r\n\r\n var utf8Encoding = new TextEncoderLite('utf-8');\r\n var lastObjectUrl = null;\r\n\r\n var hasDownload = (function () {\r\n var a = document.createElement('a');\r\n return typeof a.download !== 'undefined';\r\n });\r\n\r\n var createOURL = URL.createObjectURL || (webkitURL && webkitURL.createObjectURL);\r\n var revokeOURL = URL.revokeObjectURL || (webkitURL && webkitURL.revokeObjectURL);\r\n var hasOURL = (typeof createOURL !== 'undefined') && (typeof revokeOURL !== 'undefined');\r\n\r\n function downloadUrl(url, filename) {\r\n if (hasDownload) {\r\n try {\r\n var a = document.createElement('a');\r\n a.href = url;\r\n a.target = '_blank';\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n return true;\r\n } catch (err) {\r\n $log.error('downloadUrl with download failed.', err);\r\n }\r\n }\r\n\r\n try {\r\n return !!window.open(url, '_blank');\r\n } catch (err) {\r\n $log.error(\"downloadUrl with window.open failed.\", err);\r\n return false;\r\n }\r\n }\r\n\r\n function downloadBlobOURL(blob, filename) {\r\n if (!hasOURL)\r\n return false;\r\n\r\n if (lastObjectUrl != null) {\r\n revokeOURL(lastObjectUrl);\r\n lastObjectUrl = null;\r\n }\r\n\r\n lastObjectUrl = createOURL(blob);\r\n return downloadUrl(lastObjectUrl, filename);\r\n }\r\n\r\n function downloadBlob(blob, filename) {\r\n\r\n if (!(blob instanceof Blob))\r\n throw new TypeError(\"Blob expected\");\r\n\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n return window.navigator.msSaveOrOpenBlob(blob, filename);\r\n } else if (hasOURL) {\r\n return downloadBlobOURL(blob, filename);\r\n }\r\n return false;\r\n }\r\n\r\n var so = {};\r\n\r\n so.downloadText = function downloadText(text, filename, mediaType) {\r\n /// Downloads the supplied text as a file. The text is always utf-8 encoded.\r\n /// The text to download\r\n /// The suggested filename\r\n /// The media type (defaults to 'text/plain')\r\n if (typeof text !== \"string\") return false;\r\n if (typeof filename !== \"string\") return false;\r\n mediaType = mediaType || 'text/plain';\r\n\r\n try {\r\n // Prepend BOM\r\n if (text.charCodeAt(0) !== 0xFEFF) {\r\n text = \"\\ufeff\" + text;\r\n }\r\n\r\n var data = utf8Encoding.encode(text);\r\n var blob = new Blob([data], { type: mediaType + \";charset=utf-8;\" });\r\n\r\n if (downloadBlob(blob, filename))\r\n return true;\r\n } catch (err) {\r\n $log.error('Error downloading text file', err);\r\n }\r\n\r\n $log.error(\"Not Supported\");\r\n return false;\r\n };\r\n\r\n so.downloadBlob = downloadBlob;\r\n\r\n return so;\r\n\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"tromanWeb\").factory('filterBuilder', ['ergoDateFilter', function (ergoDateFilter) {\r\n function formatCandidate(candidate) {\r\n if (_.isDate(candidate)) {\r\n return ergoDateFilter(candidate);\r\n }\r\n return ('' + candidate).toLowerCase();\r\n }\r\n\r\n return function filterBuilder(getCandidates) {\r\n return function (array, predicate) {\r\n if (predicate == null) return array;\r\n if (!_.isString(predicate.$)) return array;\r\n if (!_.isArray(array)) return array;\r\n\r\n var expected = predicate.$.toLowerCase()\r\n .split(' ')\r\n .map(x => x.trim())\r\n .filter(x => x.length > 0);\r\n \r\n return array.filter(function (item) {\r\n if (item == null) return false;\r\n\r\n let candidates = getCandidates(item).filter(x => x != null).map(formatCandidate);\r\n\r\n return expected.every(part => candidates.some(x => x.indexOf(part) >= 0));\r\n });\r\n };\r\n };\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterDivisions', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(division => [\r\n division.Name,\r\n division.Abbreviation,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterMeetings', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(meeting => [\r\n meeting.Organization && meeting.Organization.Name,\r\n meeting.Location,\r\n meeting.Designation,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterMeetingPolitikerInfo', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(meetingPolitikerInfo => [\r\n meetingPolitikerInfo.Meeting.Organization && meetingPolitikerInfo.Meeting.Organization.Name,\r\n meetingPolitikerInfo.Meeting.Location,\r\n meetingPolitikerInfo.Meeting.Designation,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterMeetingPendingInfo', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(meetingPendingInfo => [\r\n meetingPendingInfo.Meeting.Organization && meetingPendingInfo.Meeting.Organization.Name,\r\n meetingPendingInfo.Meeting.Designation,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterCeremonies', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(ceremony => [\r\n ceremony.Mission.Person.name,\r\n ceremony.Mission.MandatePeriod.Organization.Name,\r\n ceremony.Location,\r\n ceremony.Designation,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterMissions', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(mission => [\r\n mission.Start,\r\n mission.End,\r\n mission.Person ? mission.Person.display : 'vakant',\r\n mission.MissionType && mission.MissionType.Name,\r\n mission.Party && mission.Party.Abbreviation && '(' + mission.Party.Abbreviation + ')',\r\n mission.MandatePeriod && mission.MandatePeriod.Organization && mission.MandatePeriod.Organization.Name,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterMissionTypes', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(missionType => [\r\n missionType.Name,\r\n missionType.Abbreviation,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterOrganizations', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(org => [\r\n org.Name,\r\n org.Abbreviation,\r\n org.OrganizationType && org.OrganizationType.Name,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterOrganizationTypes', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(organizationType => [\r\n organizationType.Name,\r\n organizationType.Description,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterParties', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(party => [\r\n party.Name,\r\n party.Abbreviation,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterWageTypes', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(wageType => [\r\n wageType.Code,\r\n wageType.Name,\r\n wageType.Information,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterWageCalculations', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(calculation => [\r\n calculation.Name,\r\n calculation.WageTypes.Ordinary[0].WageType && calculation.WageTypes.Ordinary[0].WageType.Code,\r\n calculation.WageTypes.Substitute[0].WageType && calculation.WageTypes.Substitute[0].WageType.Code,\r\n calculation.WageTypes.Serving[0].WageType && calculation.WageTypes.Serving[0].WageType.Code,\r\n calculation.WageTypes.Travel.WageType && calculation.WageTypes.Travel.WageType.Code,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterPersons', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(person => [\r\n person.firstName,\r\n person.LastName,\r\n person.PersonalNumber,\r\n person.Party && person.Party.Abbreviation && ('(' + person.Party.Abbreviation + ')'),\r\n person.emailPublic && person.emailPublic.Email,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterWageGroups', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(wageGroup => [\r\n wageGroup.Name,\r\n wageGroup.Description,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterMissionGroups', ['filterBuilder', function (filterBuilder) {\r\n return filterBuilder(missionGroup => [\r\n missionGroup.Name,\r\n ]);\r\n}]);\r\n\r\nangular.module(\"tromanWeb\").filter('filterPendingCertification', ['filterBuilder', function (filterBuilder) {\r\n let genericFilter = filterBuilder(pending => [\r\n pending.Organization.Name,\r\n pending.Certifier?.name,\r\n ]);\r\n return function(array, predicate) {\r\n if (predicate?.$hasPending) {\r\n array = _.filter(array, x => x.Count > 0);\r\n }\r\n return genericFilter(array, predicate);\r\n };\r\n}]);","import { ErrorInfo } from '../../common/twshared/errorHandling/ErrorInfo';\r\nimport { RequestError } from '../../common/RequestError';\r\n\r\nangular.module('tromanWeb').config(['ergoErrorParserProvider', function (ergoErrorParserProvider) {\r\n ergoErrorParserProvider.parse = function parseApiError(err) {\r\n if (err instanceof RequestError) {\r\n if (err.result.TWCode === 'PersonDuplicatePersonalNumber') {\r\n let detail = err.result.TWDetail;\r\n let name = detail.FirstName ? detail.FirstName + ' ' + detail.LastName : detail.LastName;\r\n let location = name + ', ' + detail.PersonalNumber;\r\n\r\n let messages = [err.result.detail, { highlight: true, text: location }];\r\n\r\n let result = new ErrorInfo('tparse_PersonDuplicatePersonalNumber', messages);\r\n result.actiontext = 'Visa person';\r\n result.action = ['stateService', function (stateService) {\r\n stateService.forceGo('person.details', { personId: detail.Id }, { reload: true, inherit: false });\r\n }];\r\n return result;\r\n }\r\n }\r\n };\r\n}]);\r\n","import { Authentication } from '../../common/auth/Authentication';\r\nimport { ApiServer } from '../server/ApiServer';\r\nimport { AccountServer } from '../../common/account/AccountServer';\r\nimport { AuthServerApiBase, TromanWebApiBase, ValmanWebApiBase } from \"config\";\r\n\r\nangular.module('tromanWeb').provider('authenticationService', [function authenticationServiceProvider() {\r\n\r\n var provider = this;\r\n this.unauthorized = null;\r\n\r\n this.$get = ['$q', '$injector', '$log', '$rootScope', function TromanServerFactory($q, $injector, $log, $rootScope) {\r\n\r\n function loginNeededCallback() {\r\n // Auth \"should\" always run outside of $apply, so async might not be necessary.\r\n $rootScope.$applyAsync(() => {\r\n try {\r\n if (provider.unauthorized != null) {\r\n $injector.invoke(provider.unauthorized, null);\r\n }\r\n } catch (exc) {\r\n $log.debug(exc);\r\n }\r\n });\r\n }\r\n\r\n return new Authentication(AuthServerApiBase, $q.when, loginNeededCallback);\r\n }];\r\n}]);\r\n\r\nangular.module('tromanWeb').factory('tromanServer', ['authenticationService', 'isTroman', function tromanServerFactory(authenticationService, isTroman) {\r\n var urlbase = isTroman ? TromanWebApiBase : ValmanWebApiBase;\r\n return new ApiServer(authenticationService, urlbase);\r\n}]);\r\n\r\n\r\nangular.module('tromanWeb').factory('accountServer', ['authenticationService', function accountServerFactory(authenticationService) {\r\n return new AccountServer(authenticationService);\r\n}]);\r\n","import './sorter.less';\r\nimport * as _ from 'lodash';\r\nimport { SortingGroup } from './sortHelper';\r\n\r\nangular.module(\"tromanWeb\").controller('GroupSortController', ['dialogService', 'orderByFilter', '$scope', 'sorterParams', function (dialogService, orderByFilter, $scope, sorterParams) {\r\n\r\n var self = this;\r\n var lastSort = null;\r\n var isSaving = false;\r\n\r\n self.sortable = {\r\n placeholder: 'sort-placeholder',\r\n axis: 'y',\r\n helper: function (_evt, originalItem) {\r\n // Clone the item instead of moving it so that the tables layout is not disturbed. (see \"start\")\r\n var ret = originalItem.clone();\r\n // The helper element (whether cloned or not) is outside of the tables layout\r\n // and so it's columns shrinks down to minimum width.\r\n // Set the width of all columns to the computed width of the original item.\r\n // If not cloning, do $(this).width($(this).width());\r\n var originalCols = originalItem.children().children();\r\n ret.children().children().each(function (index) {\r\n $(this).width($(originalCols[index]).innerWidth());\r\n });\r\n return ret;\r\n },\r\n start: function (_evt, ui) {\r\n // The placeholder is a single tbody with a single tr.\r\n // Set the rows height to the entire height of the moved\r\n // tbody as that may have multiple rows.\r\n ui.placeholder.children().height(ui.item.height());\r\n // The sortable plugin hide()s the original item while moving (if it is not also used as helper)\r\n // With tables, this affects the layout. Show the element and use collapse instead.\r\n ui.item.show();\r\n ui.item.css('visibility', 'collapse');\r\n },\r\n stop: function (_evt, ui) {\r\n // undo the work in \"start\".\r\n ui.item.css('visibility', '');\r\n }\r\n };\r\n\r\n $scope.$on('ui-sortable:moved', () => {\r\n _.each(self.groups, (x, i) => { x.$newOrder = i + 1; });\r\n lastSort = null;\r\n });\r\n\r\n self.sortBy = function sortBy(prop) {\r\n const reverse = prop === lastSort;\r\n self.groups = orderByFilter(self.groups, x => prop.fn(x.items[0]), reverse);\r\n _.each(self.groups, (x, i) => { x.$newOrder = i + 1; });\r\n lastSort = reverse ? null : prop;\r\n };\r\n\r\n self.groupClass = function groupClass(group) {\r\n if (group.placeholder) {\r\n return 'placeholder';\r\n }\r\n\r\n if (group.order !== group.$newOrder) {\r\n return \"changed\";\r\n }\r\n\r\n return \"\";\r\n };\r\n\r\n self.canSave = function () {\r\n return !isSaving;\r\n };\r\n\r\n self.save = function save() {\r\n\r\n if (!self.canSave()) return;\r\n\r\n isSaving = true;\r\n sorterParams.updateSorting(self.groups)\r\n .finally(function () { isSaving = false; })\r\n .then(function () { $scope.$close(true); })\r\n .catch(dialogService.error);\r\n };\r\n\r\n self.cancel = function cancel() {\r\n if (self.groups.some(x => x.order !== x.$newOrder)) {\r\n dialogService.confirm([\"Det finns osparade ändringar som kommer gå förlorade.\", \"Är du säker?\"]).then(function () {\r\n $scope.$dismiss(\"cancelled\");\r\n });\r\n } else {\r\n $scope.$dismiss(\"cancelled\");\r\n }\r\n };\r\n\r\n self.removePlaceholder = function removePlaceholder(placeholder) {\r\n self.groups = self.groups.filter(x => x != placeholder);\r\n _.each(self.groups, (x, i) => { x.$newOrder = i + 1; });\r\n };\r\n\r\n self.addPlaceholder = function addPlaceholder(before) {\r\n let pos = _.indexOf(self.groups, before);\r\n if (pos >= 0) {\r\n self.groups = self.groups.slice();\r\n self.groups.splice(pos, 0, new SortingGroup(pos + 1, null, self.def.placeholder));\r\n _.each(self.groups, (x, i) => { x.$newOrder = i + 1; });\r\n }\r\n };\r\n\r\n function init(list) {\r\n self.title = sorterParams.title || sorterParams.definition.title;\r\n self.def = sorterParams.definition;\r\n self.groups = _.orderBy(list, x => x.order);\r\n _.each(self.groups, (x, i) => { x.$newOrder = i + 1; });\r\n }\r\n\r\n sorterParams.listPromise.then(init).catch(dialogService.error);\r\n}]);\r\n","import './sorter.less';\r\nimport * as _ from 'lodash';\r\nimport { Mission } from '../objects/Mission';\r\n\r\nangular.module(\"tromanWeb\").controller('SorterController', ['dialogService', 'orderByFilter', '$scope', 'sorterParams', function (dialogService, orderByFilter, $scope, sorterParams) {\r\n\r\n var self = this;\r\n var lastSort = null;\r\n var reverse = false;\r\n var isSaving = false;\r\n\r\n self.sortable = {\r\n placeholder: 'sort-placeholder',\r\n axis: 'y',\r\n containment: '#sort-containment',\r\n tolerance: 'pointer',\r\n helper: function (_evt, ui) {\r\n // Clone the item instead of moving it so that the tables layout is not disturbed. (see \"start\")\r\n var ret = ui.clone();\r\n // The helper element (whether cloned or not) is outside of the tables layout\r\n // and so it's columns shrinks down to minimum width.\r\n // Set the width of all columns to the computed width of the original item.\r\n // If not cloning, do $(this).width($(this).width());\r\n var orgch = ui.children();\r\n ret.children().each(function (index) {\r\n $(this).width($(orgch[index]).innerWidth());\r\n });\r\n return ret;\r\n },\r\n start: function (_evt, ui) {\r\n // The sortable plugin hide()s the original item while moving (if it is not also used as helper)\r\n // With tables, this affects the layout. Show the element and use collapse instead.\r\n ui.item.show();\r\n ui.item.css('visibility', 'collapse');\r\n },\r\n stop: function (_evt, ui) {\r\n // undo the work in \"start\".\r\n ui.item.css('visibility', '');\r\n\r\n // droptarget is != null, when items have been reordered.\r\n if (ui.item.sortable.droptarget != null) {\r\n lastSort = null;\r\n }\r\n }\r\n };\r\n\r\n self.sortBy = function sortBy(prop) {\r\n reverse = (prop === lastSort) ? !reverse : false;\r\n lastSort = prop;\r\n self.items = orderByFilter(self.items, prop.expr, reverse);\r\n };\r\n\r\n self.itemClass = function itemClass(item, index) {\r\n if (item.isPlaceholder && item.isPlaceholder()) {\r\n return 'placeholder';\r\n }\r\n\r\n if (isChanged(item, index)) {\r\n return \"changed\";\r\n }\r\n\r\n return \"\";\r\n };\r\n\r\n self.canSave = function () {\r\n return !isSaving;\r\n };\r\n\r\n self.save = function save() {\r\n\r\n if (!self.canSave()) return;\r\n\r\n var index, obj;\r\n var req = [];\r\n\r\n for (index = 0; index < self.items.length; ++index) {\r\n obj = self.items[index];\r\n if (!(obj.isPlaceholder && obj.isPlaceholder())) {\r\n req.push({\r\n Id: obj.Id,\r\n RowVersion: obj.RowVersion,\r\n SortingCode: index + 1\r\n });\r\n }\r\n }\r\n\r\n isSaving = true;\r\n sorterParams.updateSorting(req)\r\n .finally(function () { isSaving = false; })\r\n .then(function () { $scope.$close(true); })\r\n .catch(dialogService.error);\r\n };\r\n\r\n self.cancel = function cancel() {\r\n if (self.items.some(isChanged)) {\r\n dialogService.confirm([\"Det finns osparade ändringar som kommer gå förlorade.\", \"Är du säker?\"]).then(function () {\r\n $scope.$dismiss(\"cancelled\");\r\n });\r\n } else {\r\n $scope.$dismiss(\"cancelled\");\r\n }\r\n };\r\n\r\n self.removePlaceholder = function removePlaceholder(placeholder) {\r\n self.items = self.items.filter(x => x != placeholder);\r\n };\r\n\r\n self.addPlaceholder = function removePlaceholder(before) {\r\n let pos = _.indexOf(self.items, before);\r\n if (pos >= 0) {\r\n self.items = [\r\n ...self.items.slice(0, pos),\r\n Mission.createPlaceholder(0),\r\n ...self.items.slice(pos),\r\n ];\r\n }\r\n };\r\n\r\n function isChanged(item, index) {\r\n var oldsort = sorterParams.definition.sortingProperty.fn(item);\r\n var newsort = index + 1;\r\n return oldsort !== newsort;\r\n }\r\n\r\n function init(list) {\r\n var items = orderByFilter(list, sorterParams.definition.sortingProperty.expr, false);\r\n lastSort = sorterParams.definition.sortingProperty;\r\n self.title = sorterParams.title || sorterParams.definition.title;\r\n self.def = sorterParams.definition;\r\n self.items = items;\r\n }\r\n\r\n sorterParams.listPromise.then(init).catch(dialogService.error);\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { SortingGroup } from './sortHelper';\r\n\r\nangular.module(\"tromanWeb\").factory('sortDialog', ['$parse', '$uibModal', 'tromanServer', 'isTroman', function ($parse, $uibModal, tromanServer, isTroman) {\r\n\r\n var so = {};\r\n\r\n function Property(expr, title) {\r\n this.expr = expr;\r\n this.fn = $parse(expr);\r\n this.title = title;\r\n }\r\n\r\n const partyDefinition = {\r\n title: isTroman ? 'Ändra sortering - Partier' : 'Ändra sortering - Kategorier',\r\n sortingProperty: new Property('SortingCode', 'Sortering'),\r\n properties: [\r\n new Property('Abbreviation', isTroman ? 'Partibeteckning' : \"Förkortning\"),\r\n new Property('Name', 'Namn')\r\n ]\r\n };\r\n\r\n const organizationDefinition = {\r\n title: 'Ändra sortering - Organisationer',\r\n sortingProperty: new Property('SortingCode', 'Sortering'),\r\n properties: [\r\n new Property('OrganizationType.Name', 'Org.Typ'),\r\n new Property('OrganizationType.SortingCode', 'Org.Typ Sortering'),\r\n new Property('Abbreviation', 'Förkortning'),\r\n new Property('Name', 'Namn')\r\n ]\r\n };\r\n\r\n const divisionDefinition = {\r\n title: 'Ändra sortering - Valkretsar',\r\n sortingProperty: new Property('SortingCode', 'Sortering'),\r\n properties: [\r\n new Property('Abbreviation', 'Förkortning'),\r\n new Property('Name', 'Namn')\r\n ]\r\n };\r\n\r\n const organizationTypeDefinition = {\r\n title: 'Ändra sortering - Organisationstyper',\r\n sortingProperty: new Property('SortingCode', 'Sortering'),\r\n properties: [\r\n new Property('Name', 'Namn')\r\n ]\r\n };\r\n\r\n function showSorter(listPromise, definition, endpoint) {\r\n\r\n var sp = {\r\n listPromise: listPromise,\r\n definition: definition,\r\n updateSorting: x => endpoint.updateSorting(x),\r\n };\r\n\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('./sorter.html'),\r\n controller: 'SorterController as sc',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n sorterParams: function () { return sp; }\r\n }\r\n }).result;\r\n }\r\n\r\n so.sortParties = function sortParties(listPromise) {\r\n return showSorter(listPromise, partyDefinition, tromanServer.Parties);\r\n };\r\n\r\n so.sortOrganizations = function sortOrganizations(listPromise) {\r\n return showSorter(listPromise, organizationDefinition, tromanServer.Organizations);\r\n };\r\n\r\n so.sortDivisions = function sortDivisions(listPromise) {\r\n return showSorter(listPromise, divisionDefinition, tromanServer.Divisions);\r\n };\r\n\r\n so.sortOrganizationTypes = function sortOrganizationTypes(listPromise) {\r\n return showSorter(listPromise, organizationTypeDefinition, tromanServer.OrganizationTypes);\r\n };\r\n\r\n /**\r\n *\r\n * @param {SortingGroup[]} groups\r\n */\r\n function groupsToSortUpdate(groups) {\r\n return _.flatMap(groups, (group, index) => {\r\n return _.map(group.items, item => ({\r\n Id: item.Id,\r\n RowVersion: item.RowVersion,\r\n SortingCode: index + 1,\r\n }));\r\n });\r\n }\r\n\r\n so.sortMissions = function sortMissions(listPromise, mandatePeriod) {\r\n function getGroups(missions) {\r\n var grouped = _.groupBy(missions, x => x.OrderNumber);\r\n return _.map(grouped, gms => {\r\n var real = _.filter(gms, x => !x.isPlaceholder());\r\n if (real.length === 0) {\r\n return new SortingGroup(gms[0].OrderNumber, [], 'Ledigt ordningsnummer');\r\n }\r\n return new SortingGroup(gms[0].OrderNumber, real);\r\n });\r\n }\r\n\r\n var sp = {\r\n listPromise: listPromise.then(getGroups),\r\n definition: {\r\n placeholder: 'Ledigt ordningsnummer',\r\n properties: [\r\n new Property('MissionType.Name', 'Uppdragstyp'),\r\n new Property('Person != null ? Person.name : \"(Vakant)\"', 'Namn'),\r\n new Property('Party.Abbreviation', isTroman ? 'Parti (Uppdrag)' : 'Kategori (Uppdrag)'),\r\n new Property(\"Start | ergoDate\", 'Start'),\r\n new Property(\"End | ergoDate\", 'Slut')\r\n ],\r\n },\r\n title: 'Ändra ordningsnummer - ' + mandatePeriod.Organization.Name,\r\n updateSorting: groups => tromanServer.Missions.updateSorting({\r\n MandatePeriodId: mandatePeriod.Id,\r\n Missions: groupsToSortUpdate(groups),\r\n }),\r\n };\r\n\r\n return $uibModal.open({\r\n animation: true,\r\n template: require('./sorter.missions.html'),\r\n controller: 'GroupSortController as sc',\r\n windowClass: \"modal fade in\",\r\n size: 'lg',\r\n resolve: {\r\n sorterParams: function () { return sp; }\r\n }\r\n }).result;\r\n };\r\n\r\n return so;\r\n\r\n}]);","\r\n\r\nexport class SortingGroup {\r\n constructor(order, items, placeholder) {\r\n this.order = order;\r\n this.items = items;\r\n this.placeholder = placeholder;\r\n }\r\n}","import _ from 'lodash';\r\nimport './systemSettings.less';\r\nimport * as utility from '../misc/utility';\r\nimport { addCalendarDays } from '../misc/DateCalculator';\r\n\r\nlet NEXT_NEW_PERIOD_KEY = 1;\r\n\r\nclass PaymentSettingsPeriod {\r\n constructor(key, start) {\r\n this.key = key;\r\n this.StartDate = start;\r\n this.EndDate = null;\r\n }\r\n\r\n static fromResponse(src) {\r\n let result = new PaymentSettingsPeriod(src.Id, utility.parseDate(src.StartDate));\r\n result.Id = src.Id;\r\n result.MaxMeetingAmount = src.MaxMeetingAmount;\r\n result.MaxLostIncomeAmount = src.MaxLostIncomeAmount;\r\n result.LostIncomeGuardLimit = src.LostIncomeGuardLimit;\r\n return result;\r\n }\r\n\r\n toJSON() {\r\n return {\r\n Id: this.Id,\r\n StartDate: this.StartDate,\r\n MaxMeetingAmount: this.MaxMeetingAmount,\r\n MaxLostIncomeAmount: this.MaxLostIncomeAmount,\r\n LostIncomeGuardLimit: this.LostIncomeGuardLimit,\r\n };\r\n }\r\n}\r\n\r\nclass PaymentSettingsPeriodCollection {\r\n constructor(srcs) {\r\n this.list = _.map(srcs, x => PaymentSettingsPeriod.fromResponse(x));\r\n this.hasChanged = false;\r\n this.sort();\r\n }\r\n \r\n _createPeriod(template) {\r\n let startDate = template ? new Date(template.StartDate.getFullYear() + 1, template.StartDate.getMonth(), template.StartDate.getDate()) : utility.todayDate();\r\n let period = new PaymentSettingsPeriod('NEW:' + (NEXT_NEW_PERIOD_KEY++), startDate);\r\n if (template) {\r\n period.MaxMeetingAmount = template.MaxMeetingAmount;\r\n period.MaxLostIncomeAmount = template.MaxLostIncomeAmount;\r\n period.LostIncomeGuardLimit = template.LostIncomeGuardLimit;\r\n }\r\n return period;\r\n }\r\n\r\n fromDate(date) {\r\n let time = date.getTime();\r\n return _.find(this.list, x => x.StartDate.getTime() === time);\r\n }\r\n\r\n latest() {\r\n return _.first(this.list);\r\n }\r\n\r\n toJSON() {\r\n return _.map(this.list, x => x.toJSON());\r\n }\r\n\r\n add(template) {\r\n let period = this._createPeriod(template);\r\n this.list = [period, ...this.list];\r\n this.sort();\r\n this.hasChanged = true;\r\n return period;\r\n }\r\n\r\n remove(period) {\r\n if (period) {\r\n let pos = this.list.indexOf(period);\r\n if (pos >= 0) {\r\n this.list = this.list.slice();\r\n this.list.splice(pos, 1);\r\n this.hasChanged = true;\r\n this._updateEndDate();\r\n return pos;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n _updateEndDate() {\r\n let nextStart = null;\r\n _.each(this.list, x => {\r\n x.EndDate = addCalendarDays(nextStart, -1);\r\n nextStart = x.StartDate;\r\n });\r\n }\r\n\r\n sort() {\r\n this.list = _.orderBy(this.list, ['StartDate'], ['desc']);\r\n this._updateEndDate();\r\n }\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('SystemSettingsController', ['tromanServer', 'stateService', 'dialogService', 'systemInfo', function (tromanServer, stateService, dialogService, systemInfo) {\r\n\r\n var isSaving = false;\r\n\r\n this.exportError = null;\r\n this.exportSuccess = false;\r\n this.applyMunicipalityResult = null;\r\n /** @type {PaymentSettingsPeriod} */\r\n this.selectedPeriod = null;\r\n /** @type {PaymentSettingsPeriodCollection} */\r\n this.periods = null;\r\n /** @type {Date} */\r\n this.selectedStartDate = null;\r\n this.invalidExistingPeriod = false;\r\n\r\n this.canExport = function () {\r\n return this.form && !this.form.$dirty && !isSaving;\r\n };\r\n\r\n this.selectedPeriodChanged = function() {\r\n this.selectedStartDate = this.selectedPeriod?.StartDate;\r\n this.invalidExistingPeriod = false;\r\n };\r\n\r\n this.addPeriod = function() {\r\n this.selectedPeriod = this.periods.add(this.selectedPeriod);\r\n this.selectedPeriodChanged();\r\n };\r\n\r\n this.removePeriod = function() {\r\n let pos = this.periods.remove(this.selectedPeriod);\r\n this.selectedPeriod = this.periods.list[pos < 1 ? 0 : pos - 1];\r\n this.selectedPeriodChanged();\r\n };\r\n\r\n this.selectedStartDateChanged = function() {\r\n if (this.selectedPeriod && this.selectedStartDate) {\r\n let existing = this.periods.fromDate(this.selectedStartDate);\r\n if (existing && existing !== this.selectedPeriod) {\r\n this.invalidExistingPeriod = true;\r\n } else {\r\n this.invalidExistingPeriod = false;\r\n this.selectedPeriod.StartDate = this.selectedStartDate;\r\n this.periods.sort();\r\n }\r\n }\r\n };\r\n\r\n this.export = function () {\r\n if (!this.canExport()) return;\r\n\r\n isSaving = true;\r\n\r\n this.exportError = null;\r\n this.exportSuccess = false;\r\n tromanServer.System.updatePublik()\r\n .then(() => {\r\n isSaving = false;\r\n this.exportSuccess = true;\r\n })\r\n .catch(err => {\r\n isSaving = false;\r\n this.exportError = err;\r\n });\r\n };\r\n\r\n\r\n this.canApplyMunicipalityCodeList = function () {\r\n if (this.form == null || this.form.$dirty) return false;\r\n if (isSaving) return false;\r\n if (this.settings == null || this.settings.DefaultValidMunicipalities == null || this.settings.DefaultValidMunicipalities.length === 0) return false;\r\n return true;\r\n };\r\n\r\n this.applyMunicipalityCodeList = function applyMunicipalityCodeList() {\r\n if (!this.canApplyMunicipalityCodeList()) return;\r\n\r\n if (systemInfo.IsSparNotificationsEnabled) {\r\n dialogService.confirm([\r\n 'Tillämpa grundinställningarna för kommun-/länskod på alla aktiva organisationer.',\r\n 'Nuvarande inställningar på alla aktiva organisationer kommer helt ersättas av grundinställningarna.',\r\n 'Samtidigt kommer kontroll av kommunkod aktiveras på alla aktiva uppdrag i organisationerna.',\r\n ]).then(() => {\r\n isSaving = true;\r\n\r\n tromanServer.System.applyMunicipalityCodeSettings()\r\n .then(() => {\r\n isSaving = false;\r\n this.applyMunicipalityResult = true;\r\n })\r\n .catch(err => {\r\n isSaving = false;\r\n this.applyMunicipalityResult = err;\r\n });\r\n });\r\n } else {\r\n dialogService.notify([\r\n \"Denna funktion kräver att tjänsten för att hämta folkbokförda uppgifter från Statens Personadressregister (SPAR) är aktiverad.\",\r\n \"Vill ni aktivera denna tjänst kontakta Troman på support@troman.se.\"],\r\n \"Tjänsten inte aktiv\");\r\n }\r\n };\r\n\r\n this.canSave = function () {\r\n return this.form && (this.form.$dirty || this.periods?.hasChanged) && this.form.$valid && !this.invalidExistingPeriod && !isSaving;\r\n };\r\n\r\n this.save = function save() {\r\n\r\n if (!this.canSave()) return;\r\n\r\n this.form.$commitViewValue();\r\n this.form.$setSubmitted();\r\n\r\n if (this.form.$invalid) return;\r\n\r\n this.settings.PaymentSettingsPeriods = this.periods?.toJSON();\r\n\r\n isSaving = true;\r\n tromanServer.System.setSettings(this.settings)\r\n .finally(() => { isSaving = false; })\r\n .then(() => { \r\n stateService.reload();\r\n })\r\n .catch(dialogService.error);\r\n };\r\n\r\n this.loadItems = function() {\r\n tromanServer.System.getSettings().then(data => {\r\n this.settings = data;\r\n this.periods = new PaymentSettingsPeriodCollection(data.PaymentSettingsPeriods);\r\n this.selectedPeriod = this.periods.latest();\r\n this.selectedStartDate = this.selectedPeriod?.StartDate;\r\n this.invalidExistingPeriod = false;\r\n }).catch((err) => {\r\n this.settings = null;\r\n dialogService.error(err);\r\n });\r\n };\r\n\r\n this.loadItems();\r\n}]);\r\n","angular.module(\"tromanWeb\").controller('WageCalculationEditController', ['$q', 'DialogControllerBase', '$scope', 'tromanServer', 'ObjectCache', 'wageCalculation', function ($q, DialogControllerBase, $scope, tromanServer, ObjectCache, wageCalculation) {\r\n\r\n DialogControllerBase.call(this, tromanServer.WageCalculations, $scope);\r\n\r\n this.getTitle = () => { return 'beräkningsregeln \"' + this.wageCalculation.Name + '\"'; };\r\n this.getItem = () => { return this.wageCalculation; };\r\n\r\n this.loadItem(wageCalculation)\r\n .then(wc => {\r\n return $q.all({\r\n wageCalculation: $q.when(wc),\r\n wageTypes: ObjectCache.getWageTypes(wc.WageTypes.nonEmpty().map(x => x.WageType))\r\n });\r\n })\r\n .then(data => {\r\n this.wageCalculation = data.wageCalculation;\r\n this.meetingWageTypes = data.wageTypes.filter(x => x.WageModelGroup === 0);\r\n this.travelWageTypes = data.wageTypes.filter(x => x.WageModelGroup === 2);\r\n })\r\n .catch(x => this.showError(x));\r\n}]);\r\n","import * as _ from 'lodash';\r\nimport { WageCalculation } from '../objects/WageCalculation';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('WageCalculationsController', ['stateService', 'tromanServer', 'dialogService', function (stateService, tromanServer, dialogService) {\r\n\r\n this.loading = true;\r\n this.showAdvancedSearch = false;\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refresh();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refresh();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this._refresh = function _refresh() {\r\n this.loading = true;\r\n tromanServer.WageCalculations.search(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createWageCalculationList(list);\r\n };\r\n\r\n this.add = function add() {\r\n dialogService.editWageCalculation(new WageCalculation()).then(() => this._refresh());\r\n };\r\n\r\n this.edit = function edit(item) {\r\n dialogService.editWageCalculation(item).then(() => this._refresh());\r\n };\r\n\r\n}]);\r\n","import './wagegroup.less';\r\n\r\nangular.module(\"tromanWeb\").controller('WageGroupController', ['wageGroupShared', 'systemInfo', function (wageGroupShared, systemInfo) {\r\n this.wageGroup = wageGroupShared.wageGroup;\r\n this.systemInfo = systemInfo;\r\n}]);\r\n","angular.module(\"tromanWeb\").controller('WageGroupDetailsController', ['stateService', 'tromanServer', 'dialogService', 'wageGroupShared', function (stateService, tromanServer, dialogService, wageGroupShared) {\r\n\r\n\r\n let isSaving = false;\r\n\r\n this.canSave = function () {\r\n return this.wageGroup != null && this.form.$dirty && !isSaving;\r\n };\r\n\r\n this.save = function save() {\r\n if (!this.canSave()) return;\r\n\r\n this.form.$commitViewValue();\r\n this.form.$setSubmitted();\r\n\r\n if (this.form.$invalid) return;\r\n\r\n isSaving = true;\r\n if (this.wageGroup.Id == null) {\r\n tromanServer.WageGroups.addEntity(this.wageGroup)\r\n .finally(() => isSaving = false)\r\n .then(rsp => {\r\n stateService.forceGo('wagegroup.details', { wageGroupId: rsp.result.Id }, { reload: true, location: 'replace' });\r\n })\r\n .catch(dialogService.error);\r\n } else {\r\n tromanServer.WageGroups.updateEntity(this.wageGroup)\r\n .finally(() => isSaving = false)\r\n .then(() => {\r\n stateService.forceReload('wagegroup');\r\n })\r\n .catch(dialogService.error);\r\n }\r\n };\r\n\r\n this.hardRemove = function hardRemove() {\r\n if (this.wageGroup == null || this.wageGroup.Id == null) return;\r\n\r\n dialogService.confirm(['Radera lönegruppen permanent.', 'Detta kan inte ångras', 'Är du säker?']).then(() => {\r\n tromanServer.WageGroups.hardRemove(this.wageGroup.Id)\r\n .then(() => {\r\n stateService.forceGo('wagegroups');\r\n })\r\n .catch(err => { dialogService.error(err); });\r\n });\r\n };\r\n\r\n this.canArchive = function () {\r\n return this.showArchive && !this.form.$dirty;\r\n };\r\n\r\n this.archive = function archive() {\r\n if (!this.canArchive()) return;\r\n\r\n dialogService.confirm([\"Arkivera \" + this.wageGroup.Name + \".\", \"Är du säker?\"]).then(() => {\r\n tromanServer.WageGroups.archive(this.wageGroup.Id)\r\n .then(() => {\r\n stateService.reload('wagegroup');\r\n })\r\n .catch(err => { dialogService.error(err); });\r\n });\r\n };\r\n\r\n this.canActivate = function () {\r\n return this.showActivate && !this.form.$dirty;\r\n };\r\n\r\n this.activate = function activate() {\r\n if (!this.canActivate()) return;\r\n\r\n dialogService.confirm([\"Aktivera \" + this.wageGroup.Name + \".\", \"Är du säker?\"]).then(() => {\r\n tromanServer.WageGroups.activate(this.wageGroup.Id)\r\n .then(() => {\r\n stateService.reload('wagegroup');\r\n })\r\n .catch(err => { dialogService.error(err); });\r\n });\r\n };\r\n\r\n this.$onInit = function $onInit() {\r\n this.wageGroup = wageGroupShared.wageGroup.clone();\r\n this.isAdding = !this.wageGroup.Id;\r\n this.showArchive = !!(this.wageGroup.Id && this.wageGroup.Active);\r\n this.showActivate = !!(this.wageGroup.Id && !this.wageGroup.Active);\r\n stateService.guard(() => this.form.$dirty);\r\n };\r\n}]);\r\n\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"tromanWeb\").controller('WageGroupHistoryController', ['tromanServer', 'dialogService', 'downloadService', 'reportService', 'wageGroupShared', function (tromanServer, dialogService, downloadService, reportService, wageGroupShared) {\r\n this.$onInit = function $onInit() {\r\n this.wageGroup = wageGroupShared.wageGroup;\r\n tromanServer.PaymentRounds\r\n .search({ WageGroupId: this.wageGroup.Id })\r\n .then(x => {\r\n this.history = _.drop(_.orderBy(x, y => y.RoundNumber, \"desc\"), 1);\r\n })\r\n .catch(dialogService.error);\r\n };\r\n\r\n this.canDownloadFile = function canDownloadFile(round) {\r\n return round != null && round.HasTransactionData;\r\n };\r\n\r\n this.downloadFile = function downloadFile(round) {\r\n tromanServer.PaymentRounds\r\n .downloadFile(round)\r\n .then(rsp => downloadService.downloadBlob(rsp.blob, rsp.filename))\r\n .catch(dialogService.error);\r\n };\r\n\r\n this.canDownloadReport = function canDownloadReport(round) {\r\n return round != null && round.HasTransactionData;\r\n };\r\n\r\n this.downloadReport = function downloadReport(round) {\r\n var pars = {\r\n Options: { Format: 1 },\r\n Query: { PaymentRoundId: round.Id }\r\n };\r\n\r\n reportService\r\n .generate('Attestation', pars)\r\n .then(rsp => downloadService.downloadBlob(rsp.blob, rsp.filename))\r\n .catch(dialogService.error);\r\n };\r\n}]);\r\n\r\n","import * as _ from 'lodash';\r\n\r\nangular.module(\"tromanWeb\").controller('WageGroupOrganizationsController', ['$q', 'stateService', 'tromanServer', 'ObjectCache', 'dialogService', 'wageGroupShared', function ($q, stateService, tromanServer, ObjectCache, dialogService, wageGroupShared) {\r\n\r\n this.selectedOrganization = null;\r\n const round = wageGroupShared.wageGroup.CurrentRound;\r\n this.isRoundLocked = !!(round == null || round.PaymentRound.IsLocked);\r\n this.busy = false;\r\n\r\n this.$onInit = function $onInit() {\r\n ObjectCache.getOrganizations(null, { Archived: 1 })\r\n .then(data => {\r\n const all = _.partition(data, x => x.WageGroupId == wageGroupShared.wageGroup.Id);\r\n this.includedOrganizations = all[0];\r\n this.otherOrganizations = all[1].filter(x => x.Active);\r\n })\r\n .catch(dialogService.error);\r\n };\r\n\r\n this._block = function _block(promise) {\r\n $q(resolve => {\r\n this.busy = true;\r\n resolve(promise);\r\n }).finally(() => this.busy = false);\r\n };\r\n\r\n this.canAddOrganization = function () {\r\n return !this.busy && this.selectedOrganization != null;\r\n };\r\n\r\n this.addOrganization = function () {\r\n if (!this.canAddOrganization()) return;\r\n\r\n const src = this.selectedOrganization;\r\n\r\n var cp = src.clone();\r\n cp.WageGroup = wageGroupShared.wageGroup;\r\n\r\n let confirmation = true;\r\n if (src.WageGroup != null) {\r\n confirmation = dialogService.confirm([src.Name + ' hör redan till lönegruppen ' + src.WageGroup.Name + ', är du säker?']);\r\n }\r\n\r\n let promise = $q.resolve(confirmation)\r\n .then(() => tromanServer.Organizations\r\n .updateEntity(cp)\r\n .then(() => stateService.reload())\r\n .catch(dialogService.error))\r\n .catch(_.noop);\r\n this._block(promise);\r\n };\r\n\r\n this.canRemoveOrganizations = function () {\r\n return !this.busy && this.table.selectionCount > 0 && this.isRoundLocked;\r\n };\r\n\r\n this.removeOrganizations = function () {\r\n if (!this.canRemoveOrganizations()) return;\r\n\r\n var list = this.table.selectedItems();\r\n\r\n var msg =\r\n 'Ta bort lönegruppen från ' +\r\n list.length +\r\n (list.length > 1 ? ' valda organisationer.' : ' vald organisation.');\r\n\r\n let promise = dialogService.confirm([msg, 'Är du säker?'])\r\n .then(() => tromanServer.Organizations.removeWageGroup(list)\r\n .then(() => stateService.reload())\r\n .catch(dialogService.error))\r\n .catch(_.noop);\r\n this._block(promise);\r\n };\r\n}]);\r\n\r\n","import { WageGroup } from '../objects/WageGroup';\r\n\r\nangular.module(\"tromanWeb\").factory('WageGroupState', ['$q', 'tromanServer', 'dialogService', function ($q, tromanServer, dialogService) {\r\n\r\n function load(id) {\r\n if (id) {\r\n return tromanServer.WageGroups.get(id);\r\n } else {\r\n return $q.when(new WageGroup());\r\n }\r\n }\r\n\r\n class WageGroupState {\r\n constructor(wageGroup) {\r\n this.wageGroup = wageGroup;\r\n }\r\n\r\n static create(id) {\r\n return load(id)\r\n .then(x => new WageGroupState(x))\r\n .catch(err => {\r\n dialogService.error(err);\r\n return $q.reject(err);\r\n });\r\n }\r\n }\r\n\r\n return WageGroupState;\r\n}]);\r\n","import * as _ from 'lodash';\r\n\r\nfunction calcNextMonth(round) {\r\n if (round.Month === 12) {\r\n return { year: round.Year + 1, month: 1 };\r\n } else {\r\n return { year: round.Year, month: round.Month + 1 };\r\n }\r\n}\r\n\r\nfunction getPaymentMonthToday() {\r\n var today = new Date();\r\n return { year: today.getFullYear(), month: today.getMonth() + 1 }; // JS month i 0-based.\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('WageGroupTransactionsController', ['$q', 'stateService', 'tromanServer', 'dialogService', 'downloadService', 'reportService', 'systemInfo', 'userProfile', 'wageGroupShared', function ($q, stateService, tromanServer, dialogService, downloadService, reportService, systemInfo, userProfile, wageGroupShared) {\r\n this.busy = false;\r\n\r\n this.$onInit = function $onInit() {\r\n this.wageGroup = wageGroupShared.wageGroup;\r\n this.current = this.wageGroup.CurrentRound;\r\n this.systemInfo = systemInfo;\r\n\r\n if (this.current != null) {\r\n this.round = this.current.PaymentRound;\r\n this.sendername = this.round.SenderName;\r\n } else {\r\n this.addMode = true;\r\n this.newMonth = getPaymentMonthToday();\r\n this.sendername = userProfile.name;\r\n }\r\n };\r\n\r\n this._block = function _block(promise) {\r\n $q(resolve => {\r\n this.busy = true;\r\n resolve(promise);\r\n }).finally(() => this.busy = false);\r\n };\r\n\r\n this.canShowAddMode = function canShowAddMode() {\r\n if (this.busy) return false;\r\n return this.round != null && this.round.IsLocked;\r\n };\r\n\r\n this.showAddMode = function showAddMode(enabled) {\r\n if (!this.canShowAddMode()) return false;\r\n\r\n this.addMode = !!enabled;\r\n this.newMonth = calcNextMonth(this.round);\r\n this.sendername = this.round.SenderName;\r\n };\r\n\r\n this._doAddRound = function (next, sendername) {\r\n let promise = tromanServer.WageGroups\r\n .addRound(this.wageGroup, next.year, next.month, sendername)\r\n .then(() => stateService.reload())\r\n .catch(dialogService.error);\r\n this._block(promise);\r\n };\r\n\r\n this.canAddNext = function canAddNext() {\r\n if (this.busy) return false;\r\n if (this.nextForm == null || !this.nextForm.$valid) return false;\r\n\r\n return this.round != null && this.round.IsLocked;\r\n };\r\n\r\n this.addNext = function addNext() {\r\n if (!this.canAddNext()) return;\r\n this._doAddRound(calcNextMonth(this.round), this.sendername);\r\n };\r\n\r\n this.canAddNew = function canAddNew() {\r\n if (this.busy) return false;\r\n if (this.addForm == null || !this.addForm.$valid) return false;\r\n if (this.newMonth == null) return false;\r\n\r\n return this.round == null || this.round.IsLocked;\r\n };\r\n\r\n this.addNew = function addNew() {\r\n if (!this.canAddNew()) return;\r\n this._doAddRound(this.newMonth, this.sendername);\r\n };\r\n\r\n this.canLockRound = function canLockRound() {\r\n if (this.busy) return false;\r\n if (this.round == null) return false;\r\n if (this.round.IsReadOnly) return false;\r\n\r\n return !this.round.IsLocked;\r\n };\r\n\r\n this.lockRound = function lockRound() {\r\n if (!this.canLockRound()) return;\r\n\r\n let promise = tromanServer.WageGroups\r\n .lockRound(this.wageGroup, true)\r\n .then(() => stateService.reload())\r\n .catch(dialogService.error);\r\n this._block(promise);\r\n };\r\n\r\n this.showUnlockRound = function showUnlockRound() {\r\n return !!(this.round && this.round.IsLocked);\r\n };\r\n\r\n this.canUnlockRound = function canUnlockRound() {\r\n if (this.busy) return false;\r\n if (this.round == null) return false;\r\n if (this.round.IsReadOnly) return false;\r\n\r\n return !!this.round.IsLocked;\r\n };\r\n\r\n this.unlockRound = function unlockRound() {\r\n if (!this.canUnlockRound()) return;\r\n\r\n let promise = dialogService.confirm([\r\n \"Vill du låsa upp lönemånaden?\",\r\n \"När man låser upp lönemånad och skapar ny version så kommer både de tidigare posterna i samma månad, \" +\r\n \"samt eventuellt nya, med när man skapar ny transaktionsfil och attestlista.\",\r\n ]).then(() => {\r\n return tromanServer.WageGroups\r\n .lockRound(this.wageGroup, false)\r\n .then(() => stateService.reload())\r\n .catch(dialogService.error);\r\n });\r\n\r\n this._block(promise);\r\n };\r\n\r\n this.canRemoveRound = function canRemoveRound() {\r\n if (this.busy) return false;\r\n if (this.round == null) return false;\r\n\r\n return this.round != null;\r\n };\r\n\r\n this.removeRound = function removeRound() {\r\n if (!this.canRemoveRound()) return;\r\n\r\n let promise = dialogService.confirm(['Ta bort lönemånaden.', 'All information kopplad till lönemånaden, t.ex. versioner, transaktionsfiler och koppling till arvoden (dock inte arvodena själva) kommer tas bort.', 'Är du säker?'])\r\n .then(() =>\r\n tromanServer.WageGroups\r\n .removeRound(this.wageGroup)\r\n .then(() => stateService.reload())\r\n .catch(dialogService.error))\r\n .catch(_.noop);\r\n this._block(promise);\r\n };\r\n\r\n this.canAddVersion = function canAddVersion() {\r\n if (this.busy) return false;\r\n if (this.round == null) return false;\r\n if (this.round.IsReadOnly) return false;\r\n if (this.nextForm == null || !this.nextForm.$valid) return false;\r\n\r\n return !this.round.IsLocked;\r\n };\r\n\r\n this.addVersion = function addVersion() {\r\n let promise = tromanServer.WageGroups\r\n .addVersion(this.wageGroup, this.sendername)\r\n .then(() => stateService.reload())\r\n .catch(dialogService.error);\r\n this._block(promise);\r\n };\r\n\r\n this.canDownloadFile = function canDownloadFile() {\r\n if (this.busy) return false;\r\n return this.round != null && this.round.HasTransactionData && this.round.IsLocked;\r\n };\r\n\r\n this.downloadFile = function downloadFile() {\r\n if (!this.canDownloadFile()) return;\r\n\r\n let promise = tromanServer.PaymentRounds\r\n .downloadFile(this.round)\r\n .then(rsp => {\r\n downloadService.downloadBlob(rsp.blob, rsp.filename);\r\n stateService.reload();\r\n })\r\n .catch(dialogService.error);\r\n this._block(promise);\r\n };\r\n\r\n this.canDownloadReport = function canDownloadReport() {\r\n if (this.busy) return false;\r\n return this.round != null && this.round.HasTransactionData;\r\n };\r\n\r\n this.downloadReport = function downloadReport(splitAttestation) {\r\n if (!this.canDownloadReport()) return;\r\n\r\n var pars = {\r\n Options: { Format: 1, SplitAttestation: splitAttestation },\r\n Query: { PaymentRoundId: this.round.Id }\r\n };\r\n\r\n let promise = reportService\r\n .generate('Attestation', pars)\r\n .then(rsp => downloadService.downloadBlob(rsp.blob, rsp.filename))\r\n .catch(dialogService.error);\r\n this._block(promise);\r\n };\r\n}]);\r\n\r\n","import * as _ from 'lodash';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('WageGroupsController', ['stateService', 'tromanServer', 'dialogService', 'systemInfo', function (stateService, tromanServer, dialogService, systemInfo) {\r\n\r\n this.loading = true;\r\n this.showAdvancedSearch = false;\r\n this.table = null;\r\n this.items = null;\r\n this.systemInfo = systemInfo;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refresh();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refresh();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this._refresh = function _refresh() {\r\n this.loading = true;\r\n tromanServer.WageGroups.search(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createWageGroupList(list);\r\n };\r\n}]);\r\n","import './wagetype.less';\r\nimport * as _ from 'lodash';\r\nimport * as utility from '../misc/utility';\r\nimport { VariablePrice, wageModelInfos } from '../objects/WageType';\r\n\r\nangular.module(\"tromanWeb\").controller('WageTypeEditController', ['tromanServer', 'tromanGlobals', 'DialogControllerBase', '$scope', 'wageType', function (tromanServer, tromanGlobals, DialogControllerBase, $scope, wageType) {\r\n\r\n DialogControllerBase.call(this, tromanServer.WageTypes, $scope);\r\n\r\n const EmptyPeriod = {\r\n WageModel: 0,\r\n UseMeetingAccountSettings: false,\r\n Account: '',\r\n UnitPeriod: 60,\r\n SubPeriod: 60,\r\n UnitPrice: null,\r\n VariablePrice: new VariablePrice()\r\n };\r\n\r\n const NoFields = { Times: false, UnitPrice: false, VariablePrice: false };\r\n function getEnabled(wmid) {\r\n var wm = wageModelInfos[wmid];\r\n if (wm) {\r\n return ({\r\n Times: wm.hasTimes,\r\n UnitPrice: wm.hasUnitPrice,\r\n VariablePrice: wmid === 1\r\n });\r\n }\r\n return NoFields;\r\n }\r\n\r\n this.isPolitikerEnabled = tromanGlobals.systemInfo.IsPolitikerEnabled;\r\n\r\n this.getTitle = function () { return 'lönearten \"' + this.wageType.display + '\"'; };\r\n this.getItem = function () { return this.wageType; };\r\n\r\n this.wageModelChanged = function wageModelChanged() {\r\n this.period.WageModel = this.selectedWageModel.id;\r\n if (!this.wageType.Id) {\r\n this.wageType.WageModelGroup = this.selectedWageModel.group;\r\n }\r\n this.enable = getEnabled(this.period.WageModel);\r\n };\r\n\r\n this.periodChanged = function periodChanged() {\r\n if (this.period == null) {\r\n // This should only happen temporarily when a period is removed\r\n this.selectedWageModel = null;\r\n this.enable = NoFields;\r\n } else {\r\n this.selectedWageModel = _.find(this.activeWageModels, x => x.id === this.period.WageModel);\r\n this.wageModelChanged();\r\n }\r\n };\r\n\r\n function createPeriod(tpl) {\r\n let np = {\r\n Id: null,\r\n From: utility.todayDate(),\r\n WageModel: tpl.WageModel,\r\n UseMeetingAccountSettings: tpl.UseMeetingAccountSettings,\r\n Account: tpl.UseMeetingAccountSettings ? '' : tpl.Account,\r\n UnitPeriod: tpl.UnitPeriod,\r\n SubPeriod: tpl.SubPeriod,\r\n UnitPrice: tpl.UnitPrice,\r\n VariablePrice: tpl.VariablePrice.clone()\r\n };\r\n\r\n return np;\r\n }\r\n\r\n this.canAddPeriod = function canAddPeriod() {\r\n return this.wageType && this.wageType.Periods[0].Id;\r\n };\r\n\r\n this.addPeriod = function addPeriod() {\r\n if (!this.canAddPeriod()) return;\r\n\r\n const np = createPeriod(this.period);\r\n this.wageType.Periods.unshift(np);\r\n this.period = np;\r\n this.periodChanged();\r\n\r\n if (this.editForm) {\r\n this.editForm.$setDirty();\r\n }\r\n };\r\n\r\n this.canRemovePeriod = function canRemovePeriod() {\r\n return this.wageType && this.wageType.Periods.length > 1;\r\n };\r\n\r\n this.removePeriod = function removePeriod() {\r\n if (!this.canRemovePeriod()) return;\r\n let index = this.wageType.Periods.indexOf(this.period);\r\n if (index >= 0) {\r\n this.wageType.Periods.splice(index, 1);\r\n this.period = this.wageType.Periods[0];\r\n this.periodChanged();\r\n if (this.editForm) {\r\n this.editForm.$setDirty();\r\n }\r\n }\r\n };\r\n\r\n this.loadItem(wageType).then((wageType) => {\r\n this.wageType = wageType;\r\n\r\n if (wageType.Id) {\r\n this.activeWageModels = wageModelInfos.filter(x => x.group === wageType.WageModelGroup);\r\n } else {\r\n this.activeWageModels = wageModelInfos;\r\n wageType.Periods = [createPeriod(EmptyPeriod)];\r\n wageType.RequireUnitPrice = true;\r\n wageType.RequireNumber = true;\r\n wageType.RequireAmount = true;\r\n }\r\n\r\n this.period = wageType.Periods[0];\r\n this.periodChanged();\r\n });\r\n\r\n this.editingVariable = null;\r\n\r\n this.createVariable = function createVariable() {\r\n return ({\r\n max: null,\r\n amount: null\r\n });\r\n };\r\n\r\n this.variableAdd = function variableAdd() {\r\n if (!this.variableApply()) return;\r\n\r\n this.editingVariable = this.createVariable();\r\n this.period.VariablePrice.items.push(this.editingVariable);\r\n this.variablefocus = true;\r\n };\r\n\r\n this.variableEdit = function variableEdit(item) {\r\n if (!this.variableApply()) return;\r\n\r\n this.variablefocus = true;\r\n this.editingVariable = item;\r\n };\r\n\r\n this.variableCanApply = function variableCanApply() {\r\n if (!this.variableform.$valid) return false;\r\n return true;\r\n };\r\n\r\n this.variableApply = function variableApply() {\r\n if (!this.editingVariable)\r\n return true;\r\n if (!this.variableCanApply())\r\n return false;\r\n this.editingVariable = null;\r\n this.period.VariablePrice.items.sort((a, b) => a.max - b.max);\r\n return true;\r\n };\r\n\r\n this.variableRemove = function variableRemove() {\r\n if (!this.editingVariable) return;\r\n\r\n var index = this.period.VariablePrice.items.indexOf(this.editingVariable);\r\n if (index >= 0) {\r\n this.period.VariablePrice.items.splice(index, 1);\r\n this.editingVariable = null;\r\n this.variableform.$setDirty();\r\n }\r\n };\r\n\r\n // TODO refactor so things like this are avoided\r\n const superSave = this.save.bind(this);\r\n this.save = function save() {\r\n if (!this.variableApply()) return;\r\n superSave();\r\n };\r\n}]);","import * as _ from 'lodash';\r\nimport { WageType } from '../objects/WageType';\r\n\r\nfunction createCriteria(source) {\r\n let defaultCriteria = {\r\n Archived: 0,\r\n };\r\n\r\n return _.extend(defaultCriteria, _.cloneDeep(source));\r\n}\r\n\r\nangular.module(\"tromanWeb\").controller('WageTypesController', ['stateService', 'tromanServer', 'dialogService', function (stateService, tromanServer, dialogService) {\r\n\r\n this.loading = true;\r\n this.showAdvancedSearch = false;\r\n this.table = null;\r\n this.items = null;\r\n\r\n this.$onInit = function $onInit() {\r\n const params = stateService.getParams();\r\n\r\n this.filter = params.filter;\r\n this.criteria = createCriteria(params.criteria);\r\n this.showAdvancedSearch = params.criteria != null;\r\n\r\n this._refresh();\r\n };\r\n\r\n this.uiOnParamsChanged = function (changed) {\r\n if (_.has(changed, 'criteria')) {\r\n this.criteria = createCriteria(changed.criteria);\r\n this._refresh();\r\n }\r\n\r\n if (_.has(changed, 'filter')) {\r\n this.filter = changed.filter;\r\n }\r\n };\r\n\r\n this.search = function search() {\r\n stateService.reloadWithParams({ criteria: _.cloneDeep(this.criteria) });\r\n };\r\n\r\n this.filterChanged = function filterChanged() {\r\n stateService.replaceParams({ filter: this.filter });\r\n };\r\n\r\n this._refresh = function _refresh() {\r\n this.loading = true;\r\n tromanServer.WageTypes.search(this.criteria).then(data => {\r\n this.error = null;\r\n this.items = data;\r\n }).catch(err => {\r\n this.error = err;\r\n this.items = null;\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n };\r\n\r\n this.createList = function createList() {\r\n if (this.table == null) return;\r\n var list = this.table.selectedItems();\r\n dialogService.createWageTypeList(list);\r\n };\r\n\r\n this.add = function add() {\r\n dialogService.editWageType(new WageType()).then(() => this._refresh());\r\n };\r\n\r\n this.edit = function edit(item) {\r\n dialogService.editWageType(item).then(() => this._refresh());\r\n };\r\n}]);\r\n","// Module\nvar code = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{ file.isAdded ? '(Ny)' : (file.timestamp | ergoDate) }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{file.name}}\\r\\n \\r\\n {{file.isAdded ? '(Ny)' : ''}}\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till {{::$root.$shared.isTroman?'gratifikation':'utbildning'}}

\\r\\n

Redigera {{::$root.$shared.isTroman?'gratifikation':'utbildning'}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
TidHändelseUtfört avMeddelande
{{entry.timestamp | ergoDateTime}}{{entry.incident}}{{entry.user}}{{entry.message}}
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n

\\r\\n Mottagarlista\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Format på mottagarlista
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Vilka e-postadresser ska användas
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n

{{emailctrl.persons.length - emailctrl.missing.length}} av {{emailctrl.persons.length}} personer visas.

\\r\\n
\\r\\n\\r\\n
\\r\\n
Följande personer ingår inte i listan
\\r\\n \\r\\n
Alla personer ingår i listan
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\r\\n
{{::title}}
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Filtrerade:\\r\\n {{ ctrl.table.filteredCount || 0 }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Totalt:\\r\\n {{ ctrl.table.totalCount || 0 }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Kommun- eller länskod\\r\\n \\r\\n
{{ row.code }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till valkrets

\\r\\n

Valkrets - {{::ctrl.division.Name}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

{{ctrl.isAdding ? 'Lägg sist' : (ctrl.division.Active ? ctrl.division.SortingCode : 'Arkiverad')}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Valkretsar

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
FörkortningNamnSortering
{{ ::item.Abbreviation }}{{ ::item.Name }}{{ ::item.Active ? item.SortingCode : ''}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till utrustning

\\r\\n

Redigera utrustning

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Imports\nvar ___HTML_LOADER_IMPORT_0___ = require(\"./persons.png\");\nvar ___HTML_LOADER_IMPORT_1___ = require(\"./organization.png\");\nvar ___HTML_LOADER_IMPORT_2___ = require(\"./missions.png\");\nvar ___HTML_LOADER_IMPORT_3___ = require(\"./meetings.png\");\nvar ___HTML_LOADER_IMPORT_4___ = require(\"./youtube.png\");\n// Module\nvar code = \"
\\r\\n

\\r\\n Välkommen till {{::$root.$shared.isTroman?'Troman Webb':'Valman Webb'}}\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Personer folkbokförda i fel kommun
\\r\\n
\\r\\n Det finns uppdrag där personen inte är folkbokförd i rätt kommun.\\r\\n
\\r\\n
\\r\\n Visa uppdrag\\r\\n
\\r\\n
\\r\\n
\\r\\n
Utgående mandatperioder
\\r\\n
\\r\\n Det finns organisationer med mandatperioder som går ut inom {{ ctrl.systemInfo.EndingMandateDays === 1 ? '1 dag' : (ctrl.systemInfo.EndingMandateDays + ' dagar') }}\\r\\n
\\r\\n
\\r\\n Visa organisationer\\r\\n
\\r\\n
\\r\\n
\\r\\n
Att hantera i Troman Politiker
\\r\\n
\\r\\n
\\r\\n Det finns nya ärenden från Troman Politiker att hantera\\r\\n
\\r\\n
\\r\\n Visa nya ärenden\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Det finns nya förrättningar från Troman Politiker\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n

\\r\\n Skapa lista\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Använd Listmall

\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Spara Listmall

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Rubrik

\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Kolumner\\r\\n

\\r\\n\\r\\n

\\r\\n Välj vilka kolumner som ska visas i listan. Ordningen kan ändras genom att dra i raden.\\r\\n

\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n {{prop.title}}\\r\\n \\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Sortering\\r\\n

\\r\\n\\r\\n

\\r\\n Välj hur listan skall sorteras, listan kan sorteras efter egenskaper (t.ex. sorteringskod) även om de inte visas i en kolumn.\\r\\n

\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n {{prop.title}}\\r\\n \\r\\n \\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n

Lägg till mandatperiod

\\r\\n

Redigera mandatperiod

\\r\\n

{{::ctrl.mandatePeriod.Organization.Name}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Existerande möte

\\r\\n
\\r\\n Förrättningen kommer sparas som ny närvaropost på ett existerande möte.\\r\\n
\\r\\n Endast möten där personen inte redan är närvarande visas.\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Närvaro
\\r\\n \\r\\n \\r\\n
\\r\\n Närvarotiden ligger utanför mötestiden.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Bilagor
\\r\\n\\r\\n

\\r\\n Följande filer har bifogats till förrättningen och kan kopieras till mötet.\\r\\n
\\r\\n Filerna kan nås i efterhand även om de inte kopieras till mötet.\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Inga bilagor på förrättningen\\r\\n
\\r\\n
\\r\\n\\r\\n
Bilagor som redan finns på mötet
\\r\\n
Inget möte valt
\\r\\n
Inga bilagor på mötet
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{file.Filename}}\\r\\n \\r\\n {{file.Description}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationDatumTidMötestypLokalMötesbenämning
\\r\\n \\r\\n {{ ::item.Date | ergoDate }}{{ ::item.MeetingTime }}{{ ::$ctrl.formatMeetingType(item) }}{{ ::item.Location }}{{ ::item.Designation }}
Inga möten hittades.
\\r\\n\\r\\n \\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Ny förrättning

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

\\r\\n Förrättningen har registrerats i Troman Politiker enligt nedan\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{ctrl.ceremony.Mission.Start | ergoDate}} - {{ctrl.ceremony.Mission.End | ergoDate}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.ceremony.Designation}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.ceremony.Location}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.ceremony.CeremonyDate | ergoDate}}, {{ctrl.ceremony.CeremonyTime }}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.previousRejection.Message}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
0\\\">\\r\\n
\\r\\n {{::claim.title}}\\r\\n ({{::claim.detail}})\\r\\n
\\r\\n
\\r\\n
(inga anspråk)
\\r\\n
\\r\\n
\\r\\n
Förrättningen kan registreras på ett existerande eller nytt möte i Troman.
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

Nytt möte

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

Avslå förrättning

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Troman Politiker - Förrättning

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Rapporterade uppgifter
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Person{{$ctrl.ceremony.Mission.Person.name}}
Uppdrag{{$ctrl.ceremony.Mission.MissionType.Name}} - {{$ctrl.ceremony.Mission.MandatePeriod.Organization.Name}}
Datum{{$ctrl.ceremony.CeremonyDate | ergoDate}}
Tid{{$ctrl.ceremony.CeremonyTime}}
Namn på förrättning{{$ctrl.ceremony.Designation}}
Lokal{{$ctrl.ceremony.Location}}
Status{{$ctrl.status}}
\\r\\n
\\r\\n\\r\\n
\\r\\n
Historik
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
Bilagor
\\r\\n
\\r\\n {{att.Filename}}\\r\\n
\\r\\n
\\r\\n Inga bilagor\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Lägg till möte

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Ange uppdrag för närvaroposten

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Närvaropost
\\r\\n
\\r\\n \\r\\n

{{::$ctrl.attendance.Meeting.Date | ergoDate}}

\\r\\n \\r\\n

{{::$ctrl.attendance.Person.display}}

\\r\\n \\r\\n

{{::$ctrl.attendance.Meeting.Organization.Name}}

\\r\\n \\r\\n

{{::$ctrl.attendance.Organization.Name}}

\\r\\n \\r\\n

{{::$ctrl.attendance.MissionType.Name}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
Uppdrag
\\r\\n

\\r\\n Anställningsnummer och arvodesinformation för valt uppdrag kommer att användas för arvoden.\\r\\n
\\r\\n Ändringar gjorda här sparas först när närvarolistan sparas.\\r\\n

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

{{$ctrl.selectedMission.HasMeetingPay ? 'Ja' : 'Nej'}}

\\r\\n \\r\\n

{{$ctrl.selectedMission.EmployeeNumber}}

\\r\\n \\r\\n

{{$ctrl.selectedMission.TravelPayNumber | number : 2}}

\\r\\n \\r\\n

{{$ctrl.selectedMission.LostIncomeGuardShare}}

\\r\\n
\\r\\n
\\r\\n Personen har inga uppdrag som motsvarar den importerade närvaroposten.\\r\\n
\\r\\n Kontrollera att personen har ett uppdrag i önskad organisation på mötesdagen.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n Närvarande: {{ctrl.presentCount}} / {{ctrl.ac.attendances.length}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n PersonNrNamnUppdragstyp\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Kommentar\\r\\n \\r\\n
\\r\\n Inga närvaroposter i listan.\\r\\n
{{ item.getPerson().PersonalNumber }}\\r\\n \\r\\n {{ item.displayPerson }}\\r\\n \\r\\n {{ item.displayMissionType }}\\r\\n {{item.timeReportStatusText}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Arvode finns\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Arvode finns\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Möte

\\r\\n
\\r\\n
\\r\\n \\r\\n
{{meetingctrl.meeting.Designation}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{meetingctrl.meeting.Organization.Name}} (Möten)
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
{{meetingctrl.meeting.Date | ergoDate}}, {{meetingctrl.meeting.MeetingTime }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Organisationen hör inte till en lönegrupp, arvoden kan inte föras över till lönesystemet.\\r\\n
\\r\\n
\\r\\n Det finns anspråk från Troman Politiker för mötet, men Troman Politiker är inte konfigurerat för mötesdatumet.\\r\\n
\\r\\n
\\r\\n Det finns mötesdeltagare som inte kan föras över till lönesystemet.\\r\\n \\r\\n
\\r\\n
\\r\\n Det finns närvarande personer som inte fått mötesarvode.\\r\\n \\r\\n
\\r\\n
\\r\\n Det finns arvodesposter som överskrider max-gränser.\\r\\n \\r\\n
\\r\\n
\\r\\n Det finns nya anspråk från Troman Politiker.\\r\\n \\r\\n
\\r\\n
\\r\\n Det finns arvoden med avslagen attest.\\r\\n \\r\\n
\\r\\n
\\r\\n Det finns arvoden med återkallad attest.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Visar endast mötesdeltagare som inte kan föras över till lönesystemet.\\r\\n \\r\\n
\\r\\n
\\r\\n Det finns närvarande personer som inte fått mötesarvode.\\r\\n \\r\\n
\\r\\n
\\r\\n Visar endast arvodesposter som överskrider max-gränser.\\r\\n \\r\\n
\\r\\n
\\r\\n Visar endast nya anspråk från Troman Politiker.\\r\\n \\r\\n
\\r\\n
\\r\\n Visar endast arvoden med avslagen attest.\\r\\n \\r\\n
\\r\\n
\\r\\n Visar endast arvoden med återkallad attest.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Godkänn alla tidrapporter och anspråk från Troman Politiker.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n För stora nya bifogade filer, som mest 100MB kan läggas till åt gången.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ $ctrl.meeting.MeetingTime | ergoTimespanDuration }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Bifogade filer - förrättning
\\r\\n\\r\\n

\\r\\n Följande filer har bifogats till förrättningen och kan kopieras till mötet.\\r\\n
\\r\\n Filerna kan nås i efterhand även om de inte kopieras till mötet.\\r\\n

\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
Bifogade filer
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
Arvodesinställningar
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Troman Publik
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Troman Politiker
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
PersonOrganisationDatumTidLokalMötesbenämningReg. Tid
{{ ::item.Mission.Person.name }}{{ ::item.Mission.MandatePeriod.Organization.Name }}{{ ::item.CeremonyDate | ergoDate }}{{ ::item.CeremonyTime }}{{ ::item.Location }}{{ ::item.Designation }} {{ ::item.StateTimestamp | ergoDateTime }} \\r\\n \\r\\n Hantera\\r\\n \\r\\n
Inga förrättningar hittades.
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationDatumTidMötesbenämningAttest begärdAntal
{{ ::item.Meeting.Organization.Name }}{{ ::item.Meeting.Date | ergoDate }}{{ ::item.Meeting.MeetingTime }}{{ ::item.Meeting.Designation }} {{ ::item.FirstTimestamp | ergoDateTime }} {{ ::item.Count }} \\r\\n \\r\\n Arvoden\\r\\n \\r\\n
Inga möten hittades.
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Ange organisation, person eller datumintervall på upp till 3 månader.\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationDatumTidLokalOffentligtMötesbenämningStatus
{{ ::item.Organization.Name }}{{ ::item.Date | ergoDate }}{{ ::item.MeetingTime }}{{ ::item.Location }}{{ :: item.IsPublic | ergoYesEmpty }}{{ ::item.Designation }} \\r\\n \\r\\n Arvoden\\r\\n \\r\\n \\r\\n \\r\\n Närvaro\\r\\n \\r\\n \\r\\n \\r\\n Möte\\r\\n \\r\\n
Inga möten hittades.
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Möten

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationDatumTidMötesbenämningReg. TidAntal
{{ ::item.Meeting.Organization.Name }}{{ ::item.Meeting.Date | ergoDate }}{{ ::item.Meeting.MeetingTime }}{{ ::item.Meeting.Designation }} {{ ::item.firstTimestamp | ergoDateTime }} {{ ::item.issueCount }} \\r\\n \\r\\n Hantera\\r\\n \\r\\n
Inga möten hittades.
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Troman Politiker - Tidrapport

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Rapporterade uppgifter
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Person{{$ctrl.attendance.getPerson().name}}
Uppdrag{{$ctrl.attendance.Mission.MissionType.Name}} - {{$ctrl.attendance.Mission.MandatePeriod.Organization.Name}}
Datum{{$ctrl.attendance.Meeting.Date | ergoDate}}
Rapporterad närvarotid{{$ctrl.timeReport.PresentTime}}Ej närvarande
Rapporterad tjg.tid{{$ctrl.timeReport.ServingTime}}Ej tjänstgörande
Status{{$ctrl.status}}
\\r\\n
\\r\\n\\r\\n
\\r\\n
Historik
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n Begäran om tidrapportering kan återkallas.\\r\\n
\\r\\n Begäran kommer inte längre visas på Troman Politiker.\\r\\n

\\r\\n

\\r\\n Begäran om tidrapportering kan återkallas.\\r\\n
\\r\\n Avslaget kommer fortsatt visas på Troman Politiker, men ny närvarotid kan inte längre rapporteras.\\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n Begäran om tidrapportering har återkallats, men kan aktiveras igen.\\r\\n
\\r\\n Avslaget kommer liksom tidigare visas på Troman Politiker, men öppnas för att rapportera ny närvarotid.\\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Lägg till plocklista

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

{{::mgctrl.missionGroup.Name}}

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Filtrerade:\\r\\n {{ ctrl.table.filteredCount || 0 }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Totalt:\\r\\n {{ ctrl.table.totalCount || 0 }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationUppdragstypPerson{{::$root.$shared.isTroman?'Parti':'Kategori'}} (Uppdrag)StartSlut
\\r\\n {{ ::mission.MandatePeriod.Organization.Name }}\\r\\n {{ ::mission.MissionType.Name }}\\r\\n {{ ::mission.Person.name }}\\r\\n {{ ::mission.Party.Abbreviation }}{{ ::mission.Start | ergoDate }}{{ ::mission.End | ergoDate }}
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Plocklistor

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Namn
\\r\\n \\r\\n {{ ::item.Name }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till {{::ctrl.missionCount}} uppdrag i plocklista

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n {{::ctrl.vacantCount}} {{::ctrl.vacantCount===1?'vakant':'vakanta'}} uppdrag från markeringen tas inte med i plocklistan.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Inga markerade uppdrag kan tas med i plocklistan.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till uppdragstyp

\\r\\n

Redigera uppdragstyp

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Uppdragstyper

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
FörkortningNamnPresidiumGratifikationFörtroendeuppdragErsättare
{{ ::item.Abbreviation }} {{ ::item.Name }}{{ ::item.IsPresidium | ergoYesEmpty }}{{ ::item.IsGroundForGratuity | ergoYesEmpty }}{{ ::item.TrustMission | ergoYesEmpty }}{{ ::item.IsSubstitute | ergoYesEmpty }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till uppdrag

\\r\\n

Redigera uppdrag

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Personen har redan ett uppdrag i mandatperioden ({{ctrl.matchingMission.MissionType.Abbreviation}}, {{ctrl.matchingMission.Start | ergoDate}} - {{ctrl.matchingMission.End | ergoDate}})\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{ctrl.mission.Person.name}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{ctrl.mission.MandatePeriod.Organization.Name}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{ctrl.mission.MandatePeriod.display}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{ ctrl.mission.OrderNumber > 0 ? ctrl.mission.OrderNumber : 'Lägg sist' }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
ctrl.mission.MandatePeriod.End)\\\">Datumet är efter mandatperiodens slut.
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
ctrl.mission.MandatePeriod.End)\\\">Datumet är efter mandatperiodens slut.
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Personen är inte folkbokförd i giltig kommun.
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Kan ej anges

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Kan ej anges

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Arvodesuppgifter
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Troman Politiker
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Troman Publik
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Uppdrag och Historik

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationFörnamnEfternamnUppdragstyp{{::$root.$shared.isTroman?'Parti':'Kategori'}}StartSlut
\\r\\n \\r\\n {{ ::item.MandatePeriod.Organization.Name }}\\r\\n \\r\\n {{item.Person.firstName}}\\r\\n \\r\\n {{ ::item.Person.LastName }}\\r\\n \\r\\n \\r\\n Vakant\\r\\n \\r\\n {{ ::item.MissionType.Name }}{{ ::item.Party.Abbreviation }}{{ ::item.Start | ergoDate }}{{ ::item.End | ergoDate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

\\r\\n Redigera {{::ctrl.missions.length}} uppdrag\\r\\n - {{::ctrl.organization.Name}}\\r\\n - {{::ctrl.person.name}}\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Ändra datum

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

Kopiera till mandatperiod

\\r\\n
\\r\\n Kopiera alla uppdrag till mandatperiod.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Ändra uppdragstyp på kopian.\\r\\n
\\r\\n \\r\\n
\\r\\n Originalen har olika uppdragstyp, alla kopior får den valda uppdragstypen.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

Skapa kopia

\\r\\n

\\r\\n En kopia skapas för varje uppdrag i originalets mandatperiod.
\\r\\n Kopian får stardatum efter originalets slutdatum.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Varning, slutdatum för uppdrag har inte ändrats.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Ändra uppdragstyp på kopian.\\r\\n
\\r\\n \\r\\n
\\r\\n Originalen har olika uppdragstyp, alla kopior får den valda uppdragstypen.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\r\\n\\r\\n\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till organisationstyp

\\r\\n

Redigera organisationstyp

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

{{ctrl.isAdding ? 'Lägg sist' : (ctrl.organizationType.Active ? ctrl.organizationType.SortingCode : 'Arkiverad')}}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Troman Publik
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Organisationstyper

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NamnBeskrivningSortering
{{ ::item.Name }}{{ ::item.Description }} {{ ::item.Active ? item.SortingCode : ''}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Lägg till organisation

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n För stora nya bifogade filer, som mest 100MB kan läggas till åt gången.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

{{(!oec.organization.Id) ? 'Lägg sist' : (oec.organization.Active ? oec.organization.SortingCode : 'Arkiverad')}}

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Adress
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Besöksadress
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Filer
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

{{::oc.organization.Name}}

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Visar endast uppdrag med överlappande ordningsnummer i mandatperioden.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Visar endast personer med flera uppdrag i mandatperioden.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Överlappande ordningsnummer i mandatperioden.\\r\\n \\r\\n
\\r\\n
\\r\\n Personer med flera uppdrag i mandatperioden.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Filtrerade:\\r\\n {{ omc.missionTable.filteredCount || 0 }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Totalt:\\r\\n {{ omc.missionTable.totalCount || 0 }}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
UppdragstypPerson{{::$root.$shared.isTroman?'Parti':'Kategori'}} (Uppdrag)StartSlutOrdningsnr
{{ ::mission.MissionType.Name }}\\r\\n {{ ::mission.Person.name }}\\r\\n \\r\\n Vakant\\r\\n \\r\\n {{ ::mission.Party.Abbreviation }}{{ ::mission.Start | ergoDate }}{{ ::mission.End | ergoDate }}{{ ::mission.OrderNumber }}\\r\\n \\r\\n Ledigt ordningsnummer{{ ::mission.OrderNumber }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{omc.missionTable.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Troman Politiker
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Arvoden för {{oec.organization.PrimaryCertifier.display}} kommer inte kunna attesteras.\\r\\n
\\r\\n
\\r\\n {{oec.organization.PrimaryCertifier.display}} kommer kunna attestera sina egna arvoden.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Troman Publik
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Detaljer
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Fältet \\\"Beskrivning\\\" kommer tas bort i en kommande release.
Använd istället fältet \\\"Information (offentlig)\\\" på fliken \\\"Uppgifter\\\" och kryssa i rutan ovan.\\r\\n
\\r\\n
\\r\\n Detta fält kommer inte visas på Troman Publik eftersom fältet \\\"Information (offentlig)\\\" visas istället.\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
Länkar
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Organisationer

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationstypFörkortningNamnStartSlutSortering
{{ ::item.OrganizationType.Name }}{{ ::item.Abbreviation }}\\r\\n \\r\\n {{ ::item.Name }}\\r\\n \\r\\n {{ ::item.getCurrentOrLastMandate().Start | ergoDate }}{{ ::item.getCurrentOrLastMandate().End | ergoDate }}{{ ::item.Active ? item.SortingCode : ''}}
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

{{::$root.$shared.isTroman?'Partier':'Kategorier'}}

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{::$root.$shared.isTroman?'Partibeteckning':'Förkortning'}}NamnHemsidaSortering
{{ ::item.Abbreviation }}{{ ::item.Name }}{{ ::item.Website }}{{ ::item.Active ? item.SortingCode : ''}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till {{::$root.$shared.isTroman?'parti':'kategori'}}

\\r\\n

Redigera {{::$root.$shared.isTroman?'parti':'kategori'}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

{{ctrl.isAdding ? 'Lägg sist' : (ctrl.party.Active ? ctrl.party.SortingCode : 'Arkiverad')}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{$ctrl.title}}\\r\\n ({{$ctrl.subtitle}})\\r\\n
\\r\\n
{{$ctrl.lastRejection.Message}}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{$ctrl.paymentGroup.message}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{$ctrl.paymentGroup.message}}
\\r\\n
\\r\\n
\\r\\n
0 && !$ctrl.willRemovePayments\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n Arvodet har redan tagits med i lönemånad {{$ctrl.payment.PaymentRound.PaymentMonth}}. Denna ändring påverkar enbart statistik och framtida rapporter.\\r\\n Arvodet har redan tagits med i senaste lönemånad {{$ctrl.payment.PaymentRound.PaymentMonth}}. För att ändringen skall slå igenom helt måste ny version skapas för denna lönemånad.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Lönearten saknar period för mötesdatumet.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Ej rätt till ersättning för förlorad inkomst.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Spärr kommer inte kunna tas bort utan arvodet måste skapas på nytt för att skickas till lönesystem.
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n

{{::$ctrl.title}}

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Ersättning{{::$ctrl.title}}
Status{{::$ctrl.status}}
Resväg från{{$ctrl.nugget.RouteFrom}}
Resväg till{{$ctrl.nugget.RouteTo}}
Antal km{{$ctrl.nugget.DrivingDistance | number:2}}
Parkeringsavgift{{$ctrl.nugget.Parking | number:2}}
Moms (parkeringsavgift){{$ctrl.nugget.ParkingVat | number:2}}
Trängselskatt{{$ctrl.nugget.Congestion | number:2}}
Moms (trängselskatt){{$ctrl.nugget.CongestionVat | number:2}}
Kollektivtrafik{{$ctrl.nugget.PublicTransport | number:2}}
Moms (kollektivtrafik){{$ctrl.nugget.PublicTransportVat | number:2}}
Restidsersättning{{$ctrl.nugget.TravelTime | ergoDurationMinutes}}
Resväg från{{$ctrl.nugget.RouteFrom}}
Resväg till{{$ctrl.nugget.RouteTo}}
Antal km{{$ctrl.nugget.DrivingDistance | number:2}}
Parkeringsavgift{{$ctrl.nugget.Parking | number:2}}
Moms (parkeringsavgift){{$ctrl.nugget.ParkingVat | number:2}}
Trängselskatt{{$ctrl.nugget.Congestion | number:2}}
Kollektivtrafik{{$ctrl.nugget.PublicTransport | number:2}}
Moms (kollektivtrafik){{$ctrl.nugget.PublicTransportVat | number:2}}
Restid{{$ctrl.nugget.TravelTime | ergoDurationMinutes}}
Beskrivning{{$ctrl.nugget.Purpose}}
Belopp{{$ctrl.nugget.Amount | number:2}}
Moms{{$ctrl.nugget.Vat | number:2}}
Arbetsgivare{{$ctrl.nugget.Employer}}
Belopp{{$ctrl.nugget.Amount | number:2}}
PensionsförmånErsättning begärd
SemesterersättningErsättning begärd
Arbetsgivare{{$ctrl.nugget.Employer}}
Antal timmar{{$ctrl.nugget.Hours | number:2}}
PensionsförmånErsättning begärd
SemesterersättningErsättning begärd
Arbetsgivare{{$ctrl.nugget.Employer}}
Timlön{{$ctrl.nugget.HourlyRate | number:2}}
Antal timmar{{$ctrl.nugget.Hours | number:2}}
PensionsförmånErsättning begärd
SemesterersättningErsättning begärd
\\r\\n
\\r\\n\\r\\n
\\r\\n
Historik
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
Bilagor
\\r\\n \\r\\n
\\r\\n Inga bilagor\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Begäran om attest kan återkallas.

\\r\\n

Begäran kommer omedelbart återkallas, registrerade arvoden ligger kvar men tas inte med i transaktionsfil.

\\r\\n \\r\\n
\\r\\n
\\r\\n

Attest kan återkallas.

\\r\\n

Registrerade arvoden ligger kvar men måste attesteras på nytt för att tas med i transaktionsfil.

\\r\\n \\r\\n
\\r\\n
\\r\\n

Radera ersättningen.

\\r\\n

Ersättningen samt alla arvoden kommer omedelbart att raderas.

\\r\\n \\r\\n
\\r\\n
\\r\\n

Godkännande av anspråket kan återkallas.

\\r\\n

Begäran om attest kommer återkallas.

\\r\\n

Attest kommer återkallas och måste genomföras igen för att arvoden ska tas med i transaktionsfil.

\\r\\n

Alla registrerade arvoden tas bort. Anspråket ligger kvar, men dess godkännande dras tillbaka.

\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
{{ pm.payment.WageType.display }}
\\r\\n
{{ pm.payment.UnitPrice | number : 2 }}
\\r\\n
{{ pm.payment.Number | number : 2 }}
\\r\\n
{{ pm.payment.Amount | number : 2 }}
\\r\\n
{{ pm.payment.Account }}
\\r\\n
\\r\\n \\r\\n {{ pm.payment.PaymentRound ? pm.payment.PaymentRound.PaymentMonth : pm.payment.IsLocked ? 'Spärrad' : '' }}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n {{$ctrl.person.PersonalNumber}}\\r\\n
\\r\\n
\\r\\n {{$ctrl.mission.EmployeeNumber}}\\r\\n
\\r\\n
\\r\\n {{$ctrl.attendance.displayMissionType}}\\r\\n
\\r\\n
\\r\\n {{$ctrl.model.presentTime}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Väntar på tidrapport från Troman Politiker.\\r\\n
\\r\\n\\r\\n
\\r\\n Uppdraget ger inte rätt till mötesarvode.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{err.message}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Överskriden gränsLöneartTotaltÖverskridande
{{ ::item.message }}{{ ::item.location }}{{ ::item.Amount | number : 2 }}{{ ::item.Overflow | number : 2 }}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Löneart
\\r\\n
à-pris
\\r\\n
Antal
\\r\\n
Belopp
\\r\\n
Konto
\\r\\n
Lönemånad
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ $ctrl.model.totalAmount | number : 2 }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Namn\\r\\n
\\r\\n
\\r\\n Person nr.\\r\\n
\\r\\n
\\r\\n Anst.nr\\r\\n
\\r\\n
\\r\\n Uppdrag\\r\\n
\\r\\n
\\r\\n Närvarande\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{$ctrl.title}}\\r\\n (Avslaget)\\r\\n (Godkänt)\\r\\n
\\r\\n
\\r\\n Obs. Närvarotiden är utanför mötestiden\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{$ctrl.paymentGroup.presentTime}}
\\r\\n
Ej närvarande
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{$ctrl.paymentGroup.servingTime}}
\\r\\n
Ej tjänstgörande
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Tidigare avslaget
\\r\\n
{{$ctrl.lastRejection.Message}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{$ctrl.paymentGroup.rejectionMessage}}
\\r\\n
\\r\\n
\\r\\n
0 && !($ctrl.paymentGroup.isRejecting || $ctrl.paymentGroup.hasRejected)\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{$ctrl.title}}\\r\\n (Avslaget)\\r\\n (Godkänt)\\r\\n
\\r\\n\\r\\n
{{$ctrl.description}}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Bilagor
\\r\\n \\r\\n
\\r\\n Inga bilagor\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Tidigare avslaget
\\r\\n
{{$ctrl.lastRejection.Message}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{$ctrl.paymentGroup.rejectionMessage}}
\\r\\n
\\r\\n
\\r\\n Anspråket godkänns, men resulterar inte i några arvoden\\r\\n
\\r\\n
\\r\\n
0 && !($ctrl.paymentGroup.isRejecting || $ctrl.paymentGroup.hasRejected)\\\">\\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
{{$ctrl.title}}
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Attestanter

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
OrganisationAttestantTypAttest begärdAntalMöten
Inga organisationer har attestanter
{{ ::item.Organization.Name }}{{ ::item.Certifier.name }}{{ ::item.IsPrimary ? 'Förste' : 'Andre'}}{{ ::item.FirstPendingTimestamp | ergoDateTime }}{{ ::item.Count }} 0\\\">Möten
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Lägg till person

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

{{::$root.$shared.isTroman?'Gratifikationer':'Utbildning'}}

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
DatumBeskrivningKommentar
{{ ::item.AwardDate | ergoDate }}{{ ::item.Description }}{{ ::item.Comment }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n För stora nya bifogade filer, som mest 100MB kan läggas till åt gången.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

{{ ::pec.person.LastLookupTimestamp | ergoDateTime }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Uppgifter om förnamn (folkbokföring) kan skrivas över av SPAR\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Uppgifter om efternamn kan skrivas över av SPAR\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
Rekommendation: Porträtt eller landskap
Min 300px - max 500px höjd/bredd
\\r\\n
\\r\\n \\r\\n \\r\\n Ångra\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Ta bort\\r\\n \\r\\n \\r\\n \\r\\n Ångra\\r\\n \\r\\n
\\r\\n
Rekommendation: Porträtt eller landskap
Min 300px - max 500px höjd/bredd
\\r\\n
{{pec.photoWarning}} (bilden visas här inte i sin ursprungliga storlek).
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Kontaktuppgifter
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Personens folkbokföring matchar inte grundinställningen.
\\r\\n
\\r\\n Uppgifter om bostadsadress kan skrivas över av SPAR\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Filer
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Utrustning

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NamnTypSerienummerUtlånadÅterlämnasÅterlämnadOrganisationKommentar
{{::eq.Name}}{{::eq.EquipmentType.name}}{{::eq.Serial}}{{::eq.LoanDate | ergoDate}}{{::eq.ExpireDate | ergoDate}}{{::eq.ReturnDate | ergoDate}}{{::eq.Organization.Name}}{{::eq.Comment}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

{{::pc.person.display}}

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Aktiva Uppdrag

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n TypOrganisation{{::$root.$shared.isTroman?'Parti':'Kategori'}} (Uppdrag)StartSlut
\\r\\n
\\r\\n
\\r\\n Personen har inga aktiva uppdrag.\\r\\n
{{ ::m.MissionType.Name }}\\r\\n {{ ::m.MandatePeriod.Organization.Name }}\\r\\n {{ ::m.Party.Abbreviation }}{{ ::m.Start | ergoDate }}{{ ::m.End | ergoDate }}\\r\\n \\r\\n
\\r\\n\\r\\n

Historik

\\r\\n
\\r\\n Visa Historik\\r\\n
\\r\\n
\\r\\n
\\r\\n
Uppdragstid (t.o.m. {{pmc.durationCutoff | ergoDate}})
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{pmc.totalDuration | ergoDateDuration}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{pmc.gratuityDuration | ergoDateDuration}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Historiska uppdrag
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n TypOrganisation{{::$root.$shared.isTroman?'Parti':'Kategori'}} (Uppdrag)StartSlut
\\r\\n Det finns inga uppdrag inom perioden\\r\\n
{{ ::m.MissionType.Name }}\\r\\n {{ ::m.MandatePeriod.Organization.Name }}\\r\\n {{ ::m.Party.Abbreviation }}{{ ::m.Start | ergoDate }}{{ ::m.End | ergoDate }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Aktiva:\\r\\n {{pmc.missionTable.selectionCount}}\\r\\n
\\r\\n\\r\\n
\\r\\n Historiska:\\r\\n {{pmc.historyTable.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Arvodesuppgifter
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Förlorad inkomst
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
ArbetsgivareKr/timmeGiltig frånGiltig till\\r\\n \\r\\n
{{ row.EmployerName }}{{ row.UnitPrice | number : 2 }}{{ row.ValidFrom | ergoDate }}{{ row.ValidTo | ergoDate }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Inställningar för Troman Politiker
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Politiker aktiverades: {{pec.person.PolitikerActivationTimestamp | ergoDateTime}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Troman Publik
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Telefonnummer
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Adresser
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
E-post
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Länkar
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n

\\r\\n Arkivera {{$ctrl.target}}\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n

Arkivera {{$ctrl.target}}, är du säker?

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Personer

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
PersonnummerFörnamnEfternamn{{::$root.$shared.isTroman?'Parti':'Kategori'}}E-post (Offentlig)
{{ ::item.PersonalNumber }}{{ ::item.firstName }}\\r\\n \\r\\n {{ ::item.LastName }}\\r\\n \\r\\n {{ ::item.Party.Abbreviation }}{{::item.emailPublic.Email}}
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Troman Politiker - inställningar

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Grundinställningar
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Periodinställningar
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Valt datum är före tidigare periods start.\\r\\n
\\r\\n
ctrl.maxdate\\\">\\r\\n Valt datum är senare än efterföljande periods start.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Moms-redovisning
\\r\\n\\r\\n

Om funktionen är aktiverad ska moms redovisas separat i Troman Politiker för utlägg, kollektivtrafik, parkeringsavgift och trängselskatt.

\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver inte belopp\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Förlorad inkomst - Belopp
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Registrering av endast belopp tillåts, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Registrering av endast belopp tillåts, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Registrering av endast belopp tillåts, men belopp krävs inte av lönearten\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Förlorad inkomst - Antal & á-pris
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Förlorad inkomst - Antal
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Registrering av endast antal tillåts, men lönearten kräver belopp\\r\\n
\\r\\n
\\r\\n Registrering av endast antal tillåts, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Registrering av endast antal tillåts, men antal krävs inte av lönearten\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Förlorad inkomst - pensionsförmån
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Belopp beräknas, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Belopp beräknas, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Belopp beräknas, men lönearten kräver inte belopp\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Förlorad inkomst - semesterersättning
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Belopp beräknas, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Belopp beräknas, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Belopp beräknas, men lönearten kräver inte belopp\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Reseersättning - km-ersättning
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Reseersättning - parkeringsavgift
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver inte belopp\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Reseersättning - trängselskatt
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver inte belopp\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Reseersättning - kollektivtrafik
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver inte belopp\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Reseersättning - restid
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Utlägg
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver antal\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver á-pris\\r\\n
\\r\\n
\\r\\n Belopp anges i Troman Politiker, men lönearten kräver inte belopp\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Justeringsarvode
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Kontoinformation

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.profile.UserName}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.profile.FirstName}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.profile.LastName}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.getActiveRoles()}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Byt lösenord
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n

Skapa rapport

\\r\\n

{{::$ctrl.selection}}

\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Skapar rapport\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Rapporter

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
-
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Skapar rapport\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n

\\r\\n {{::sc.title}}\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

\\r\\n Ändra sorteringsordning genom att dra i raderna, ordningen i listan blir den slutgiltiga ordningen.\\r\\n
\\r\\n Listan kan också sorteras genom att klicka på en titel i listan.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{::prop.title }}
{{$index+1}}{{::prop.fn(item)}}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n

\\r\\n {{::sc.title}}\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

\\r\\n Ändra ordningsnummer genom att dra i raderna, ordningen i listan blir den slutgiltiga ordningen.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{::prop.title }}
{{group.$newOrder}}{{::group.placeholder}}\\r\\n \\r\\n
{{group.$newOrder}}{{::prop.fn(item)}}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Systeminställningar

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Egen Organisation
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Fillagring
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.settings.CurrentStorage | number : 3}} GB
\\r\\n
\\r\\n
0\\\">\\r\\n \\r\\n
{{ctrl.settings.MaxStorage | number : 3}} GB
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Grundinställningar
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Gräns för antal dagar framåt i tiden för att visa utgående perioder på förstasidan.

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Inställningarna har tillämpats.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Arvodesinställningar
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Arvodesinställningar - tidsbundna inställningar
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n - \\r\\n {{ctrl.selectedPeriod.EndDate ? (ctrl.selectedPeriod.EndDate | ergoDate) : 'Tillsvidare'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n Samma datum används för annan period\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Varning och information kommer att visas när följande belopp överskrids.

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Varning och information kommer att visas när följande belopp överskrids.

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Personer vars sammanlagda förlorad inkomst% uppnår detta värde har inte rätt till ersättning för förlorad inkomst.

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Troman Publik
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Troman publik har uppdaterats.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
Troman Publik - Förvalda inställningar för person
\\r\\n

Följande inställningar används när nya personer registreras i Troman.

\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Telefonnummer
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Adresser
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
E-post
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Länkar
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till beräkningsregel

\\r\\n

Redigera beräkningsregel

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Beräkningsregler

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NamnOrdinarieErsättareTjg. ersättareKm-ersättning
{{ ::item.Name }}{{::item.WageTypes.Ordinary[0].WageType.Code}}{{::item.WageTypes.Substitute[0].WageType.Code}}{{::item.WageTypes.Serving[0].WageType.Code}}{{::item.WageTypes.Travel.WageType.Code}}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n
Grunduppgifter
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n Transaktionsfilen begränsas till arvoden för mötesdatum till och med:\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"

Tidigare lönemånader

\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
LönemånadOmgångVersionVersion skapadAntal arvodenFil hämtadFilnamn
{{ ::item.PaymentMonth }}{{ ::item.RoundNumber }}{{ ::item.VersionNumber }}{{ ::item.VersionDate | ergoDate }}{{ ::item.NumberOfPayments }}{{ ::item.FileDate | ergoDate }}{{ ::item.FileName }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

{{::wagegroupctrl.wageGroup.Name}}

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
{{::wagegroupctrl.wageGroup.CurrentRound != null ? wagegroupctrl.wageGroup.CurrentRound.PaymentRound.PaymentMonth : 'Saknas'}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{::wagegroupctrl.wageGroup.CurrentRound != null ? wagegroupctrl.wageGroup.CurrentRound.PaymentRound.VersionNumber : 'Saknas'}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n Den senaste lönemånaden i lönegruppen är inte låst och organisationer kan därför inte tas bort från lönegruppen.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n OrganisationstypFörkortningNamnMöten
{{ ::item.OrganizationType.Name }}{{ ::item.Abbreviation }}\\r\\n \\r\\n {{ ::item.Name }}\\r\\n \\r\\n \\r\\n Möten\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n
\\r\\n Ange ny lönemånad, den nya månaden måste vara efter den nuvarande.\\r\\n
\\r\\n Nya arvodesposter t.o.m. den nya månaden kommer att inkluderas i transaktionen.\\r\\n
\\r\\n
\\r\\n Ange initial lönemånad. Nya arvodesposter t.o.m. denna månad kommer att inkluderas i transaktionen.\\r\\n
\\r\\n
\\r\\n \\r\\n
{{::ctrl.systemInfo.PayrollSystemName}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.PaymentMonth}}
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Nya arvodesposter t.o.m. denna månad kommer att inkluderas i transaktionen.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{::ctrl.systemInfo.PayrollSystemName}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.PaymentMonth + (ctrl.round.IsLocked ? ' (Låst)' : '')}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.RoundNumber}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.VersionNumber}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.VersionDate | ergoDateTime}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.FileDate | ergoDateTime}}
\\r\\n
Nej
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.NumberOfPayments}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.round.MeetingDateFirst | ergoDate}} till {{ctrl.round.MeetingDateLast | ergoDate}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n
Felaktigheter
\\r\\n
\\r\\n Följande felaktigheter behöver åtgärdas för att arvodesposterna skall kunna tas med i versionen.
Om ingen åtgärd sker så finns posterna fortfarande kvar i systemet och kan tas med i kommande versioner.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.current.Errors.length}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
{{ctrl.current.personErrorCount}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NamnOrganisation (Möte)DatumOrsak
\\r\\n \\r\\n {{ ::item.Person.name }}\\r\\n \\r\\n {{ ::item.Meeting.Organization.Name }}{{ ::item.Meeting.Date | ergoDate }}\\r\\n
    \\r\\n
  • \\r\\n {{::err.message}}\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n
Varningar
\\r\\n
\\r\\n Följande personer har överskridit begränsningar.
Alla arvodesposter ingår fortfarande i versionen.\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NamnDatumTotaltÖverskridandeOrsakLöneart
\\r\\n \\r\\n {{ ::item.personName }}\\r\\n \\r\\n \\r\\n \\r\\n {{ ::item.Date | ergoDate }}\\r\\n \\r\\n {{ ::item.Amount | number : 2 }}{{ ::item.Overflow | number : 2 }}{{ ::item.message }}{{ ::item.location }}
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ctrl.current.Info}}
\\r\\n
{{ctrl.current.Log}}
\\r\\n
\\r\\n
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Lönegrupper & Transaktioner

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
NamnBeskrivningLönemånadSenaste version
\\r\\n \\r\\n {{ ::item.Name }}\\r\\n \\r\\n {{ ::item.Description }}{{::item.CurrentRound.PaymentRound.PaymentMonth}}{{::item.CurrentRound.PaymentRound.VersionNumber}}\\r\\n \\r\\n Transaktioner\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n \\r\\n\\r\\n

Lägg till löneart

\\r\\n

Redigera löneart

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
T.o.m. (minuter)Belopp\\r\\n \\r\\n
{{ row.max }}{{ row.amount | number : 2 }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
\\r\\n
\\r\\n

Lönearter

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Ett oväntat fel inträffade:\\r\\n

\\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
LöneartGäller frånTypNamn
{{ ::item.Code }}{{ ::item.Periods[0].From | ergoDate }} {{ ::item.Periods[0].WageModel | ergoEnumWageModel }} {{ ::item.Name }} \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Markerade:\\r\\n {{ctrl.table.selectionCount}}\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n// Exports\nmodule.exports = code;","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};"],"names":["HistoryRouterPlugin","angular","module","config","$logProvider","debugEnabled","$locationProvider","$uiRouterProvider","html5Mode","plugin","stConfig","sort","skipNatural","delay","pagination","template","run","$templateCache","put","require","authenticationServiceProvider","unauthorized","authenticationService","logout","location","href","$stateProvider","$urlRouterProvider","$urlMatcherFactoryProvider","isTroman","type","pattern","state","abstract","resolve","systemInfo","$q","tromanServer","$rootScope","tromanGlobals","System","getInfo","then","value","$shared","acceptAttachments","AttachmentExtensions","join","acceptImages","ImageExtensions","catch","err","reject","userProfile","accountServer","Profile","getProfile","onExit","views","controller","parent","url","data","title","params","criteria","dynamic","filter","personState","PersonState","create","$transition$","personId","organizationState","OrganizationState","organizationId","mpid","meetingsShared","MeetingsShared","meetingShared","MeetingState","initialOrganizationId","meetingId","wageGroupShared","WageGroupState","wageGroupId","missionGroupShared","MissionGroupState","missionGroupId","eventId","filterPending","otherwise","service","$transitions","$timeout","pageTitle","onSuccess","transition","toState","to","_","attachmentTypes","compareByTimestamp","a","b","timestamp","getTime","compareByTitle","atxt","description","name","btxt","res","localeCompare","numeric","AttachmentCollection","constructor","existing","copyable","fileInfoComparer","removed","added","map","x","ExistingFileInfo","CopyFileInfo","files","slice","_addedSize","isValid","hasCopyable","length","hasChanges","some","isSelected","isChanged","addFiles","fileResults","newfiles","AddedFileInfo","unspecified","newSize","reduce","size","concat","removeFile","file","without","push","id","createUpdate","Added","createAdd","Updated","Removed","Copied","createCopy","FileInfo","key","attachmentType","showPolitiker","showPublik","isAdded","source","Id","Filename","Description","CreatedTimestamp","SourceId","AttachmentType","ShowPolitiker","ShowPublik","attachment","_index","fileResult","dataBase64","pos","indexOf","Error","substring","toBlob","b64","bin","atob","array","Uint8Array","ii","charCodeAt","Blob","Data","AttachmentComponentController","$inject","downloadService","_tromanServer","_downloadService","_isPolitikerEnabled","IsPolitikerEnabled","collection","isCopying","showDate","$onInit","copy","mode","downloadFile","downloadBlob","Files","downloadAttachment","rsp","blob","filename","component","bindings","DialogControllerBase","$scope","award","self","call","Awards","getTitle","Name","getItem","load","loadItem","loadRelated","loaded","showError","extend","loadedAward","all","when","auditIncidents","trimRepeats","entries","trimWith","trimValues","previousValue","result","item","includes","getUserName","auditData","users","UserId","user","get","displayName","PersonId","Person","display","getIncidentText","incident","ceremonyReported","ceremonyRejected","ceremonyAccepted","ceremonyReset","timeRequested","timeReported","timeRejected","timeAccepted","timeRecalled","timeRemoved","detachedMission","detachedEvent","claimReported","claimRejected","claimReset","claimAccepted","claimRecalled","certificationRequested","certificationRecalled","certificationRejected","certificationAccepted","certificationClaimRejected","auditIncidentOrder","Map","v","i","trimRepeatIncidents","AuditEntry","message","generateAudit","src","isArray","userMap","forEach","set","ordered","orderBy","Timestamp","Incident","filtered","Message","AuditLogController","reportLimits","persons","reportService","$uibModalInstance","kind","separator","emails","receivers","missing","noreceiver","format","calculateEmails","getPublicEmails","person","emailPublic","Email","email","trim","getMessageEmails","includeEmail","list","obj","UseForMessages","ret","emailInternal","emailPrivate","getAllEmails","getEmails","pes","flatten","MaxPersonIds","error","kindChanged","separatorChanged","ok","close","canGenerateLabels","generateLabels","isSaving","getPersonReports","reports","report","find","args","getDefaultArguments","Query","PersonIds","Options","Format","generate","finally","factory","$uibModal","alertDialog","errorDialog","Metadata","so","confirmAdvanced","opts","confirm","notify","warning","show","editMission","mission","existingMissionsToCheck","open","animation","windowClass","updateMission","missions","organization","updateOrganizationMissions","updatePersonMissions","editMandatePeriod","mandatePeriod","editAward","editMissionType","missionType","editParty","party","editDivision","division","editOrganizationType","organizationType","editEquipment","equipment","editWageType","wageType","editWageCalculation","wageCalculation","showListBuilder","definition","createPersonList","createPartyList","Party","createOrganizationList","Organization","createMissionList","Mission","createEquipmentList","Equipment","createAwardList","Award","createMissionTypeList","MissionType","createDivisionList","Division","createOrganizationTypeList","OrganizationType","createMeetingList","Meeting","createAttendanceModelList","AttendanceModel","createWageTypeList","WageType","createWageCalculationList","WageCalculation","createWageGroupList","WageGroup","createEmailList","createReport","setAttendanceMission","attendance","addToMissionGroup","currentMissionGroupId","showPaymentGroup","paymentGroup","showCeremony","ceremonyId","showAttendanceTimeReport","canRecall","directive","$parse","$exceptionHandler","optionsRe","parseConfiguration","scope","attributes","match","ergoOptions","locals","labelfn","idfn","colfn","hasGroup","ergoGroup","groupFn","isMultiple","multiple","byreference","saveId","startsWith","getLabel","getId","getCollection","getRawCollection","getGroup","groupName","parsePlaceholder","ergoPlaceholder","$eval","placeholder","OptionsCollection","configuration","objs","Object","root","grouped","proxy","text","query","toLowerCase","group","idToProxy","objToProxy","results","disabled","children","notNull","restrict","link","element","modelCtrl","inputEl","$","forwardAttribute","attr","removeAttr","addClass","proxy_to_model","model_to_proxy","ptm","proxies","mtp","models","$isEmpty","hasModelChanged","oldModel","newModel","watchCallback","newCollection","oldCollection","isUndefined","$viewValue","newProxy","select2","$setViewValue","$watch","$watchCollection","$render","on","elementOnChange","model","$apply","$observe","formatSelectionCssClass","allowClear","queryOptions","callback","term","formatNoMatches","noMatches","pad","num","dur","Math","floor","mins","hours","time","days","transclude","isopen","$parent","ergoAdvancedSearch","CheckBoxController","listeners","register","handler","remove","_trigger","each","k","updateDisabled","newvalue","update","ctrls","ergoCheckbox","ngModel","checkbox","checked","ergoDisabled","$formatters","equals","$parsers","GroupHandler","masters","watchers","enabled","selected","_isRegistered","cbc","addChild","_updateMaster","addMaster","target","fn","removeChild","index","splice","removeMaster","addWatcher","removeWatcher","groups","findGroup","namere","_scope","ergoCheckgroup","matches","split","priority","watcher","$evalAsync","ergoCheckgroupChanged","$group","$selected","validDateCopy","date","isDate","isNaN","Date","validDateCopyZeroTime","setHours","BootstrapDatepicker","input","options","datepicker","autoclose","clearBtn","forceParse","todayHighlight","language","todayBtn","setDate","getDate","onchange","setMin","startdate","Infinity","setMax","maxdate","setDisabled","val","prop","destroy","ErgoPickerController","$attrs","$log","picker","mindate","ngModelCtrl","init","_picker","changeHandler","render","isDefined","$validate","$validators","modelValue","viewValue","minlimit","maxlimit","changed","noop","setViewValue","debug","undefined","_attributes","controllers","ctrl","FileResult","Promise","reader","FileReader","addEventListener","readAsDataURL","allSettled","promises","status","reason","fileAdded","_controller","_event","console","log","$applyAsync","$files","filterLink","stTableCtrl","timer","evt","originalEvent","cancel","search","_tElement","tAttrs","_ref","controllerAs","_ref2","ergoFilterPanel","ergoTable","table","wageModelInfos","TimeString","formatDateDuration","formatDurationMinutes","pn","isString","addr","Address","z","ZipCode","p","City","vm","ts","parse","h","trunc","duration","m","isFinite","validCodeRe","MunicipalityCodeListController","isDisabled","onChange","editing","form","every","test","code","publish","canAdd","canApply","add","applyfocus","isEditing","row","canEdit","_row","edit","$valid","apply","onKeyDown","$event","onFocusOut","relatedTarget","currentTarget","contains","_element","ergoMunicipalityCodeList","splitre","notEmpty","s","parseDec","parseInt","parseArray","items","nonempty","asnum","ngModelController","invert","_attr","_ctrls","needsScroll","elm","rc","getBoundingClientRect","top","left","viewWidth","max","document","documentElement","clientWidth","window","innerWidth","right","viewHeight","clientHeight","innerHeight","scrollIntoView","oldRender","arguments","select","focus","getter","ergoFocusOn","setter","assign","sourceGetter","selectionCount","totalCount","filteredCount","sourceCollection","filteredCollection","countSelected","Array","prototype","$$selected","_init","_stTableCtrl","selectionFilter","oldPipe","pipe","getFilteredCollection","_selectionChanged","_item","selectedItems","selectFiltered","predicate","deselectAll","comparator","ergoSelectDirective","pre","stSafeSrc","stTable","ergoTableCtrl","ergoSelectionFilter","selectionFilterFn","$item","checkPersonalNumber","digit","sum","pnre","isValidAsPersonalNumber","exec","personalnumber","_modelValue","zre","isValidAsZipcode","zipcode","str","ergoTimespan","timespan","isClosed","emptyTarget","ergoTimespanWithin","timewithin","ergoDivides","numerator","divides","checkDivides","mod","formController","ergoFormError","expr","setError","toggleClass","$setValidity","$on","formatPaymentMonth","PaymentRound","pmre","round","ergoYearmonth","yearmonth","mv","year","Year","month","Month","Divisions","createCriteria","defaultCriteria","Archived","cloneDeep","stateService","dialogService","sortDialog","loading","showAdvancedSearch","getParams","_refresh","uiOnParamsChanged","has","reloadWithParams","filterChanged","replaceParams","createList","changeSorting","sortDivisions","equipmentTypes","ObjectCache","organizations","getOrganizations","FrontController","Notifications","getFrontPagenotifications","notifications","Setting","browserService","listService","ListConfiguration","cfg","defaultSetting","isDefault","Value","store","SettingType","settingType","templates","editTemplate","clone","getSettings","IncludeShared","templateChanged","SharedBy","IsPublic","templateStored","setting","findIndex","isNameDuplicate","tpl","isAdding","newName","toLocaleLowerCase","sameName","canUpdate","templateForm","$invalid","saveTemplate","Settings","updateEntity","addTemplate","addEntity","canRemove","removeTemplate","confirmMsg","hardRemove","$dismiss","saveExcel","csv","toCsv","downloadText","showPreview","pars","content","openChildWindow","metadata","_properties","properties","toString","selectedColumns","defcol","availableColumns","selectedSorters","defsort","availableSorters","moveItem","dst","compareProperty","order","addColumn","removeColumn","addSorter","removeSorter","columns","sorters","asc","ascending","ergoDateFilter","makeCsvProperty","makeCsvRow","replace","buildTable","columnProperties","sortingProperties","getProperty","getRow","compareRow","sortprops","av","bv","rows","escapeElementCharacter","ch","renderValue","renderProperty","lc","headerRow","tableRows","html","header","MandatePeriods","MeetingAccountSource","MeetingCertifierSource","MeetingFormModel","AttachCeremonyModel","TromanError","ceremonyStates","getClaimTypeText","claimTypes","OPTION_NEW","OPTION_EXISTING","OPTION_REJECT","getNuggetDetail","nugget","ClaimType","travel","DrivingDistance","toFixed","RouteFrom","RouteTo","parking","Parking","congestion","Congestion","publicTransport","PublicTransport","travelTime","TravelTime","expense","Amount","Purpose","lostIncomeAmount","Employer","lostIncomeNumber","Hours","lostIncomeRate","HourlyRate","legacyTravel","parts","$qservice","convertCeremony","ceremony","meeting","MandatePeriod","Designation","Location","MeetingTime","CeremonyTime","CeremonyDate","MeetingType","AccountSource","missionOrganization","CertifierSource","Attachments","_isSaving","targetSelection","parentForm","newform","existingform","rejectform","previousRejection","rejectionMessage","newMeetingModel","attachCeremonyModel","canSave","_saveNew","Ceremonies","EventId","forceGo","reload","_saveExisting","attachCeremony","createAttach","_reject","rejectCeremony","RejectionMessage","save","$commitViewValue","$setSubmitted","wageCalculations","getWageCalculations","getCeremony","State","accepted","reported","chain","AuditEntries","maxBy","claims","Claims","detail","Nugget","guard","$dirty","presentTime","attachments","ceremonyFiles","selectedFiles","MeetingId","PresentTime","CopyAttachments","AttachCeremonyController","$onChanges","isAttendanceWithin","meetingTs","presentTs","downloadCeremonyAttachment","downloadMeetingAttachment","meetingChanged","MeetingFinderController","isSearching","selectedMeetingId","selectedOrganizationId","selectedMeetingChanged","Meetings","WithoutPersonId","withoutPersonId","DateFrom","getFullYear","getMonth","DateTo","allmeetings","sortBy","filterOrganization","meetings","OrganizationId","dateChanged","organizationChanged","meetingSelected","formatMeetingType","regular","other","getCeremonyStateText","ceremonyState","none","created","rejected","$close","getAllUsers","audit","compareCalendarDate","AttendanceCollection","attendanceList","missionGroups","isPolitikerEnabled","attendances","Attendances","createExisting","missionsById","groupBy","Missions","LastName","firstName","_updateAvailable","_updateOrder","$$order","getPersonId","available","_addMission","att","createNew","replaceAttendance","replacement","isLegacy","MissionId","getAvailableMissions","attendanceModel","attendancePersonId","specifyMission","includeMembers","withSubstitutes","IsSubstitute","include","_removeAttendanceModel","am","exclude","attendanceModels","includeMissionIds","missionIds","mapKeys","addId","Attendance","isBusy","attendanceForm","toadd","hasButtons","showRequestAllTimeReports","canRequestAllTimeReports","_updateButtons","ac","CeremonyId","hasTimeReport","canRequestTimeReport","canSpecifyMission","isRequestingTimeReport","personChanged","candidates","addingMission","$setDirty","addMembers","withsubs","canAddMissionGroup","selectedMissionGroupId","addMissionGroup","MissionGroupId","setLegacyMission","removeSelected","withPayments","withoutPayments","partition","HasPayments","withCeremony","withoutCeremony","withPolitikerInfo","_remaining","HasClaims","TimeReport","Payroll","updateMeetingPayroll","forceReload","emailList","getPerson","showCeremonyInfo","requestTimeReport","undoRequestTimeReport","requestAllTimeReports","showTimeReportInfo","newAttendance","withAttendance","isRemote","org","getOrganization","getAttendance","Start","End","IsVacant","MissionGroups","HasMissions","AttendanceDialogController","_resolve","selectedMission","attOrgId","MissionTypeId","_close","$value","_dismiss","_modal","getAttendanceOrdering","timeReportCommand","timeReportState","attendanceOrdering","isChangedString","isNew","originalAttendance","comment","Comment","isWaitingTimeReport","timeReportStatusText","requested","hasPolitikerNow","EnableTimereport","_presentTime","_servingTime","ServingTime","_isPresent","_isServing","servingTime","isPresent","isServing","displayPerson","displayMissionType","canServeAsSubstitute","AttendanceId","RowVersion","SpecifyMissionId","TimeReportOperation","RequestTimeReport","MeetingController","formModel","addMeeting","updateMeeting","orgId","WageCalculationId","getMeeting","PayslipCollection","PaymentLock","paymentLock","IsWarningMissingMeetingPaymentEnabled","payslips","getMeetingPayroll","wageTypes","getWageTypes","ValidAt","politikerSettings","Politiker","reset","selectedCalculation","isMissingWageGroup","usedWageTypes","Set","ps","Remunerations","rem","Payments","y","WageTypeId","Active","$getControls","canFilter","isLocked","payslipVisible","payslipModel","hasTransactionIssues","hasWarnings","isMissingMeetingPayment","hasPolitikerTasks","hasRejectedCertification","hasRecalledCertification","selectionChanged","countSelectedPayments","canCalculate","calculate","canApproveAllPolitiker","hasAnyPolitikerTasks","approveAllPolitiker","canRemoveSelected","removeSelectedPayments","cmd","MeetingFormController","hasValidAttachments","copyFiles","paramCriteria","OrganizationIds","displayedItems","searchWithCriteria","sc","getCeremonies","_loadItems","resultPromise","busy","getAddIdCallback","getAddId","canSearch","getMeetingsWithClaims","CertifierIds","CertifyingOrganizationIds","IsAbandoned","getMeetingsWithPending","getPersons","utility","updateCriteriaDate","today","todayDate","hasValidCriteria","diff","setDefaultDate","timeReport","isRejected","canReactivate","showReportedTimes","recalled","recallTimereport","action","reactivateTimereport","DateTime","Interval","getTotalTime","intervals","merged","merge","interval","end","start","years","toDateTimeOnlyDate","dt","fromObject","day","addCalendarDays","getMissionDateDuration","cutoff","cutoffDateTime","plus","fromDateTimes","totalTime","EntityCollection","entities","_map","keyBy","ids","AddressType","Home","Distribution","Visitation","PhoneType","Mobile","Work","Holiday","EmailType","Public","Private","Internal","UrlType","NotSet","Documents","Photo","HomePage","Gender","Man","Woman","Property","fnOrExpr","isFunction","listable","columnDefault","sorterDefault","descending","propertyMap","nextorder","setSortingProperty","sortingProperty","setListTitle","setSettingType","formatSubstitutes","sorted","Substitutes","formatDivisions","compareBy","compareByProp","compare","compareByName","compareByCode","includeResult","isItem","exists","Organizations","allOrganizations","getParties","Parties","allParties","getDivisions","getMissionTypes","MissionTypes","getOrganizationTypes","OrganizationTypes","Persons","WageCalculations","getWageGroups","WageGroups","WageTypes","allWageTypes","Users","getUsers","additionalIds","HasTroman","HasValman","settings","transform","SharedByUserId","UserName","MINUTES_PER_DAY","retime","parseTime","isEnd","formatMinutes","min","formatInterval","iv","adjusted","last","compareInterval","parseInterval","stime","etime","parseIntervals","ivs","String","sourceInterval","prev","acc","Err","_closed","oi","ti","toJSON","now","CalendarPosition","Current","Historic","Future","getCalendarPosition","claimStates","certificationStates","remunerationTypes","minutes","claimType","adjuster","getClaimStateText","getRemunerationTitle","remunerationType","claim","calculatedMeeting","calculatedTravel","payment","getCertificationState","certificationState","skipped","pending","certified","getCertificationStateSubtitle","regexIso8601","parseDate","milliseconds","GUID_REGEX","isGuid","isWs","o","addressToJson","address","Type","phoneToJson","phone","Number","emailToJson","urlToJson","Url","isNotNull","ZERO","padZero","digits","formatDate","isOverlapping","s1","e1","s2","e2","isValidMunicipality","codelist","region","missionGroup","getMissionClass","calendarPosition","canCreateList","canCreateEmails","createEmails","canAddToMissionGroup","canRemoveItems","removeItems","removeFromMissionGroup","MissionGroup","nonvacant","selectedMissionGroup","newList","missionCount","vacantCount","newListName","organizationService","setFieldsFromPerson","matchingMission","findMatchingMission","existingMissions","selectDisplayMandate","selectedOrganization","mandatePeriodChanged","setDatesFromMandate","mandatePeriodOrMissionTypeChanged","AllowPolitikerRegistration","EnableMunicipalityCheck","isEmpty","ValidMunicipalities","_reloadSubstitutes","missionTypeChanged","MunicipalityCode","IsGroundForGratuity","HasMeetingPay","matching","MandatePeriodId","MAX_SAFE_INTEGER","substitutes","loadSubstitutes","subs","HasPersonalSubstitutes","IsSubstituteInMandatePeriodId","enableMandatePeriod","enablePerson","EnablePublish","parties","divisions","missionTypes","MissionStatus","NoPartyOption","paramsCriteria","ActiveOrFuture","OnlyCurrentMandatePeriod","noPartyIndex","PartyIds","WithoutParty","organizationTypes","missionPromise","resetCriteria","searchForm","selectedOrganizationsChanged","selectedPartiesChanged","ApiWarnings","pluralSuffix","setStart","setEnd","copyop","vacantSamePeriod","mandate","valid","mandates","hasSameMissionType","uniqBy","_sameMandate","mandateTitle","mp","willSetEnd","_makeRequest","req","CopyOperation","CopyMissionTypeId","CopyMandatePeriodId","missionTypeId","editForm","updateMultiple","checkResponse","warnings","PersonHasMultipleMissions","personsWithMultiple","castArray","isNil","multipleMissionWarning","MissionInGroup","missionsInGroup","missionId","Abbreviation","missionsInGroupWarning","navController","freeze","claimGenericReceipt","claimParkingReceipt","claimPublicTransportReceipt","claimCongestionSpecification","claimSalarySpecification","claimEmployerTestimony","profilePhoto","getAttachmentTypeName","AttachmentInfo","AuditData","accept","isObjectLike","ctx","getMission","getMissionType","_updateDisplay","mt","AttendanceList","fromResponse","getResult","context","getOrder","OrderNumber","BaseObject","AwardDate","withRelated","_ctx","_src","keysIn","firstChar","charAt","CeremonyInfo","StateTimestamp","mapResponse","CeremonyDetails","ClaimIds","getClaim","Claim","effectiveSortingCode","SortingCode","EquipmentType","LoanDate","ExpireDate","ReturnDate","FrontPageNotifications","_responseContext","HasExpiringOrganizations","HasInvalidMunicipalities","HasNewCeremonies","HasPolitikerToHandle","meetingOrganization","meetingAccount","getWageCalculation","MeetingPolitikerInfo","ClaimCount","FirstClaimTimestamp","TimeReportCount","FirstTimeReportTimestamp","IncompleteRemunerationCount","issueCount","firstTimestamp","MeetingPendingInfo","Count","FirstTimestamp","None","ActiveOrHistoric","HistoricOrFuture","All","createPlaceholder","_placeholder","isPlaceholder","getMandatePeriod","getParty","PartyId","SubstituteIds","getDivision","DivisionIds","EnumValues","Urls","getOrganizationType","OrganizationTypeId","getWageGroup","WageGroupId","MandatePeriodIds","PrimaryCertifier","PrimaryCertifierId","SecondaryCertifier","SecondaryCertifierId","getCurrentMandate","getLastMandate","getCurrentOrLastMandate","current","MainAddress","VisitationAddress","Payment","getWageType","getPaymentRound","PaymentRoundId","PaymentMonth","VersionDate","MeetingDateFirst","MeetingDateLast","FileDate","PaymentWarnings","remunerationOperations","certify","rejectClaim","Payslip","EnableLostIncome","NewClaimIds","Remuneration","Warnings","PayslipWarning","NewClaims","ClaimId","PaymentIds","CertificationState","RemunerationType","getPayment","Warning","Overflow","getMessage","getLocation","PendingCertification","CertifierId","IsPrimary","FirstPendingTimestamp","Certifier","pc","ConsentDate","LastLookupTimestamp","PolitikerExpireDate","PolitikerActivationTimestamp","PreferredName","RegisteredName","first","Addresses","homeAddress","distributionAddress","PhoneNumbers","phoneHome","phoneMobile","phoneWork","phoneHoliday","Emails","Earnings","earning","ValidFrom","ValidTo","EmployerName","HasPolitikerAccess","DivisionId","initEdit","lostIncomeBenefitsMode","byrequest","always","subSettingsToJSON","PolitikerSettings","LostIncomeAmount","LostIncomeNumberUnit","LostIncomeNumber","RetirementBenefits","VacationBenefits","Travel","Expenses","Adjuster","StartDate","Vat","makeParams","hasOwnProperty","ReportInfo","Identifier","Defaults","JSON","stringify","getPayrollSystemName","payrollSystemId","SystemInfo","PayrollSystemName","PayrollSystem","EnableTransactions","IsSparLookupEnabled","IsSparNotificationsEnabled","EndingMandateDays","PolitikerReportingDays","IsSSOEnabled","ValidExtensions","AsAttachment","Extension","AsImage","isNumber","SystemSettings","WageCalculationWageType","Kind","getType","WageTypeCollection","createWCWT","wcwt","Ordinary","Substitute","Serving","nonEmpty","TransactionErrors","short","noPersonalNumber","noEmployeeNumber","noUnitPrice","noAmount","noNumber","isVacant","invalidEmployerCode","invalidAdministrationCode","negativeUnitPrice","negativeAmount","negativeNumber","invalidWageTypeCode","invalidAccount","invalidPersonId","meetingAmount","incomeAmount","travelCount","wageTypeCount","TransactionError","errorList","TransactionWarning","personName","FirstName","WageTypeCode","WageTypeName","CurrentPaymentRound","personErrorCount","Errors","CurrentRound","parsePrice","parseFloat","VariablePrice","amount","findAmount","variable","Code","MaxPayments","periods","Periods","From","getPeriod","wageModelGroups","lostIncome","wageModelGroupInfo","wageModels","meetingFixed","meetingVariable","meetingAppear","lostIncomeFixed","lostIncomeIndividual","lostIncomeSystem","hasTimes","hasUnitPrice","sortOrganizationTypes","FirstPageCount","wageGroups","enableArchive","canArchive","canActivate","archive","activate","shared","canChangeWageGroup","IsLocked","enableMunicipalityCheck","enableMunicipalityCheckChanged","systemSettings","DefaultValidMunicipalities","_enableHistoricMeetingDays","Publish","HistoricMeetingDays","defineProperty","AttachmentUpdate","compareMissionSameOrderNumber","compareMission","isOverlappingLenient","getOverlapping","allowSameDay","overlapping","kk","uniq","getDuplicates","multi","flatMap","generateMissions","subCount","isInteger","SubstituteCount","memCount","MemberCount","maxActiveOrderNumber","targetPlaceholderOrder","zeros","nextOrderNumber","generatePlaceholders","upto","ms","OrganizationMissionList","_actualMissions","_missions","AllowSameDayOverlap","hasOverlappingOrderNumber","duplicates","hasDuplicatePersons","hasNonHistoric","_cache","_cacheHistoric","_cacheFuture","getActualMissions","findMissions","includeHistoric","includeFuture","getMissions","showHistoric","showFuture","_initPeriod","_reloadMissions","missionList","periodChanged","canAddMission","addMission","addMandatePeriod","nextMandate","canEditMandatePeriod","canUpdateSelected","missionTable","updateSelected","canChangeSorting","sortMissions","canSelectMission","selectOrdinary","ApprovedUserIds","HasFreeOrderNumber","hasEndingMandatePeriod","_refreshItems","LastMandateEndsAfter","LastMandateEndsBefore","fromJSDate","toJSDate","sortOrganizations","mandatePeriodId","months","DecisionClause","HasDivisions","partiesController","sortParties","EmployerOptions","fromAttendance","earnings","earningAtDate","paymentGroupInstanceTypes","unknown","simple","complex","proposedClaim","proposedTime","groupTypeOrder","paymentGroupInstanceType","remunerationTypeOrder","claimTypeOrder","comparePaymentModel","awt","bwt","compareGroup","groupTypeDiff","instanceDiff","compareTo","hasClaim","typeDiff","isCollapsable","hasCertification","payments","remuneration","paycount","pdiff","PaymentGroupModel","_removed","sortPayments","_other","hasCompleted","hasDetail","certPending","certRejected","certRecalled","certCertified","isManuallyCalculated","checkChanges","needsSaving","getTotalAmount","sumBy","_paymentsChanged","updatePayment","removePayment","pm","removeMatchingPayments","remaining","UpdatePayments","RemovePayments","from","_isLocked","_lockedGroup","_lockedPayslip","lockGroup","pgm","lockPayslip","psm","isLockedForGroup","isLockedForPayslip","PaymentModel","selectedEmployer","isAutoTravel","fromOriginal","fromCreated","fromCalculated","calculatedPayment","chosenEmployer","PolitikerCalculator","StandardCalculator","PayslipModel","meetingWageCalculation","politikerCalculator","isMissingPolitiker","forDate","r","c","meetingCalculator","payslipModels","hasAnyTransactionIssues","hasAnyWarnings","hasAnyMissingMeetingPayment","hasAnyRejectedCertification","hasAnyRecalledCertification","payslipFilter","calculator","recalculate","payslipChanged","paymentGroups","pg","PaymentEditorModel","PayslipComponentController","_dialogService","closeEdit","$onDestroy","hasTimeReportInfo","isLockTarget","addPayment","adding","getPaymentGroupClass","onFilter","onSelection","ProposedGroupModel","StandardCalculationContext","ComplexGroupModel","SimpleGroupModel","ProposedTimeGroupModel","createExistingModel","isPolitikerResponsePending","hasResponded","payslip","hasPayments","enableLostIncome","timeReportGroup","tr","nc","_validate","_updateDerived","transactionIssues","EmployeeNumber","PersonalNumber","transactionIssuesString","totalAmount","WageModelGroup","paymentGroupChanged","_pg","proposedTimeChanged","newClaim","newrem","remunerationDeleted","newGroups","hasRemoved","hasCalculated","skipMeeting","skipTravel","meetingPayments","calculateMeeting","createCalculated","rules","travelPayments","calculateTravel","createManual","updated","paymentModel","affected","AddRemunerations","UpdateRemunerations","ClaimRejections","hasAccepted","hasRejected","RejectTimeReportMessage","CalculatedPayment","BigNumber","calculateAmount","unitPrice","number","up","n","times","dp","toNumber","roundAmount","roundUnitPrice","roundNumber","ActiveWageType","period","wageModel","WageModel","PaymentsCalculation","accountSource","meetingOrganizationAccount","Account","getDuration","timeString","createBasicPayment","UseMeetingAccountSettings","calculateNumberForMinutes","wtp","subperiods","ceil","SubPeriod","UnitPeriod","addTimePayment","addNumberPayment","addVariablePayment","vp","cp","UnitPrice","addNumberUnitPayment","addNumberOnlyPayment","addAmountPayment","calculateAmountPercentDP2","percent","dividedBy","numberFromMinutesDP2","awtVat","awtLostIncomeAmount","awtLostIncomeNumberUnit","awtLostIncomeNumber","awtRetirementBenefits","awtVacationBenefits","awtTravel","awtParking","awtCongestion","awtPublicTransport","awtTravelTime","awtExpenses","awtAdjuster","settingsList","inorder","calculateClaim","calculation","PolitikerCalculation","isEmployerDependent","calculateLostIncomeAmount","calculateLostIncomeNumber","calculateLostIncomeRate","calculateLegacyTravel","calculateParking","calculateCongestion","calculatePublicTransport","calculateTravelTime","calculateExpense","calculateAdjuster","tryAddVat","calculateLostIncomeBenefits","retirementMode","Mode","RequestRetirementBenefits","Percent","vacationMode","RequestVacationBenefits","ParkingVat","PublicTransportVat","StandardRules","findPeriod","RequireUnitPrice","compact","StandardCalculation","calculateSubstitute","calculateOrdinary","serveTime","_calcPayments","wts","isLast","_calcMeetingPayment","final","km","TravelPayNumber","operation","hasActivePayments","_message","isRecalled","willCertify","willRejectClaim","respondCertify","respondRejectClaim","clearResponse","Operation","certificationMessage","GroupDialogResult","ComplexRemunerationController","editRejection","defaultSubtitle","isCertifying","isRejectingClaim","rejectClaimMessage","rejections","lastRejection","subClass","subtitle","confirmCertification","cancelCertification","confirmRejectClaim","cancelRejectClaim","abort","willRemovePayments","showAbort","showRemove","showCertify","showRejectClaim","showDetails","PaymentEditorController","missingPeriod","activeWageTypes","wasLocked","original","updateWageTypes","loadPeriod","isEmployerEnabled","isPersisted","isUnitPriceRequired","isUnitPriceEnabled","wm","isNumberRequired","RequireNumber","isAmountRequired","isAmountEnabled","isNumberEnabled","RequireAmount","numberChanged","unitPriceChanged","wageTypeChanged","employers","employerOptions","employerChanged","opt","wt","onClose","_employerOptions","CertificationRecalledResult","ClaimRecalledResult","RemunerationDeletedResult","canRecallClaim","certificationStarted","canRecallCertification","canDelete","deleteRemuneration","attachmentTitle","recallClaim","recallCertification","_paymentGroup","remunerationId","newRemuneration","PaymentsListController","foo","canSelect","editPayment","isEditingPayment","ProposedTimeController","rejectionForm","_rejectionForm","isSubstitute","timereport","acceptTimeReport","rejectTimeReport","rejecting","confirmRejection","cancelRejection","abortTimeReport","proposedState","initial","presentTimeString","meetingTimeString","isPresentOutsideMeeting","_state","isInitial","isRejecting","canAccept","availableEmployers","_setState","AcceptsClaim","calculated","calculatedPayments","getClaimDescription","ProposedRemunerationController","acceptClaim","abortClaim","getSubTitle","SimpleRemunerationController","maintitle","showDetail","_table","getPendingCertification","$criteria","filterPendingChanged","PersonAttachmentCollection","photo","_existingPhoto","info","_existingPhotoDataUrl","_newPhoto","_shouldRemovePhoto","canRemovePhoto","removePhoto","canRevertPhoto","revertPhoto","hasPhoto","photoDataUrl","setPhoto","awards","toAdd","awardsTable","PersonHasLoanedEquipment","personArchive","archiveSingle","clearContact","unpublish","politikerExpireDate","deleteFiles","iserror","confirmText","purge","msg","purgePerson","photoWarning","lookup","personalNumber","Integrations","lookupPerson","LookupDateChanged","populateGender","ev","pnr","editingEarning","createEarning","earningsAdd","earningsApply","earningsfocus","earningsEdit","earningsCanApply","earningsform","earningsRemove","checkOverlaps","hasOverlapping","elist","_politikerAccess","initialHasPolitikerAccess","defineProperties","politikerAccess","enumerable","RangeError","photoLoaded","imageElement","nw","naturalWidth","nh","naturalHeight","loadItems","eq","equipmentTable","historyVisible","selectedOrganizationIds","gratuityDuration","totalDuration","allmissions","historyMissions","orgids","selectedOrganizationChanged","hasSelectedMissions","historyTable","getSelectedMissions","showHistory","durationCutoff","loadPhoto","dlr","asDataUrl","durl","DefaultPersonPublish","$filter","selectItems","toselect","OrganizationMissionStatus","hasPolitikerAccessChanged","formatResponse","WithLoanedEquipment","AlreadyArchived","NotArchived","Cleared","WithDeletedFiles","Unpublished","PolitikerExpireSet","archiveSelection","archiveMultiple","count","enableUnpublish","DisablePublish","terminatePolitiker","dismiss","canOk","showDialog","SettingInfo","next","previous","ends","travelWageTypes","lostIncomeWageTypes","otherWageTypes","onSelectedChanged","canChangePeriod","canAddPeriod","addPeriod","canCancel","$setPristine","removePeriod","setPeriod","canSaveSystem","systemSettingsForm","saveSystem","setSettings","resetPasswordForm","currentPassword","newPassword","confirmPassword","passwordform","$setUntouched","profile","getActiveRoles","TromanRoles","ValmanRoles","canChangePassword","changePassword","ReportDialogController","selection","reportChanged","enable","submit","selectedParties","getVisibleReports","ReportOptionsController","reportServiceFactory","cachedReports","loadReports","Reports","getReports","infos","hiddenReportIds","personReportIds","BirthdayFrom","BirthdayTo","AgeFactor","AssociatedMissionStatus","MeetingDateFrom","IsEquipmentReturned","EarningValidToStart","AddressUse","Title","LeadText","UsePersonComment","ResourceEndpoint","MeetingEndpoint","MissionEndpoint","SystemEndpoint","OrganizationEndpoint","PersonEndpoint","WageGroupEndpoint","PaymentRoundEndpoint","ReportEndpoint","MissionGroupEndpoint","PayrollEndpoint","IntegrationEndpoint","NotificationEndpoint","CeremonyEndpoint","ApiService","PolitikerEndpoint","FileEndpoint","ApiServer","auth","apiurl","api","PaymentRounds","ResponseContext","checkResponseErrors","makeRequestInit","ApiResponse","Result","Objects","parseEntity","entityConstructor","createEntityResponse","parseListResult","resultParser","parseSingleResult","createEmptyResponse","parseResponse","json","voidResponse","parseContentDispositionFilename","contentDisposition","re","decodeURIComponent","DownloadResult","fr","onload","onerror","onabort","_evt","handleDownloadResponse","cd","headers","baseurl","_fetchWith","fetch","getResponse","postResponse","postVoid","putResponse","putVoid","postDownload","getDownload","_api","encodeURIComponent","RESPONSE_404","RESPONSE_502","TypeError","resourceConstructor","missionUpdate","updateSorting","sortUpdate","MissionIds","_url","removeWageGroup","Items","getUrl","paymentRound","searchCriteria","deleteContactInfo","unpublishPublik","DeleteContactInformation","DeleteFiles","UnpublishPublik","_cached","parameters","objects","built","_getObject","bind","getPolitikerSettings","updatePublik","applyMunicipalityCodeSettings","wageGroup","addRound","senderName","SenderName","lockRound","locked","removeRound","addVersion","event","closing","preventDefault","NEXTNAMEID","childParams","win","TextEncoderLite","utf8Encoding","lastObjectUrl","hasDownload","createElement","download","createOURL","URL","createObjectURL","webkitURL","revokeOURL","revokeObjectURL","hasOURL","downloadUrl","body","appendChild","click","downloadBlobOURL","navigator","msSaveOrOpenBlob","mediaType","encode","formatCandidate","candidate","filterBuilder","getCandidates","expected","part","meetingPolitikerInfo","meetingPendingInfo","Information","genericFilter","$hasPending","ErrorInfo","RequestError","ergoErrorParserProvider","parseApiError","TWCode","TWDetail","messages","highlight","actiontext","inherit","Authentication","AccountServer","AuthServerApiBase","TromanWebApiBase","ValmanWebApiBase","provider","$get","TromanServerFactory","$injector","loginNeededCallback","invoke","exc","tromanServerFactory","urlbase","accountServerFactory","SortingGroup","orderByFilter","sorterParams","lastSort","sortable","axis","helper","originalItem","originalCols","width","ui","height","css","stop","$newOrder","reverse","groupClass","removePlaceholder","addPlaceholder","before","def","listPromise","containment","tolerance","orgch","droptarget","itemClass","oldsort","newsort","partyDefinition","organizationDefinition","divisionDefinition","organizationTypeDefinition","showSorter","endpoint","sp","groupsToSortUpdate","getGroups","gms","real","NEXT_NEW_PERIOD_KEY","PaymentSettingsPeriod","EndDate","MaxMeetingAmount","MaxLostIncomeAmount","LostIncomeGuardLimit","PaymentSettingsPeriodCollection","srcs","hasChanged","_createPeriod","startDate","fromDate","latest","_updateEndDate","nextStart","exportError","exportSuccess","applyMunicipalityResult","selectedPeriod","selectedStartDate","invalidExistingPeriod","canExport","selectedPeriodChanged","selectedStartDateChanged","export","canApplyMunicipalityCodeList","applyMunicipalityCodeList","PaymentSettingsPeriods","wc","meetingWageTypes","showArchive","showActivate","history","drop","RoundNumber","canDownloadFile","HasTransactionData","canDownloadReport","downloadReport","isRoundLocked","includedOrganizations","otherOrganizations","_block","promise","canAddOrganization","addOrganization","confirmation","canRemoveOrganizations","removeOrganizations","calcNextMonth","getPaymentMonthToday","sendername","addMode","newMonth","canShowAddMode","showAddMode","_doAddRound","canAddNext","nextForm","addNext","canAddNew","addForm","addNew","canLockRound","IsReadOnly","showUnlockRound","canUnlockRound","unlockRound","canRemoveRound","canAddVersion","splitAttestation","SplitAttestation","EmptyPeriod","NoFields","Times","getEnabled","wmid","wageModelChanged","selectedWageModel","activeWageModels","createPeriod","np","unshift","canRemovePeriod","editingVariable","createVariable","variableAdd","variableApply","variablefocus","variableEdit","variableCanApply","variableform","variableRemove","superSave"],"sourceRoot":""}