Numérotation lignes

Répondre
doc
Messages : 195
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 : 195
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.
doc
Messages : 195
Enregistré le : dim. févr. 26, 2017 4:39 pm

mer. nov. 20, 2024 12:57 pm

Personne pour donner un coup de main sur le sujet ? J'ai fouillé le code sans trop pouvoir avancer sur le sujet.

Merci.
SRI
Messages : 273
Enregistré le : mer. mars 15, 2017 8:50 pm

jeu. nov. 21, 2024 6:41 pm

Désolé, je ne peux aider.
Utilisateur Cloud avec un contrat de maintenance.
doc
Messages : 195
Enregistré le : dim. févr. 26, 2017 4:39 pm

lun. déc. 16, 2024 12:03 pm

Bonjour @SRI et merci quand même pour ton retour.
meclinux
Messages : 2
Enregistré le : jeu. déc. 12, 2024 11:32 pm

mer. déc. 18, 2024 7:56 pm

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
doc
Messages : 195
Enregistré le : dim. févr. 26, 2017 4:39 pm

mar. janv. 07, 2025 11:12 am

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).
Répondre