Page 1 sur 1

Numérotation lignes

Posté : mar. juil. 02, 2024 12:33 pm
par doc
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.

Re: Numérotation lignes

Posté : mar. juil. 02, 2024 2:22 pm
par doc
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.

Re: Numérotation lignes

Posté : mer. nov. 20, 2024 12:57 pm
par doc
Personne pour donner un coup de main sur le sujet ? J'ai fouillé le code sans trop pouvoir avancer sur le sujet.

Merci.

Re: Numérotation lignes

Posté : jeu. nov. 21, 2024 6:41 pm
par SRI
Désolé, je ne peux aider.

Re: Numérotation lignes

Posté : lun. déc. 16, 2024 12:03 pm
par doc
Bonjour @SRI et merci quand même pour ton retour.

Re: Numérotation lignes

Posté : mer. déc. 18, 2024 7:56 pm
par meclinux
Bonjour as tu trouver une solution à ton problème ? J'ai l'impression que c'est en lien avec de la sûreté de code

Re: Numérotation lignes

Posté : mar. janv. 07, 2025 11:12 am
par doc
Bonjour @meclinux, non je n'ai pas encore trouvé de solution, j'ai laissé pour l'instant en stand-by et je fais ça à la main par manque de temps pour y plonger sérieusement.
Mais le problème que je rencontre en essayant de faire ça avec un SpreadSheetCellValueProvider c'est que je ne peux pas faire le lien avec les autres lignes (à priori).