As far as I can tell from looking at "apothecary_quest.c" and "apothecary_quest.h":
. "I have changed my mind about that donation of yours." appears if "PChar.quest.mysterious_plants.declined" is set, which happens if you choose not to donate. It leads to dialog case "agree_donate" which deletes "PChar.quest.mysterious_plants.declined" and triggers quest case "Accept Donate Apothecary", which sets "PChar.quest.mysterious_plants.donate".
. "I've changed my mind Steven, I can't do the donation for you after all." appears if "PChar.quest.mysterious_plants.donate" is set, which happens if you choose to donate and you have not yet donated the full 1000. It triggers dialog case "decline_donate_later" which triggers quest case "Decline Donate Apothecary", which sets "PChar.quest.mysterious_plants.declined" and deletes "PChar.quest.mysterious_plants.donate". That means you can't tell either Father Jerald or Gilber Ballester that you want to donate on behalf of Steven, which is fair enough, you've just told Steven that you don't want to donate on his behalf. If you want to change your mind again, you should be able to tell Steven "I have changed my mind about that donation of yours" again.
But "PChar.quest.mysterious_plants.donate" is also the attribute which keeps track of your donations for Steven. So if you repeatedly change your mind, you'll be starting the donations to the church on Steven's behalf from scratch.
It is perhaps unfortunate that the donation required to start the sidequest was programmed to be actioned by the normal donation process. There is no obvious dialogue line to re-assure the player that a donation is leading to fulfilling tha apothecary's 1000 coins requirement. [Previously I did add a possible reply AFTER the donation that it is also for the apothecary but that is partly after the event (when you've parted with your hard earned money). Actually this text is not essential to the process and any of the replies will do since it's the act of donation that counts.] You can also have the situation where you have over 1000 but not enough for the requisite minimum donation for your current character level. The donation won't proceed but it doesn't give you any explanation why you can't donate. [I think originally the donations were hardcoded at 100, 1000, and 5000 but not anymore. ]
Perhaps you could rewrite "Father Jerald_dialog.c" and "quests_common.c" to separate quest donations from regular donations - remove the quest donations from quest case "donation" and add dialog for Father Jerald to offer a separate line if "PChar.quest.mysterious_plants.donate" is set.
Moreover with little helpful clues to guide you it is easy to get mixed up as to whether you are in "donate" or "refuse donate" mode. If you return to dialogue with Steven at this point there are two possible lines which alternate around as a loop.
"I have changed my mind about that donation of yours." which sets up the attribute to allow the donation to be tested and
"I've changed my mind Steven, I can't do the donation for you after all." which deletes the attribute so any test whether you have donated will fail even if you donate enough in Greenford Church.
I can imagine a player returning to the apothecary and getting these dialogues without realizing the impact because in either case they are the only dialogue available which seems to have any relevance to the task in hand. If in any doubt of the situation, after meeting the mob and telling them about the wish to donate for example, the safest path is to return to speak to Steven. If your dialogue line is the second example "I've changed my mind Steven, I can't do the donation for you after all." You can proceed to donate ONLY IF you don't use that dialogue line to exit the dialogue! If it is the first example you must use the line to set the attribute.
As far as I can tell from the code in "apothecary_quest.c", DLG_TEXT[28] ("I have changed my mind about that donation of yours.") is used if "PChar.quest.mysterious_plants.declined" is set, which happens in "quests_side.c", case "Decline Donate Apothecary". That's triggered if you originally refused to donate or if you agreed and then changed your mind. Which brings us to:
DLG_TEXT[94] ("I've changed my mind Steven, I can't do the donation for you after all.") is used if "PChar.quest.mysterious_plants.donate" is set, which happens in "quests_side.c", case "Accept Donate Apothecary". That's triggered if you originally agreed to donate or if you changed your mind with DLG_TEXT[28].
Quest case "Accept Donate Apothecary" sets attribute "mysterious_plants.donate" and deletes "mysterious_plants.declined". Quest case "Decline Donate Apothecary" does the exact opposite. So only one of the two attributes can be set.
Perhaps add a check in quest case "Apothecary Pay" to check if "PChar.quest.mysterious_plants.donate" is set, and if not, set it. That would allow "Father Jerald_dialog.c" to offer the choice to donate to the quest without having to return to Steven.
There may be another problem. If you tell Steven that you're willing to donate and then donate some money to the church for him but not the full amount, the amount you donated is stored in "PChar.quest.mysterious_plants.donate". If you then say you've changed your mind, "PChar.quest.mysterious_plants.donate" is deleted. If you then change your mind again, "PChar.quest.mysterious_plants.donate" is set but it's lost your donation - you have to start from scratch.