PowerApps으로 만드는 조직도 솔루션 - 10. 직원 (새로 만들기)
직원 새로 만들기
1. 필수 입력 값으로 이름, 메일, 소속 부서 값이 입력이 되지 않으면 저장 버튼 비활성화
2. 전문분야를 입력하여 검색에서 분야 전문가를 검색 할 수 있게 한다.
3. 사용자 입력을 최소화 하고 입력은 선택 값으로 사용자의 실수를 최소화 한다.
4. 값이 선택되면 OrderNo 등 값이 자동으로 설정하고 화면에 표시하지 않는다.
입력화면
아래 Visible = false로 처리하여 화면에 나타나지 않게 구성한다.
새로 만들기 버튼 설정
OnSelect = NewForm(Form1_5); UpdateContext({ newMode: true, editMode:false });
|
저장 버튼 설정
OnSelect 설정
SubmitForm(Form1_5);
// ColDepartment 초기화 및 생성
ClearCollect(ColDepartment,AddColumns(OrgDepartment,NewID,ID));
// OrgCompany의 회사 정보를 ColDepartment에 추가
ForAll(
OrgCompany,
Collect(
ColDepartment,
{
No: Text(OrderNo,"00"),
CompanyID : ID,
Name: Name,
Level: 0,
OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
Visible:true
}
)
);
// ColEmployee 초기화 및 생성
ClearCollect(ColEmployee,AddColumns(OrgEmployee,NewID,ID));
ForAll(
OrgCompany,
Collect(
ColEmployee,
{
No: Text(OrderNo,"00"),
CompanyID : ID,
Name: Name,
Level: 0,
OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
Visible:true
}
)
);
|
DisplayMode
// 이름, 메일주소, 소속부서 값이 비어 있으면 저장 버튼을 비활성화
If(!IsBlank(EmployeeName.Text) And !IsBlank(EmployeeMail.Text) And !IsBlank(EmployeeIDComboBox.Selected.Name),DisplayMode.Edit,DisplayMode.Disabled)
|
Dropdown 으로 기존 값을 가져와서 사용자 실수를 최소화 한다.
직위, 직책, 메일, 회사, 소속부서, 겸직부서1, 겸직부서2
직위
Dropdown 메뉴 설정
// Items 값을 OrgJobtitle 값을 OrderNo로 정렬하여 표시 Value 값은 Name으로 설정
Items = Sort(OrgJobtitle,OrderNo) // Default 값을 사원으로 설정 Default = If(newMode,"사원",CurrentItem.Jobtitle) |
Update 설정
Update = JobtitleDropdown2_1_2.Selected.Name
|
직책
Dropdown 메뉴 설정
Items = Sort(OrgPosition,OrderNo)
Default = If(newMode,"팀원", CurrentItem.Position)
|
Update 설정
Update = PositionDropdown3_1_2.Selected.Name
|
메일
메일 주소의 실수를 방지하기 위해 회사에서 정의해 둔 @domainName 선택으로 하고 앞에 메일 주소 부분만 입력
Dropdown 메뉴 설정
Items = Sort(OrgDomainName,OrderNo)
Default = If(!IsBlank(EmployeeGallery.Selected.Mail),"@" &Last(Split(Parent.Default,"@")).Value)
|
Text 입력
Default = Left(Parent.Default,Find("@",Parent.Default)-1)
|
Update 설정
Update = EmployeeMail.Text & MailDropdown25_1_2.Selected.Name
|
회사
Dropdown 메뉴 설정
Items = Sort(OrgCompany,OrderNo)
Default = LookUp(OrgCompany,ID=EmployeeGallery.Selected.CompanyID,Name)
|
Update 설정
Update = CompanyIDDropdown7_1_2.Selected.Name
|
입사일
날짜 선택 기본 값
DefaultDate = If(newMode,Today(),Parent.Default)
|
Update 설정
Update = DataCardValue27.SelectedDate
|
퇴사일
퇴사일은 체크를 하면 퇴사일을 선택할 수 있게 구성
DisplayMode = If(ResignationToggle1_2.Checked,DisplayMode.Edit,DisplayMode.Disabled)
DefaultDate = If(ResignationToggle1_2.Checked,Parent.Default,"")
InputTextPlaceholder 값은 제거하여 나타나지 않게 한다. |
Update 설정
Update = DataCardValue28.SelectedDate
|
사원번호
Default 설정
If(
newMode,
Text(Today(),"yyyy") &
If(
Left( (First(Sort(OrgEmployee,EmpNo,SortOrder.Descending)).EmpNo) + 1, 4) = Text(Today(),"yyyy" ),
Right( (First(Sort(OrgEmployee,EmpNo,SortOrder.Descending)).EmpNo)+1,4),"0001"
),
Parent .Default
)
|
소속부서
Items
Sort(Filter(ColDepartment,Level>0 And CompanyID=CompanyIDDropdown7_1_2.Selected.ID ),OrderNo)
|
DefaultSelectedItems 설정
If(ThisItem.CompanyID=CompanyIDDropdown7_1_2.Selected.ID,
LookUp(
ColDepartment,
ID = EmployeeGallery.Selected.DepartmentID And Level > 0
),
{})
|
겸직부서1
Items
Sort(Filter(ColDepartment,Level>0 And CompanyID=CompanyIDDropdown7_1_2.Selected.ID ),OrderNo)
|
DefaultSelectedItems 설정
If(ThisItem.CompanyID=CompanyIDDropdown7_1_2.Selected.ID,
LookUp(
ColDepartment,
ID = EmployeeGallery.Selected.DepartmentID1 And Level > 0
),
{})
|
겸직부서2
Items
Sort(Filter(ColDepartment,Level>0 And CompanyID=CompanyIDDropdown7_1_2.Selected.ID ),OrderNo)
|
DefaultSelectedItems 설정
If(ThisItem.CompanyID=CompanyIDDropdown7_1_2.Selected.ID,
LookUp(
ColDepartment,
ID = EmployeeGallery.Selected.DepartmentID2 And Level > 0
),
{})
|
OrderNo
Default = Replace(LookUp(ColDepartment,ID=EmployeeIDComboBox.Selected.ID,OrderNo),28,32,DepartmentNo.Text) Visible = editMode |
OrderNo1
Default = If(IsBlank(EmployeeID1ComboBox.Selected.Name),"",Replace(LookUp(ColDepartment,ID=EmployeeID1ComboBox.Selected.ID,OrderNo),28,32,DepartmentNo1.Text))
Visible = editMode |
OrderNo2
Default = If(IsBlank(EmployeeID2ComboBox.Selected.Name),"",Replace(LookUp(ColDepartment,ID=EmployeeID2ComboBox.Selected.ID,OrderNo),28,32,DepartmentNo2.Text)) Visible = editMode |
No
Default = If(newMode, // 새로 만들기
// 값이 없으면 초기값으로 90001로 설정, 값이 있으면 최대값 + 1
If(IsBlank(First(Sort(OrgEmployee,No,SortOrder.Descending)).No),"90001",First(Sort(ColOrgAllList,No,SortOrder.Descending)).No+1),
// newMode가 아닌 경우 기존 값 가져오기
Parent.Default
)
Visible = false |
No1
Default = If(newMode, // 새로 만들기
// 겸직 부서1이 선택 되면 최대 값 +2 ( No와 No1이 동시 추가 되었을 경우 동일 값 피하기 위함)
If(!IsBlank(EmployeeID1ComboBox.Selected.Name),
First(Sort(ColOrgAllList,No,SortOrder.Descending)).No+2
),
// newMode가 아닌 경우 겸직 부서1이 선택 되지 않으면 "", 값이 선택되면 최대 값 +2, 그 외의 경우 Default 값
If(
IsBlank(EmployeeID1ComboBox.Selected.Name),"",
If(IsBlank(LookUp(ColEmployee,ID=CurrentItem.ID,No1)),First(Sort(ColOrgAllList,No,SortOrder.Descending)).No+2,Parent.Default)
)
)
Visible = false |
No2
Default = If(newMode, // 새로 만들기
// 겸직 부서1이 선택 되면 최대 값 +3 ( No, No1, No3 동시 추가 되었을 경우 동일 값 피하기 위함)
If(!IsBlank(EmployeeID2ComboBox.Selected.Name),
First(Sort(ColOrgAllList,No,SortOrder.Descending)).No+3
),
// newMode가 아닌 경우 겸직 부서1이 선택 되지 않으면 "", 값이 선택되면 최대 값 +3, 그 외의 경우 Default 값
If(
IsBlank(EmployeeID2ComboBox.Selected.Name),"",
If(IsBlank(LookUp(ColEmployee,ID=CurrentItem.ID,No2)),First(Sort(ColOrgAllList,No,SortOrder.Descending)).No+3,Parent.Default)
)
)
Visible = false |
DepartmentID
Default = EmployeeIDComboBox.Selected.ID
Visible = false |
DepartmentID1
Default =
If(IsBlank(EmployeeID1ComboBox.Selected),"",EmployeeID1ComboBox.Selected.ID)
Visible = false |
DepartmentID2
Default =
If(IsBlank(EmployeeID2ComboBox.Selected),"",EmployeeID2ComboBox.Selected.ID)
Visible = false |
Level
Default = If(!IsBlank(EmployeeIDComboBox.Selected),EmployeeIDComboBox.Selected.Level + 1)
Visible = false |
Level1
Default = If(!IsBlank(EmployeeID1ComboBox.Selected),EmployeeID1ComboBox.Selected.Level + 1)
Visible = false |
Level2
Default = If(!IsBlank(EmployeeID2ComboBox.Selected),EmployeeID2ComboBox.Selected.Level + 1)
Visible = false |
CompanyID
Default = CompanyIDDropdown7_1_2.Selected.ID
Visible = false |