How to make a system calculation with a previously unknown additional properties?

All good time!
In the last few years, I tightly sat down on Django. During this time he created several systems for industries. System work in the furniture segment.

By and large, it was necessary to consider all stages of production of a company. And to make the customer able to get online to make an order and immediately know the price of this order, and also to prepare one-click forms-documents. Of course notice. Payment. Records of orders and so on.

Immediately it may seem that it is a such online store. But it just seems. In fact it would illustrate for example the production of facades for kitchens.

  • The facades of about 10 models
  • Thousands of items of paint and varnish materials
  • A few dozen of patina (also color)
  • The facades can made from 4 types of materials (3 types of wood and MDF)
  • Some of the models can be made of the same material, any two of any
  • There are about 30 types of facades within a single model (deaf, under glass, under the grate, lining, Metabox, etc.)
  • At the same time, there are other products (decor, printusa, ledges, arches, pillars, columns)
  • They also have their own additional properties
  • Some additional properties are grouped (i.e. from groups you can only select one item)
  • Separate point I want to mention curved facades (round shaped)
  • Under products there is a range of sizes (the client specifies the sizes)
  • Some products include non-standard (out of range, but the price increases)
  • Any extra properties will only affect the paragraph of the order, some group (e.g. arch or podkryzhaki), some on each item of the order
  • Any extra properties change the price, some only the information (type of outlet, type of matting, etc.)


And all this is only what I just remembered. All of the following services (my software product is made in Django). Extra not showing. Controls the sizes, prices and all extra properties in a mode that is called "fool proof". Laid out all sorts of options and all embodied.

There are three prices (Manufacturer, Dealer and furniture maker). The latter depending on the amount of discount from 5 to 15%

And now the question:
I did all this for one client. All tied to its production processes. And the DB table and the price formula. All specifically for this production.
As made, there was a second client. Made for him. He had some processes are similar, and some of the nuances are completely different. This means that some DB tables and formulas price other.

Now I think there's a third client. And that's the idea.
Is it possible to make some kind of universal platform where various options for some additional features, characteristics, production features, language, pricing formulas, etc. you can configure what is called "admin".


I suddenly remembered that once in the distant past there was such a engine in PHP called between Jumla. And here it is possible to configure, to hang, all sorts of topolnicki, plug-ins, widgets, and other whistles perdelki.

Question: How (under the hood) implemented such software solutions? Well, when previously unknown nuances and extra properties?

p.s. I hope my question is clear.
p.s.2. If you have something to read or watch, I'd be happy like in the comments.
March 23rd 20 at 19:20
1 answer
March 23rd 20 at 19:22
Compare your solution and Jumla, certainly the height of disrespect and gange

Development always goes for the solutions business, not before

If you agree with all of your customers on the unification of their businesses, then you will be able to think about SaaS is your solution

Now, in fact
You can use the project as the boilerplate, but no more
Immediately there is a problem with retracting part of functional tests

Solutions that attempt to cross a snake with a hedgehog always end solutions Ala Jumla with the same code quality and security issues

Find more questions by tags Django