Position numbers for offers, invoices and delivery notes

Hello everybody,

Shortly where I came from and where to go.
I’m looking for a billing program, for my new company (technical fittings and services),
in my old one we used lx-office-erp / kivitendo.
It’s a good and great program that can do most things I need.
But with adjustments and expansion I always had problems.
It’s unfortunately written in Perl and not in Python, my favorite.
I’ve create a Tryton test and playarea, so far everything okay and is Python.

Now to my request.
For offers, invoices and delivery notes I would need item numbers.
Since I usually have several pages with many positions and it is cruel with a customer
to talk about which position it is, because sometimes also a position
is identical with another, only in another place.
Please none that are created only in the template, to have it in tryton itself.
For that I do not need to ask, that can be my template by itself, not what i want.

Preferably staggered, but not needed.(lx-office can’t do it)

1 main
1.1 beside
1.1.1 beside side

Where I have been looking for.
I’ve tried on tryton.org and with internet search but unfortunately found nothing on this topic.

Can someone please help me.

Thanks in advance!

It is not clear how and why are sale lines in a tree structure?

Tree structure is not really needed, it’s nice to have.
What i now need is simple item numbers in tryton itself, not only in the reports.

It makes an offer and invoice structured and simple to read and understand.
Many of my offers have 50 items and more, but not all of this is everytime needed like optional items.
It’s more user friendly with a tree structure to handle it.

example for a tree structure:

  1. Electric
    1.1 Main electric
    1.1.1 Main cables
    1.1.2 Drives
    1.1.3 …
    1.2 Control electric
    1.2.1 PLC unit
    1.2.2 emerency stop
    1.2.3 …
    1.2.4 … (option 1)
    1.2.5 … (option 2)
  2. Mechanic

So just enumerate on the report and just use the position number of the One2Many.
Or you can still add a Function field that compute the position using the rank window function (to stay efficient).