I managed solving that problem even when there's more than one skill involved, but now my hard constraint of worktime breaks if I add more worktime than the sum of engineers worktime.
(8) is the worktime, my workorders all have a worktime of 4 hours, so, I got 32 available hours and 32 hours of workorders to be assigned right? When I stick to this plan, it works:
Solved distribution with 8 work orders and 4 engineers:
ID: 104[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 103[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
ID: 105[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 102[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 101[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 107[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 106[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 108[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
---------------
So, if I add another worktime with 4 hours, it messes everything, this is the outcome:
Solved distribution with 9 work orders and 4 engineers:
ID: 104[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 103[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
ID: 105[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 102[Skills: (1002) ABC 2] - Qwert(8)[Skills: (1002) ABC 2]
ID: 101[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 107[Skills: (1004) ABC 4] - Lkjhg(8)[Skills: (1004) ABC 4]
ID: 106[Skills: (1001) ABC 1] - Poiuy(8)[Skills: (1001) ABC 1]
ID: 108[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
ID: 109[Skills: (1003) ABC 3] - Trewq(8)[Skills: (1003) ABC 3]
------------
to be precise, i don't know if it is because of worktime or skill