Fatturazione elettronica B2B

di Vittorio1946 il
1158 risposte

1158 Risposte - Pagina 25

  • .
  • jugin ha scritto:


    ettore56 ha scritto:


    jugin ha scritto:


    ...grazie, nel frattempo ne avevo fatta una molto più drastica
    che sostituiva tutti i caratteri sospetti con uno spazio...
    Ti consiglio di creare una tabella, che così potrai sempre aggiornare i dati senza intervenire sul codice, nella quale posizionerai in una colonna tutti i caratteri speciali ed in un'altra colonna tutti i corrispondenti caratteri validi.
  • ettore56 ha scritto:


    jugin ha scritto:


    ettore56 ha scritto:


    ...grazie, nel frattempo ne avevo fatta una molto più drastica
    che sostituiva tutti i caratteri sospetti con uno spazio...
    Ti consiglio di creare una tabella, che così potrai sempre aggiornare i dati senza intervenire sul codice, nella quale posizionerai in una colonna tutti i caratteri speciali ed in un'altra colonna tutti i corrispondenti caratteri validi.
    Potrei anche modificare il componente della classe Tedit...
    ma ora vedo di finire il pezzo poi lucido e spazzolo
  • jugin ha scritto:


    ettore56 ha scritto:


    jugin ha scritto:


    Nella creazione dei file XML ho incontrato errori quando nelle stringhe tipo ragione sociale cliente
    si trovano caratteri come la e commerciale.
    Immagino che anche altri caratteri (" ' < > ; + ) creino dei problemi ma vorrei una lista per poterli escludere tutti
    che non trovo.
    Qualcuno ha risolto il problema ?
    Devi sostituire tutti i "caratteri speciali"
    ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝßàáâãäåæçèéêë&ìíîïñòóôõöùúûüýÿ
    con corrispondenti caratteri validi
    AAAAAAACEEEEIIIIDNOOOOOUUUUYBaaaaaaaceeeeeiiiinooooouuuuyy
    grazie, nel frattempo ne avevo fatta una molto più drastica
    che sostituiva tutti i caratteri sospetti con uno spazio

    function StripStr(cString:string):string;
    var
    v_inp: integer;
    strout: string;
    ty: integer;
    lstrinp: integer;

    begin
    v_inp:=0;
    strout:='';
    ty:=0;
    lstrinp:=length(cString);
    for ty:=1 to lstrinp do begin
    v_inp:=ord(cString[ty]);
    case v_inp of
    1..47: strout:=strout+chr(32);
    123..255: strout:=strout+chr(32);
    58..64: strout:=strout+chr(32);
    91..96: strout:=strout+chr(32);
    else
    strout:=strout+cString[ty];
    end;
    end;
    result:=strout;
    end;

    Io ho optato per una soluzione più soft: ognuno di questi caratteri lo sostituisco con la corrispondente sequenza di escape, in questo modo la descrizione rimane "fedele". Ad es° "à" diventa "&#224;" e così via.
  • ettore56 ha scritto:


    Ti consiglio di creare una tabella, che così potrai sempre aggiornare i dati senza intervenire sul codice, nella quale posizionerai in una colonna tutti i caratteri speciali ed in un'altra colonna tutti i corrispondenti caratteri validi.
    Concordo con Ettore,
    così facendo, ogni qualvolta devi generare un xml, potrai far riferimento sempre alla stessa tabella per le conversioni.
  • [Neapolis] ha scritto:


    ettore56 ha scritto:


    Ti consiglio di creare una tabella, che così potrai sempre aggiornare i dati senza intervenire sul codice, nella quale posizionerai in una colonna tutti i caratteri speciali ed in un'altra colonna tutti i corrispondenti caratteri validi.
    Concordo con Ettore,
    così facendo, ogni qualvolta devi generare un xml, potrai far riferimento sempre alla stessa tabella per le conversioni.
    
    /// nota: char è un po' generico, tipicamente diventano WideChar. Dipende dalla versione del compilatore (>=D2009)
    const
       arrayconversione:array [161..255] of Char= ('¡','¢','£','¤','¥','¦','§','¨','©','ª','«','¬','­','®','¯','°','±','²','³','´','ì','¶','·','¸','¹','º','»','¼','½','¾','¿','À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü','ý','þ','ÿ');
    function g_purgaxml(i_stringa:string):string;
    var
       i:Integer;
    begin
       Result:=i_stringa;
       if i_stringa='' then Exit;
    
       for i:=Low(arrayconversione) to High(arrayconversione) do
           Result:=StringReplace(result,arrayconversione[i],'&#'+inttostr(i)+';',[rfreplaceall]);
    
       Result:=StringReplace(result,'<','<',[rfreplaceall]);
       Result:=StringReplace(result,'&','&',[rfreplaceall]);
       Result:=StringReplace(result,'"','"',[rfreplaceall]);
       Result:=StringReplace(result,'''','&apos;',[rfreplaceall]);
       Result:=StringReplace(result,#10,' ',[rfreplaceall]);
       Result:=StringReplace(result,#13,' ',[rfreplaceall]);
    end;
    
  • Normalmente le fatture che creavo con il mio gestionale
    avevano nel corpo fatture delle righe descrittive tipo:

    D.D.T. nr. A 333 del : gg/mm/aaaa
    sotto seguivano tutte le righe del ddt con
    codice articolo, descrizione, quantità, ecc.. ecc..
    Poi una nuova riga con:
    D.D.T. nr. A 333 del : gg/mm/aaaa
    e così fino all'ultimo ddt.

    Non riesco ad inserire la riga descrittiva con D.D.T ...
    ho provato con : AltriDatiGestionali
    e anche con la riga Descrizione del cod articolo
    ma sembra che il controllo non la accetti
    perchè non in sequenza e segnala:

    Invalid content was found starting with element 'numero linea'

    Togliendo la riga descrittiva invece il file risulta corretto.

    Qualcuno ha risolto?
  • Cosa intendi per riga descrittiva? Il numero del ddt?
  • +m2+ ha scritto:


    Cosa intendi per riga descrittiva? Il numero del ddt?
    questa:
    D.D.T. nr. A 333 del : gg/mm/aaaa

    numero e data del ddt ma non uno solo

    numero e data ddt seguite dalle righe del ddt per ogni ddt
  • Hai provato a mettere quantita uno importo zero? Per simulare una riga descrittiva.
    tieni presente che i ddt andrebbero indicati con tanto di riferimento alla riga della fattura.
    Sono a casa non ho materiale disponibile in questo momento

    Tieni presente che chi riceve la fattura dovrebbe poter caricare i dati.
    cioè senza righe descrittive che rompono solo le @@.

    Tuttavia proverei anche il programma ufficiale agenzia entrate java
  • jugin ha scritto:


    Normalmente le fatture che creavo con il mio gestionale
    avevano nel corpo fatture delle righe descrittive tipo:

    D.D.T. nr. A 333 del : gg/mm/aaaa
    sotto seguivano tutte le righe del ddt con
    codice articolo, descrizione, quantità, ecc.. ecc..
    Poi una nuova riga con:
    D.D.T. nr. A 333 del : gg/mm/aaaa
    e così fino all'ultimo ddt.

    Non riesco ad inserire la riga descrittiva con D.D.T ...
    ho provato con : AltriDatiGestionali
    e anche con la riga Descrizione del cod articolo
    ma sembra che il controllo non la accetti
    perchè non in sequenza e segnala:

    Invalid content was found starting with element 'numero linea'

    Togliendo la riga descrittiva invece il file risulta corretto.

    Qualcuno ha risolto?
    Io ho risolto così:
    1) Lascio la riga descrittiva, come la realizzi anche tu, nella tabella dei dettagli fatture, ma con un flag che mi indica che è riferita al riferimento ddt (scusa il gioco di parole!).
    2) nel recordset da dove estraggo i dati per la fattura elettronica, escludo i records dove il sopracitato flag è impostato a vero.
    3) nella fattura cartacea normale continuerà ad essere presente il riferimento del dtt, mentra nella fattura elettronica quella riga non verrà importata.
    4) nella fattura elettronica vado invece a valorizzare il tag 2.1.8 <DatiDDT>, valorizzando il numero del Ddt, la data dello stesso e la riga (o le righe) del dettaglio fattura a cui si riferisce.
  • Salve a tutti. Innanzitutto grazie per le informazioni che fornite, decisamente utili.
    Volevo chiedere se esiste un software per controllare la correttezza dell'xml generato come c'era per la fattura elettronica verso la PA.
  • Leggendo questo nelle specifiche della Fe me' scappata una risata:


    <Art73>
    Indica se il documento è stato emesso secondo modalità e termini stabiliti con decreto ministeriale
    ai sensi dell'articolo 73 del DPR 633/72
    (ciò consente al cedente/prestatore l'emissione nello stesso anno di più documenti aventi stesso numero)


    ma perchè?
  • Perchè puoi avere le serie.
    F0001 del 20/08/2018
    G0001 del 20/08/2018
Devi accedere o registrarti per scrivere nel forum
1158 risposte