galitska, your question is not very complete. Perhaps you could describe it in greater detail, provide links to reference materials, &c.
The article How do I post a question effectively? has some excellent advice on posting complete questions that are likely to get good answers. Your question seems interesting on the surface, and I look forward to your reformulation of it!
radiantmatrix
require General::Disclaimer;
"Users are evil. All users are evil. Do not trust them. Perl specifically offers the -T switch because it knows users are evil." - japhy
| [reply] |
I am not familiar with your particular needs, and the question doesn't exactly define them. But a good startingpoint with this type of problem is to factor all the stuff that doesn't change into a base class (or module), and then sub-class it to add on the layers that tweak it to work with varying needs. The sub-classes should use a uniform interface, so that one sub-class can be a drop-in replacement for another. That way, when you get a new client, with a new need, you simply subclass the base class providing the individual functionality that the new client needs, without wrecking everything else.
This is one of those things that object oriented programming is for.
| [reply] |
This question is rather vague, so the answer cannot be precise, but I can suggest that you rewrite your billing application so that the output for each client is defined by a configuration file specific for each client.
Thus, every time a client wants something different, you haul out your configuration file and start tinkering. After a while you'll have a variety of formats and you can start with a solution that's close to the one your client wants, and go from there.
Alex / talexb / Toronto
"Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds
| [reply] |
| [reply] |
As already stated, you have two main options - customised configuration for each client, or customised classes for each client.
The option you choose will depend on whether the customisation will be mainly different data (configuration) or different code (sub-classes).
I'm sure you would get a better answer if you provided more specifics about your problem.
| [reply] |