Right off the bat I would say to rotate one of the square faces 90 degrees. This flips the parity of both the corner pieces and the small triangle pieces between a square and a hexagon (to differentiate between the other visually identical but mathematically distinct triangle pieces between two hexagons).
Since the small square-hexagon triangles come in identical triplets, a parity shift should not be a problem as two identical pieces can be swapped and this makes the parity of the corners even, meaning you should never have to flip just two corners if you use only parity-preserving moves from then on.
HOWEVER, I do see a problem: disallowing a 90 degree turn of any square face (the only move that can switch parity) implicitly separates the corner pieces into two distinct groups, which in this case would be a problem as 4 corners would be in the incorrect orbit. BUT WAIT!! If you separate these 4 corners in bad orbits into two blocks of 2, place 2 orbitally correct corners on the same square face as 2 orbitally incorrect corners and rotate 90, they will swap orbits so that the 2 that were incorrect are now correct and the 2 that were correct are now incorrect. Then gathering the 4 orbitally incorrect corners onto one square face and rotating them all 90 degrees should correct both the orbit problem and the parity issue. WOW, that is really cool actually
Ok, so if you couldn't follow that... um.... (I'm calling each face by its color as in your picture, I think the top face is pink, but it's kind of hard to see)
pink purple' pink' orange' white' green' pink
should fix the parity while keeping the orbits intact, then the puzzle should be solveable using commutators
without rotating any square 90 degrees , which I suspect is how you got this far in the first place.
That's a very tricky interaction there. I like it!
Good Luck!
Matt Galla