You should NOT be adding times. Addition is not guaranteed to work. Subtraction is, unless the interval between the times is greater than the rollover interval (49+ days).
Your code structure makes for difficult reading. NOTHING should follow the { on the same line, in a function definition statement or if statement.
You have useless curly braces that do not help.
You call OpenFunc() when hour is 12 and minute is 38 or 39, but, in the function, ignore the minute=39 possibility. Why?
Do you KNOW the precedence of operators? Which is higher - <=, ==, ||, or &&?
If you do not KNOW, use parentheses, so that what you want and what the compiler does are the same thing.
You can't just replace delay() with millis() in a function, if you don't call the function over and over.
You really need to keep track of whether what you are trying to open or close is open, opening, closed, or closing. Take the desired action only if the current state is appropriate. That is, do not try to open a door that is opening. Do not try to close a door that is closed.
Hoping that spinning the motors for a fixed amount of time will result in complete opening or closing is a bad idea. Limit switches are a good idea.