Fattura Elettronica - Nodo Multiplo

di il
5 risposte

Fattura Elettronica - Nodo Multiplo

Sto provando la libreria “FatturaElettonica.XMLNodes” scaricata da GitHub.

Il problema consiste nel fatto che non riesco in alcun modo ad inserire più righe di Beni e Servizi (e così per tutti i nodi multipli), perchè, a seconda di come posiziono le varie righe di dimensionamento e/o di aggiunta alla lista mi riporta solo l'ultima riga, o più righe uguali.
Qualcuno si è già trovato in questa situazione e magari può suggerirmi la soluzione?

Le righe si trovano in una DataGridView (DGVRighe), per cui, scorrendole, cerco di assegnarne i valori alle varie proprietà.
Ma non funziona.

Il codice è il seguente:

Dim datiBeniServizi As New DatiBeniServizi
           Dim dettaglioLinee As New DettaglioLinee
           With DGVRighe     
               Dim nRiga As Integer = 0
               For i = 0 To .Rows.Count - 1
                   If .Item("Tipo", i).Value <> "T" Then
                       nRiga += 1
                       Dim dettaglioLineeList As New List(Of DettaglioLinee)
                       dettaglioLinee.NumeroLinea = nRiga.ToString
                       dettaglioLinee.Descrizione = .Item("Descr", i).Value & ""
                       dettaglioLinee.Quantita = TrasformaNumeriPerFE(.Item("Quant", i).Value & "", True, 2)
                       dettaglioLinee.UnitaMisura = .Item("UM", i).Value & ""
                       dettaglioLinee.PrezzoUnitario = TrasformaNumeriPerFE(.Item("ImpUnit", i).Value & "",, 2)
                       If .Item("SconImpo", i).Value <> "" Then
                           Dim scontoMaggiorazione_221 As New ScontoMaggiorazione
                           scontoMaggiorazione_221.Tipo = .Item("SconType", i).Value & ""
                           scontoMaggiorazione_221.Percentuale = TrasformaNumeriPerFE(.Item("SconPerc", i).Value & "",, 2)
                           scontoMaggiorazione_221.Importo = TrasformaNumeriPerFE(.Item("SconImpo", i).Value & "",, 2)
                           dettaglioLinee.ScontoMaggiorazione = scontoMaggiorazione_221
                       End If
                       dettaglioLinee.PrezzoTotale = TrasformaNumeriPerFE(.Item("Importo", i).Value & "",, 2)
                       dettaglioLinee.AliquotaIVA = TrasformaNumeriPerFE(.Item("AlIVA", i).Value & "",, 2)
                       If .Item("Riten", i).Value Then dettaglioLinee.Ritenuta = "SI"
                       dettaglioLinee.Natura = .Item("Natura", i).Value & ""
                       dettaglioLineeList.Add(dettaglioLinee)
                       datiBeniServizi.DettaglioLinee = dettaglioLineeList
                   End If
               Next
           End With

5 Risposte

  • Re: Fattura Elettronica - Nodo Multiplo

    20/01/2023 - Supervbnet2000 ha scritto:


    Il problema consiste nel fatto che non riesco in alcun modo ad inserire più righe di Beni e Servizi (e così per tutti i nodi multipli), perchè, a seconda di come posiziono le varie righe di dimensionamento e/o di aggiunta alla lista mi riporta solo l'ultima riga, o più righe uguali.

    Questo è il tuo ciclo con le sole istruzioni che riguardano le liste e gli oggetti che inserisci.

                  For i = 0 To .Rows.Count - 1
                       If .Item("Tipo", i).Value <> "T" Then
                           Dim dettaglioLineeList As New List(Of DettaglioLinee)
                           ' ...
                           dettaglioLineeList.Add(dettaglioLinee)
                           datiBeniServizi.DettaglioLinee = dettaglioLineeList
                       End If
                   Next

    E' evidente che stai creando ogni volta la lista per ogni elemento da inserire.

    La lista va creata all'esterno del ciclo. Nel ciclo, crei e aggiungi elementi alla lista e alla fine la assegni.

    Tra l'altro, con la libreria che stai utilizzando, credo non sia nemmeno necessario creare la lista: le proprietà sono già inizializzate.

  • Re: Fattura Elettronica - Nodo Multiplo

    No. Purtroppo non funziona.

    O riporta una sola riga, o ripete n volte l'ultima, a seconda che 

    datiBeniServizi.DettaglioLinee = dettaglioLineeList

    stia dentro o fuori dal ciclo.

    Che poi la lista sia creata all'interno o all'esterno del ciclo non ha alcun effetto sul risultato

  • Re: Fattura Elettronica - Nodo Multiplo

    21/01/2023 - Supervbnet2000 ha scritto:


    No. Purtroppo non funziona.

    Riporta il codice sorgente, perché se purtroppo non funziona, purtroppo non lo hai corretto come si deve.

    21/01/2023 - Supervbnet2000 ha scritto:


    O riporta una sola riga, o ripete n volte l'ultima, a seconda che 

    datiBeniServizi.DettaglioLinee = dettaglioLineeList

    stia dentro o fuori dal ciclo.

    Come già detto, dovresti provare ad aggiungere gli oggetti direttamente alla lista, ovvero

    datiBeniServizi.DettaglioLinee.Add(dettaglioLinea)

    21/01/2023 - Supervbnet2000 ha scritto:


    Che poi la lista sia creata all'interno o all'esterno del ciclo non ha alcun effetto sul risultato

    Vedi sopra: il codice potrebbe essere errato.

  • Re: Fattura Elettronica - Nodo Multiplo

    Ti ringrazio molto per l'attenzione dimostratami, ma tutte le soluzioni che proponi le ho già provate: è da diversi giorni che provo.
    A questo punto non mi resta che arrendermi all'evidenza:
    - o la libreria è troppo sofisticata per le mie scarse competenze
    - o non funziona
    ed in ogni caso, credo che sia scarsamente documentata. Ho anche comprato la "guida", che però non documenta alcunchè, limitandosi a riportare esclusivamente un esempio di fattura con i nodi multipli valorizzati con una sola riga; cosa che, ovviamente, funziona benissimo. Come si faccia ad inserire più righe non è dato sapere.
    Grazie ancora e scusami per il tempo che ti ho fatto perdere... tornerò alla vecchia libreria realizzata da me, anche se più artigianale.

  • Re: Fattura Elettronica - Nodo Multiplo

    21/01/2023 - Supervbnet2000 ha scritto:


    Ti ringrazio molto per l'attenzione dimostratami, ma tutte le soluzioni che proponi le ho già provate: è da diversi giorni che provo.

    Puoi provare per settimane, ma se non posti il codice non è possibile dirti dov'è l'errore.

    21/01/2023 - Supervbnet2000 ha scritto:


    A questo punto non mi resta che arrendermi all'evidenza:
    - o la libreria è troppo sofisticata per le mie scarse competenze
    - o non funziona

    Non posso dire nulla riguardo la prima ipotesi, mentre sulla seconda posso confermare che la libreria funziona, perché la uso anche io, peraltro in un servizio Web abbastanza critico per l'azienda (produce le fatture elettroniche XML a partire dai dati di diversi gestionali verticalizzati).

    21/01/2023 - Supervbnet2000 ha scritto:


    ed in ogni caso, credo che sia scarsamente documentata.

    Si tratta di un banale modello a oggetti che ricalca la struttura tipica del file XML delle Fatture Elettroniche: per sapere quali dati e con che regole vanno specificati, basta la documentazione (e lo Schema) dell'Agenzia delle Entrate.

    Il vantaggio che fornisce questa libreria è solamente quello di lavorare con oggetti piuttosto che con nodi XML e ottenere il file in modo automatico (che comunque è una buona astrazione).

    Si tratta quindi di liste e oggetti DTO, niente di più, per cui non è che occorra chissà quale documentazione.

    Detto questo, alcuni esempi sul sito ufficiale si trovano comunque ed è fornita con sorgente, per cui…

    21/01/2023 - Supervbnet2000 ha scritto:


    Come si faccia ad inserire più righe non è dato sapere.

    Sono in disaccordo, perché come già detto, uso la libreria e funziona, quindi l'errore è senz'altro nel tuo codice.

    Tu dici di aver provato, ma non pubblichi nulla, quindi in buona sostanza siamo in presenza di due codici corretti, il mio e il tuo, di cui non si sa nulla del tuo, con il tuo parere che non funziona e la mia esperienza positiva.

    Si vede che la libreria dietro le quinte implementa un algoritmo di AI che fa dei favoritismi, che ti posso dire… :)

    21/01/2023 - Supervbnet2000 ha scritto:


    Grazie ancora e scusami per il tempo che ti ho fatto perdere... tornerò alla vecchia libreria realizzata da me, anche se più artigianale.

    Usare librerie di terze parti è una cosa abbastanza naturale nel processo di sviluppo: se di fronte a una difficoltà si evita di confrontarsi con chi ha usato lo stesso strumento con successo e si abbandona lo strumento, non credo sia la strada per evolversi, ma che dire… ognuno fa le proprie scelte su cui non posso sindacare (pur avendo una mia opinione a riguardo). :)

    Buona fortuna!

Devi accedere o registrarti per scrivere nel forum
5 risposte