Paying Employee's Advance (Like middle of the month)

I believe employee advance and deduction of that advance from the salary is the only way to do.

You don’t need to use expense claims, just create an employee advance with the “Repay Unclaimed Amount From Salary” checkbox checked. And after payment of the advance you will be able to see a “Deduction From Salary” option under create in Employee Advance.

There you can pick the component and payroll period and amount to be deducted.