DCA Strategies build orders that may not be executable, wasting fees
In `_buildInitiateSwapExecutable()`, DCA strategies determine the swap parameters for the CoW Swap. The code has recently been refactored so that there may be more than one active order simultaneously. The issue is that the function assumes the user's entire ERC20 balance to be available for the order being built.\\n```\\n    // Check if enough balance present to swap, else swap entire balance\\n        uint256 amountIn = (inputTokenBalance < params.amountToSwap) ? \\n          inputTokenBalance : params.amountToSwap;\\n```\\n\\nImpact This is a problem because if the previous order will be executed before the current order, there may not be enough funds to pull from the user to execute the swap. As a result, transaction execution fees are wasted.
Ensure only one swap can be in-flight at a time, or deduct the in-flight swap amounts from the current balance.
```\\n    // Check if enough balance present to swap, else swap entire balance\\n        uint256 amountIn = (inputTokenBalance < params.amountToSwap) ? \\n          inputTokenBalance : params.amountToSwap;\\n```\\n