Numérotation lignes

Répondre
doc
Messages : 189
Enregistré le : dim. févr. 26, 2017 4:39 pm

mar. juil. 02, 2024 12:33 pm

Bonjour,

Je souhaiterais rajouter la possibilité de numéroter mes lignes par "lots" (1.1, 1.2, 1.3.2.3), ... jusque là j'utilise l'attribut "LineReference" mais il renvoi un indice entier (1, 2, 3, ...).
Certains de mes devis comportes des prestations par lots pour une meilleure visibilité avec un sous-total et pour cela j'utilise les niveaux et après je modifie à la main le fichier .ods pour les numéros de lignes.

Exemple de lignes:

Code : Tout sélectionner

---------------------------------------------------------------------
1        | LOT 1                                    | 1000.00€
1.1      |  Prestation 1 du lot 1                   | 500.00€
1.1.1    |   Prestation 1 de la prestation 1.1      | 250.00€
1.1.2    |   Prestation 2 de la prestation 1.1      | 250.00€
1.1.2.1  |    Prestation 1 de la prestation 1.1.2   | 200.00€
1.1.2.1  |    Prestation 2 de la prestation 1.1.2   | 50.00€

2        | LOT 2                                    | 1000.00€
2.1      |  Prestation 1 du lot 2                   | 500.00€
2.1.1    |   Prestation 1 de la prestation 2.1      | 250.00€
2.1.2    |   Prestation 2 de la prestation 2.1      | 250.00€
2.2      |  Prestation 2 du lot 2                   | 500.00€


TOTAL DEVIS                                         | 2000.00€

---------------------------------------------------------------------
Est ce qu'il existe déjà chose pour le faire ou alors faut passer par un module ?
Dans ce cas un peu d'aide par où commencer pour le module ?

Merci.
doc
Messages : 189
Enregistré le : dim. févr. 26, 2017 4:39 pm

mar. juil. 02, 2024 2:22 pm

A priori een fouyillant un peu dans le code, c'est faisable en créant une classe implémentant "SpreadSheetCellValueProvider" et "getValue()" mais on ne peux. récupérer que l'element de devis à partir du context "SpreadSheetCellValueContext", je ne peux du coup récupérer que l'ordre et le niveau mais pas de quoi pouvoir "calculer" le niveau comme sur mon exemple

Code : Tout sélectionner

public class LevelIndexNumberCellValueProvider implements SpreadSheetCellValueProvider, Logger {
    public LevelIndexNumberCellValueProvider() {}
	
    @Override
	public Object getValue(SpreadSheetCellValueContext context) {
        System.out.println("--- get row accessor");
		SQLRowAccessor row = context.getRow();
        context.dump();

		return row.getString("NIVEAU");
	}
	
	public static void register() {
        System.out.println("--- registering level index cell provider");
        SpreadSheetCellValueProviderManager.put("supplychain.element.salesunit.line.level", new LevelIndexNumberCellValueProvider());
	}
}

Ou alors agir autre façon de faire, ajouter un champ "level" (par exemple) à la table "DEVIS_ELEMENT" et le mettre à jour à chaques ajout, suppression, déplacement, ... de ligne.
Répondre