Vb6 fattura elettronica impostazione versione e attributi

di il
9 risposte

Vb6 fattura elettronica impostazione versione e attributi

Salve,
ho un gestionale scritto in vb6 e adesso vorrei creare la fattura elettronica in xml.
ho problema a inserire i parametri per ottenere questo:
p:FatturaElettronica versione="FPR12" xmlns:ds="http://www.w3.org/2000/09/xmldsi#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd">

sto usando questo metodo:
Dim node
Set objDom = New DOMDocument
Set node = objDom.createProcessingInstruction("xml", "version='1.0' encoding ='UTF-8'")

objDom.appendChild node
Set node = Nothing

'crea root element
Dim root As IXMLDOMElement
Set root = objDom.createElement("fatturaelettronica")
objDom.setProperty "SelectionNamespaces", ""
'root.setAttribute "xmlns:xsi", "http://www.w3.org/2001/XMlSchema-instanc"
'root.setAttribute "p:FatturaElettronica versione=", "FPR12", " xmlns:ds=http://www.w3.org/2000/09/xmldsi#)"


ultime righe ovviamente sono prove sbagliate,
come continuare?
grazie

9 Risposte

  • Re: Vb6 fattura elettronica impostazione versione e attributi

    Io ho proceduto come segue:
            ' inzia a creare l'XML
            ' create dom document
            Set objDoc = XMLCreateDoc
            ' Create a processing instruction targeted for xml.
            XMLCreateProcessingInstruction objDoc, "xml", "version='1.0' encoding='UTF-8'"
            ' <p:FatturaElettronica>
            Set objNodeRoot = XMLCreateNode(objDoc, Nothing, "ns2:FatturaElettronica")
                ' <versione>
                XMLCreateAttribute objDoc, objNodeRoot, "versione", XMLInvoiceType
                ' <xmlns:ds>
                XMLCreateAttribute objDoc, objNodeRoot, "xmlns:ds", "http://www.w3.org/2000/09/xmldsig#"
                ' <xmlns:p>
                XMLCreateAttribute objDoc, objNodeRoot, "xmlns:ns2", "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"
                ' <xmlns:xsi>
                XMLCreateAttribute objDoc, objNodeRoot, "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"
                ' <xsi:schemaLocation>
                XMLCreateAttribute objDoc, objNodeRoot, "xsi:schemaLocation", "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 fatturaordinaria_v1.2.xsd "
                ' ---- XML header ----
                ' <FatturaElettronicaHeader>
                Set objNodeHeader = XMLCreateNode(objDoc, objNodeRoot, "FatturaElettronicaHeader")
                    ' <DatiTrasmissione>
                    Set objNode1 = XMLCreateNode(objDoc, objNodeHeader, "DatiTrasmissione")
                        ' <IdTrasmittente>
                        Set objNode2 = XMLCreateNode(objDoc, objNode1, "IdTrasmittente")
                            XMLCreateNode objDoc, objNode2, "IdPaese", dbField2Var(ADOrsXMLM1.Fields("ISOStato"), dbCTString)
                            XMLCreateNode objDoc, objNode2, "IdCodice", dbField2Var(ADOrsXMLM1.Fields("CodFisc"), dbCTString)
                        ' <ProgressivoInvio>
                        Set objNode2 = XMLCreateNode(objDoc, objNode1, "ProgressivoInvio", ConvStr(IDFatturaPA, 5))
                        ' <FormatoTrasmissione>
                        Set objNode2 = XMLCreateNode(objDoc, objNode1, "FormatoTrasmissione", XMLInvoiceType)
                        ' <CodiceDestinatario>
                        Set objNode2 = XMLCreateNode(objDoc, objNode1, "CodiceDestinatario", dbField2Var(ADOrsFPA.Fields("GovCodiceDestinatario"), dbCTString))
                        ' <ContattiTrasmittente>
                        Set objNode2 = XMLCreateNode(objDoc, objNode1, "ContattiTrasmittente")
                            XMLCreateNode objDoc, objNode2, "Telefono", GetNum(dbField2Var(ADOrsXMLM1.Fields("Telefono1"), dbCTString))
                            XMLCreateNode objDoc, objNode2, "Email", dbField2Var(ADOrsXMLM1.Fields("Email"), dbCTString)
                        ' <PECDestinatario>
                        If dbField2Var(ADOrsFPA.Fields("GovCodiceDestinatario"), dbCTString) = "0000000" Then
                            Set objNode2 = XMLCreateNode(objDoc, objNode1, "PECDestinatario", dbField2Var(ADOrsFPA.Fields("PEC"), dbCTString))
                        End If
    ...
    ...
    ...


    ' ------------------------------------------------
    ' sub per creazione file XML
    ' testate e funzionanti - 23 ago 2014
    '
    ' http://www.vbforums.com/showthread.php?538334-Child-Elements-(XML-with-VB6)
    '
    Private Function XMLCreateDoc()
        ' crea il documento XML
        Dim objDoc
        Set objDoc = New DOMDocument60
        objDoc.async = False
        objDoc.validateOnParse = False
        objDoc.resolveExternals = False
        objDoc.preserveWhiteSpace = True
        Set XMLCreateDoc = objDoc
    End Function
    
    Private Sub XMLCreateProcessingInstruction(XMLDoc As DOMDocument60, InstrName As String, InstrValue As String)
        Dim objNode As IXMLDOMProcessingInstruction
    
        Set objNode = XMLDoc.createProcessingInstruction(InstrName, InstrValue)
        XMLDoc.appendChild objNode
        Set objNode = Nothing
    End Sub
    
    Private Sub XMLCreateComment(XMLDoc As DOMDocument60, ByVal CommentText As String)
        Dim objComment As IXMLDOMComment
        
        Set objComment = XMLDoc.createComment(CommentText)
        XMLDoc.appendChild objComment
        Set objComment = Nothing
    End Sub
    
    Private Function XMLCreateNode(XMLDoc As DOMDocument60, ParentNode As IXMLDOMNode, NodeName As String, Optional NodeValue As String = "") As IXMLDOMNode
        ' crea un nodo nel documento XML
        Dim objNode As IXMLDOMNode
        
        'Create the node
        Set objNode = XMLDoc.createElement(NodeName)
        'Add the text if it has any
        If NodeValue <> "" Then
            objNode.text = NodeValue
        End If
        'Add the node to the document
        If ParentNode Is Nothing Then
            XMLDoc.appendChild objNode
        Else
            ParentNode.appendChild objNode
        End If
        Set XMLCreateNode = objNode
        Set objNode = Nothing
    End Function
    
    Private Sub XMLCreateAttribute(XMLDoc As DOMDocument60, oNode As IXMLDOMNode, AttribName As String, AttribValue As String)
        Dim oElement As IXMLDOMElement
    
        Set oElement = oNode
        oElement.setAttribute AttribName, AttribValue
        Set oElement = Nothing
    End Sub
    
    Private Sub XMLFormatDoc(ByVal xml_doc As DOMDocument60)
        ' Add formatting to the document.
        XMLFormatNode xml_doc.documentElement, 0
    End Sub
    
    Private Sub XMLFormatNode(ByVal node As IXMLDOMNode, ByVal indent As Integer)
        ' Add formatting to this element. Indent it and add a
        ' carriage return before its children. Then recursively
        ' format the children with increased indentation.
        Dim child As IXMLDOMNode
        Dim text_only As Boolean
    
        ' Do nothing if this is a text node.
        If TypeOf node Is IXMLDOMText Then Exit Sub
        ' See if this node contains only text.
        text_only = True
        If node.hasChildNodes Then
            For Each child In node.childNodes
                If Not (TypeOf child Is IXMLDOMText) Then
                    text_only = False
                    Exit For
                End If
            Next child
        End If
        ' Process child nodes.
        If node.hasChildNodes Then
            ' Add a carriage return before the children.
            If Not text_only Then
                node.insertBefore node.ownerDocument.createTextNode(vbCrLf), node.firstChild
            End If
            ' Format the children.
            For Each child In node.childNodes
                XMLFormatNode child, indent + 2
            Next child
        End If
        ' Format this element.
        If indent > 0 Then
            ' Indent before this element.
            node.ParentNode.insertBefore node.ownerDocument.createTextNode(Space$(indent)), node
            ' Indent after the last child node.
            If Not text_only Then node.appendChild node.ownerDocument.createTextNode(Space$(indent))
            ' Add a carriage return after this node.
            If node.nextSibling Is Nothing Then
                node.ParentNode.appendChild node.ownerDocument.createTextNode(vbCrLf)
            Else
                node.ParentNode.insertBefore node.ownerDocument.createTextNode(vbCrLf), node.nextSibling
            End If
        End If
    End Sub
    ' ---------------------------------------
    
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    Personalmente ribadisco il mio suggerimento, cioè NON usare librerie o quello che si vuole con strutture dati "strane", ma banalmente compilare una lista di stringhe.
    Mantenendo cioè il controllo al 100% di cosa viene scritto.
    Si risparmia tantissimo tempo
    Con una manciata di banali funzioncine diventa tutto più chiaro
    
       g_fatturaScriviRiga(0,fattura,'<FatturaElettronicaHeader>');
    
           g_fatturaScriviRiga(4,fattura,'<DatiTrasmissione>');
               g_fatturaScriviRiga(8,fattura,'<IdTrasmittente>');
                   g_fatturaScriviTag(12,fattura,'IdPaese','IT');
    
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    Io ho fatto una cosa più semplice e artiginale, ma funziona alla grande
    • ' costruisco il nome del file
      nomefile = nomefilebase & "_" & dummylet & ".XML"
      nome_completo_fattura = nome_fattura & "_" & dummylet & ".XML"
      Me.filedestXML.Text = nomefile
      Set ts = fso.OpenTextFile(Me.filedestXML.Text, ForWriting, True)

      rigaprint = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<?xml-stylesheet type=""text/xsl"" href=""fatturaordinaria_v1.2.1.xsl"" ?>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<p:FatturaElettronica xmlns:ds=""http://www.w3.org/2000/09/xmldsi#"" xmlns:p=""http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2"" versione=""FPR12""> "
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<FatturaElettronicaHeader>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<DatiTrasmissione>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<IdTrasmittente>"
      ts.Write Trim(rigaprint) & vbLf
      rigaprint = "<IdPaese>IT</IdPaese>"
      ts.Write Trim(rigaprint) & vbLf
      rigaprint = "<IdCodice>" & Me.IDtrasmittentetxt.Text & "</IdCodice>"
      ts.Write Trim(rigaprint) & vbLf
      rigaprint = "</IdTrasmittente>"
      ts.Write Trim(rigaprint) & vbLf

      dummy = Format(jndex, "#0000")
      Me.ultimonumero_progressivoinviotxt.Text = dummy

      ' aggiorno la listview

      Me.listaemail.ListItems(i).ListSubItems(6) = dummylet
      Me.listaemail.ListItems(i).ListSubItems(8) = Me.filedestXML.Text
      Me.listaemail.ListItems(i).ListSubItems(9) = nome_completo_fattura



      rigaprint = "<ProgressivoInvio>" & dummylet & "</ProgressivoInvio>"
      ts.Write Trim(rigaprint) & vbLf
      rigaprint = "<FormatoTrasmissione>FPR12</FormatoTrasmissione>"
      ts.Write Trim(rigaprint) & vbLf

      query = "select * from " & nomefile1 & " where prog1= " & Me.listaemail.ListItems(i).ListSubItems(2) & " and eserfa= '" & Me.Eserctxt.Text & "' "
      rshead.Open query, cn, adOpenForwardOnly, adLockReadOnly ' recordset testata

      query = "SELECT * from clienti where cod= " & rshead!CODC1 & " "
      rsCLIENTI.Open query, cn, adOpenForwardOnly, adLockReadOnly ' recordset testata

      tiesenz = 0
      descresenz = ""
      If rshead!tiesenz > 0 Then

      query = "select * from esenzioni where codez=" & rshead!tiesenz & " "
      rstiesenz.Open query, cn, adOpenForwardOnly, adLockReadOnly ' recordset testata
      If Not rstiesenz.EOF Then
      tiesenz = rstiesenz!tie2
      descresenz = rstiesenz!descr
      End If
      rstiesenz.Close
      End If

      ' N1 escluse ex art.15
      ' N2 non soggette
      ' N3 non imponibili
      ' N4 esenti
      ' N5 regime del margine / IVA non esposta in fattura
      ' N6 inversione contabile (per le operazioni in reverse charge ovvero nei casi di autofatturazione per
      ' acquisti extra UE di servizi ovvero per importazioni di beni nei soli casi previsti)
      ' N7 IVA assolta in altro stato UE (vendite a distanza ex art. 40 commi 3 e 4 e art. 41 comma 1 lett. b, DL
      ' 331/93; prestazione di servizi di telecomunicazioni,
      tipoNatura = "??"
      If tiesenz = 1 Then tipoNatura = "N3"
      If tiesenz = 2 Then tipoNatura = "N2"
      If tiesenz = 0 Then tipoNatura = "N4"
      If tiesenz = 4 Then tipoNatura = "N1"



      dummyp = replacenull(rsCLIENTI!mailperfatturaelettronica, "")

      ha_sdi = False
      dummy = "0000000"
      sdi = Trim(replacenull(rsCLIENTI!IDENTIFICATIVO_FAEL, ""))
      If Len(sdi) = 7 Then dummy = sdi

      rigaprint = "<CodiceDestinatario>" & dummy & "</CodiceDestinatario>"
      ts.Write Trim(rigaprint) & vbLf
      ha_sdi = True
      If ha_sdi = False Then
      If dummyp <> "" Then
      rigaprint = "<PECDestinatario>" & dummyp & "</PECDestinatario>"
      ts.Write Trim(rigaprint) & vbLf
      End If
      End If
      rigaprint = "</DatiTrasmissione>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<CedentePrestatore>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<DatiAnagrafici>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<IdFiscaleIVA>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<IdPaese>IT</IdPaese>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<IdCodice>" & Piva & "</IdCodice>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "</IdFiscaleIVA>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<Anagrafica>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<Denominazione>" & UCase(nomeutente) & "</Denominazione>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "</Anagrafica>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<RegimeFiscale>RF01</RegimeFiscale>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "</DatiAnagrafici>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<Sede>"
      ts.Write Trim(rigaprint) & vbLf

      rigaprint = "<Indirizzo>" & viautente & "</Indirizzo>"
      ts.Write Trim(rigaprint) & vbLf
    ecc. ecc
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    +m2+ ha scritto:


    Personalmente ribadisco il mio suggerimento, cioè NON usare librerie o quello che si vuole con strutture dati "strane", ma banalmente compilare una lista di stringhe.
    Mantenendo cioè il controllo al 100% di cosa viene scritto.
    Si risparmia tantissimo tempo
    Con una manciata di banali funzioncine diventa tutto più chiaro
    
       g_fatturaScriviRiga(0,fattura,'<FatturaElettronicaHeader>');
    
           g_fatturaScriviRiga(4,fattura,'<DatiTrasmissione>');
               g_fatturaScriviRiga(8,fattura,'<IdTrasmittente>');
                   g_fatturaScriviTag(12,fattura,'IdPaese','IT');
    
    e c'hai ragione anche stavolta
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    ...aggiungo inoltre una decodificona
    
    function g_decodificacampofel(i_serie:string;i_campo:string):string;
    begin
    
       result:=''  ;
       if i_serie='' then exit;
       if i_campo='' then Exit;
       i_serie:=uppercase(i_serie);
       
       i_campo:=uppercase(i_campo);
    
       if i_serie='RF' then
       begin
       if i_campo='RF01' then result:='Ordinario';
    if i_campo='RF02' then result:='Contribuenti minimi (art.1, c.96-117, L. 244/07)';
    if i_campo='RF04' then result:='Agricoltura e attività connesse e pesca (artt.34 e 34-bis, DPR 633/72)';
    if i_campo='RF05' then result:='Vendita sali e tabacchi (art.74, c.1, DPR. 633/72)';
    if i_campo='RF06' then result:='Commercio fiammiferi (art.74, c.1, DPR  633/72)';
    if i_campo='RF07' then result:='Editoria (art.74, c.1, DPR  633/72)';
    if i_campo='RF08' then result:='Gestione servizi telefonia pubblica (art.74, c.1, DPR 633/72)';
    if i_campo='RF09' then result:='Rivendita documenti di trasporto pubblico e di sosta (art.74, c.1, DPR  633/72)';
    if i_campo='RF10' then result:='Intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72 (art.74, c.6, DPR 633/72)';
    if i_campo='RF11' then result:='Agenzie viaggi e turismo (art.74-ter, DPR 633/72)';
    if i_campo='RF12' then result:='Agriturismo (art.5, c.2, L. 413/91)';
    if i_campo='RF13' then result:='Vendite a domicilio (art.25-bis, c.6, DPR  600/73)';
    if i_campo='RF14' then result:='Rivendita beni usati, oggetti d’arte, d’antiquariato o da collezione (art.36, DL 41/95)';
    if i_campo='RF15' then result:='Agenzie di vendite all’asta di oggetti d’arte, antiquariato o da collezione (art.40-bis, DL 41/95)';
    if i_campo='RF16' then result:='IVA per cassa P.A. (art.6, c.5, DPR 633/72)';
    if i_campo='RF17' then result:='IVA per cassa (art. 32-bis, DL 83/2012)';
    if i_campo='RF18' then result:='Altro';
    if i_campo='RF19' then result:='Regime forfettario (art.1, c.54-89, L. 190/2014)';
       end;
    
       if i_serie='TC' then
       begin
    if i_campo='TC01' then result:='Cassa nazionale previdenza e assistenza avvocati e procuratori legali';
    if i_campo='TC02' then result:='Cassa previdenza dottori commercialisti';
    if i_campo='TC03' then result:='Cassa previdenza e assistenza geometri';
    if i_campo='TC04' then result:='Cassa nazionale previdenza e assistenza ingegneri e architetti liberi professionisti';
    if i_campo='TC05' then result:='Cassa nazionale del notariato';
    if i_campo='TC06' then result:='Cassa nazionale previdenza e assistenza ragionieri e periti commerciali';
    if i_campo='TC07' then result:='Ente nazionale assistenza agenti e rappresentanti di commercio (ENASARCO)';
    if i_campo='TC08' then result:='Ente nazionale previdenza e assistenza consulenti del lavoro (ENPACL)';
    if i_campo='TC09' then result:='Ente nazionale previdenza e assistenza medici (ENPAM)';
    if i_campo='TC10' then result:='Ente nazionale previdenza e assistenza farmacisti (ENPAF)';
    if i_campo='TC11' then result:='Ente nazionale previdenza e assistenza veterinari (ENPAV)';
    if i_campo='TC12' then result:='Ente nazionale previdenza e assistenza impiegati dell''agricoltura (ENPAIA)';
    if i_campo='TC13' then result:='Fondo previdenza impiegati imprese di spedizione e agenzie marittime';
    if i_campo='TC14' then result:='Istituto nazionale previdenza giornalisti italiani (INPGI)';
    if i_campo='TC15' then result:='Opera nazionale assistenza orfani sanitari italiani (ONAOSI)';
    if i_campo='TC16' then result:='Cassa autonoma assistenza integrativa giornalisti italiani (CASAGIT)';
    if i_campo='TC17' then result:='Ente previdenza periti industriali e periti industriali laureati (EPPI)';
    if i_campo='TC18' then result:='Ente previdenza e assistenza pluricategoriale (EPAP)';
    if i_campo='TC19' then result:='Ente nazionale previdenza e assistenza biologi (ENPAB)';
    if i_campo='TC20' then result:='Ente nazionale previdenza e assistenza professione infermieristica (ENPAPI)';
    if i_campo='TC21' then result:='Ente nazionale previdenza e assistenza psicologi (ENPAP)';
    if i_campo='TC22' then result:='INPS';
       end;
    
       if i_serie='MP' then
       begin
    if i_campo='MP01' then result:='contanti';
    if i_campo='MP02' then result:='assegno';
    if i_campo='MP03' then result:='assegno circolare';
    if i_campo='MP04' then result:='contanti presso Tesoreria';
    if i_campo='MP05' then result:='bonifico';
    if i_campo='MP06' then result:='vaglia cambiario';
    if i_campo='MP07' then result:='bollettino bancario';
    if i_campo='MP08' then result:='carta di pagamento';
    if i_campo='MP09' then result:='RID';
    if i_campo='MP10' then result:='RID utenze';
    if i_campo='MP11' then result:='RID veloce';
    if i_campo='MP12' then result:='RIBA';
    if i_campo='MP13' then result:='MAV';
    if i_campo='MP14' then result:='quietanza erario';
    if i_campo='MP15' then result:='giroconto su conti di contabilità speciale';
    if i_campo='MP16' then result:='domiciliazione bancaria';
    if i_campo='MP17' then result:='domiciliazione postale';
    if i_campo='MP18' then result:='bollettino di c/c postale';
    if i_campo='MP19' then result:='SEPA Direct Debit';
    if i_campo='MP20' then result:='SEPA Direct Debit CORE';
    if i_campo='MP21' then result:='SEPA Direct Debit B2B';
    if i_campo='MP22' then result:='Trattenuta su somme già riscosse';
       end;
       if i_serie='RT' then
       begin
    if i_campo='RT01' then result:='ritenuta persona fisica';
    if i_campo='RT02' then result:='ritenuta persona giuridica';
    end;
       if i_serie='TD' then
       begin
    if i_campo='TD01' then result:='fattura';
    if i_campo='TD02' then result:='acconto/anticipo su fattura';
    if i_campo='TD03' then result:='acconto/anticipo su parcella';
    if i_campo='TD04' then result:='nota di credito';
    if i_campo='TD05' then result:='nota di debito';
    if i_campo='TD06' then result:='parcella';
       end;
    
       if i_serie='N' then
       begin
    if i_campo='N1' then result:='escluse ex art. 15';
    if i_campo='N2' then result:='non soggette';
    if i_campo='N3' then result:='non imponibili';
    if i_campo='N4' then result:='esenti';
    if i_campo='N5' then result:='regime del margine / IVA non esposta in fattura';
    if i_campo='N6' then result:='inversione contabile (per le operazioni in reverse charge ovvero nei casi di autofatturazione per acquisti extra UE di servizi ovvero per importazioni di beni nei soli casi previsti)';
    if i_campo='N7' then result:='IVA assolta in altro stato UE (vendite a distanza ex art. 40 c. 3 e 4 e art. 41 c. 1 lett. b,  DL 331/93; prestazione di servizi di telecomunicazioni, tele-radiodiffusione ed elettronici ex art. 7-sexies lett. f, g, art. 74-sexies DPR 633/72)';
    if i_campo='TP01' then result:='pagamento a rate';
    if i_campo='TP02' then result:='pagamento completo';
    if i_campo='TP03' then result:='anticipo';
       end;
    end;
    
    In sostanza se il risultato è vuoto c'è qualcosa che non va, altrimenti sai che esiste il codice (questo è già bene), e magari te lo pigli pure decodificato.

    Se sembra codice "strano" è perchè stato fatto con una macro


    L'uso è ovviamente banale del tipo
    
      lamiabellatiponatura:=g_decodificacampofel('N','N1');
    
    Ai "microsoffari" trasformarla in VB
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    +m2+ ha scritto:


    ...aggiungo inoltre una decodificona
    
    function g_decodificacampofel(i_serie:string;i_campo:string):string;
    begin
    
       result:=''  ;
       if i_serie='' then exit;
       if i_campo='' then Exit;
       i_serie:=uppercase(i_serie);
       
       i_campo:=uppercase(i_campo);
    
       if i_serie='RF' then
       begin
       if i_campo='RF01' then result:='Ordinario';
    if i_campo='RF02' then result:='Contribuenti minimi (art.1, c.96-117, L. 244/07)';
    if i_campo='RF04' then result:='Agricoltura e attività connesse e pesca (artt.34 e 34-bis, DPR 633/72)';
    if i_campo='RF05' then result:='Vendita sali e tabacchi (art.74, c.1, DPR. 633/72)';
    if i_campo='RF06' then result:='Commercio fiammiferi (art.74, c.1, DPR  633/72)';
    if i_campo='RF07' then result:='Editoria (art.74, c.1, DPR  633/72)';
    if i_campo='RF08' then result:='Gestione servizi telefonia pubblica (art.74, c.1, DPR 633/72)';
    if i_campo='RF09' then result:='Rivendita documenti di trasporto pubblico e di sosta (art.74, c.1, DPR  633/72)';
    if i_campo='RF10' then result:='Intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72 (art.74, c.6, DPR 633/72)';
    if i_campo='RF11' then result:='Agenzie viaggi e turismo (art.74-ter, DPR 633/72)';
    if i_campo='RF12' then result:='Agriturismo (art.5, c.2, L. 413/91)';
    if i_campo='RF13' then result:='Vendite a domicilio (art.25-bis, c.6, DPR  600/73)';
    if i_campo='RF14' then result:='Rivendita beni usati, oggetti d’arte, d’antiquariato o da collezione (art.36, DL 41/95)';
    if i_campo='RF15' then result:='Agenzie di vendite all’asta di oggetti d’arte, antiquariato o da collezione (art.40-bis, DL 41/95)';
    if i_campo='RF16' then result:='IVA per cassa P.A. (art.6, c.5, DPR 633/72)';
    if i_campo='RF17' then result:='IVA per cassa (art. 32-bis, DL 83/2012)';
    if i_campo='RF18' then result:='Altro';
    if i_campo='RF19' then result:='Regime forfettario (art.1, c.54-89, L. 190/2014)';
       end;
    
       if i_serie='TC' then
       begin
    if i_campo='TC01' then result:='Cassa nazionale previdenza e assistenza avvocati e procuratori legali';
    if i_campo='TC02' then result:='Cassa previdenza dottori commercialisti';
    if i_campo='TC03' then result:='Cassa previdenza e assistenza geometri';
    if i_campo='TC04' then result:='Cassa nazionale previdenza e assistenza ingegneri e architetti liberi professionisti';
    if i_campo='TC05' then result:='Cassa nazionale del notariato';
    if i_campo='TC06' then result:='Cassa nazionale previdenza e assistenza ragionieri e periti commerciali';
    if i_campo='TC07' then result:='Ente nazionale assistenza agenti e rappresentanti di commercio (ENASARCO)';
    if i_campo='TC08' then result:='Ente nazionale previdenza e assistenza consulenti del lavoro (ENPACL)';
    if i_campo='TC09' then result:='Ente nazionale previdenza e assistenza medici (ENPAM)';
    if i_campo='TC10' then result:='Ente nazionale previdenza e assistenza farmacisti (ENPAF)';
    if i_campo='TC11' then result:='Ente nazionale previdenza e assistenza veterinari (ENPAV)';
    if i_campo='TC12' then result:='Ente nazionale previdenza e assistenza impiegati dell''agricoltura (ENPAIA)';
    if i_campo='TC13' then result:='Fondo previdenza impiegati imprese di spedizione e agenzie marittime';
    if i_campo='TC14' then result:='Istituto nazionale previdenza giornalisti italiani (INPGI)';
    if i_campo='TC15' then result:='Opera nazionale assistenza orfani sanitari italiani (ONAOSI)';
    if i_campo='TC16' then result:='Cassa autonoma assistenza integrativa giornalisti italiani (CASAGIT)';
    if i_campo='TC17' then result:='Ente previdenza periti industriali e periti industriali laureati (EPPI)';
    if i_campo='TC18' then result:='Ente previdenza e assistenza pluricategoriale (EPAP)';
    if i_campo='TC19' then result:='Ente nazionale previdenza e assistenza biologi (ENPAB)';
    if i_campo='TC20' then result:='Ente nazionale previdenza e assistenza professione infermieristica (ENPAPI)';
    if i_campo='TC21' then result:='Ente nazionale previdenza e assistenza psicologi (ENPAP)';
    if i_campo='TC22' then result:='INPS';
       end;
    
       if i_serie='MP' then
       begin
    if i_campo='MP01' then result:='contanti';
    if i_campo='MP02' then result:='assegno';
    if i_campo='MP03' then result:='assegno circolare';
    if i_campo='MP04' then result:='contanti presso Tesoreria';
    if i_campo='MP05' then result:='bonifico';
    if i_campo='MP06' then result:='vaglia cambiario';
    if i_campo='MP07' then result:='bollettino bancario';
    if i_campo='MP08' then result:='carta di pagamento';
    if i_campo='MP09' then result:='RID';
    if i_campo='MP10' then result:='RID utenze';
    if i_campo='MP11' then result:='RID veloce';
    if i_campo='MP12' then result:='RIBA';
    if i_campo='MP13' then result:='MAV';
    if i_campo='MP14' then result:='quietanza erario';
    if i_campo='MP15' then result:='giroconto su conti di contabilità speciale';
    if i_campo='MP16' then result:='domiciliazione bancaria';
    if i_campo='MP17' then result:='domiciliazione postale';
    if i_campo='MP18' then result:='bollettino di c/c postale';
    if i_campo='MP19' then result:='SEPA Direct Debit';
    if i_campo='MP20' then result:='SEPA Direct Debit CORE';
    if i_campo='MP21' then result:='SEPA Direct Debit B2B';
    if i_campo='MP22' then result:='Trattenuta su somme già riscosse';
       end;
       if i_serie='RT' then
       begin
    if i_campo='RT01' then result:='ritenuta persona fisica';
    if i_campo='RT02' then result:='ritenuta persona giuridica';
    end;
       if i_serie='TD' then
       begin
    if i_campo='TD01' then result:='fattura';
    if i_campo='TD02' then result:='acconto/anticipo su fattura';
    if i_campo='TD03' then result:='acconto/anticipo su parcella';
    if i_campo='TD04' then result:='nota di credito';
    if i_campo='TD05' then result:='nota di debito';
    if i_campo='TD06' then result:='parcella';
       end;
    
       if i_serie='N' then
       begin
    if i_campo='N1' then result:='escluse ex art. 15';
    if i_campo='N2' then result:='non soggette';
    if i_campo='N3' then result:='non imponibili';
    if i_campo='N4' then result:='esenti';
    if i_campo='N5' then result:='regime del margine / IVA non esposta in fattura';
    if i_campo='N6' then result:='inversione contabile (per le operazioni in reverse charge ovvero nei casi di autofatturazione per acquisti extra UE di servizi ovvero per importazioni di beni nei soli casi previsti)';
    if i_campo='N7' then result:='IVA assolta in altro stato UE (vendite a distanza ex art. 40 c. 3 e 4 e art. 41 c. 1 lett. b,  DL 331/93; prestazione di servizi di telecomunicazioni, tele-radiodiffusione ed elettronici ex art. 7-sexies lett. f, g, art. 74-sexies DPR 633/72)';
    if i_campo='TP01' then result:='pagamento a rate';
    if i_campo='TP02' then result:='pagamento completo';
    if i_campo='TP03' then result:='anticipo';
       end;
    end;
    
    In sostanza se il risultato è vuoto c'è qualcosa che non va, altrimenti sai che esiste il codice (questo è già bene), e magari te lo pigli pure decodificato.

    Se sembra codice "strano" è perchè stato fatto con una macro


    L'uso è ovviamente banale del tipo
    
      lamiabellatiponatura:=g_decodificacampofel('N','N1');
    
    Ai "microsoffari" trasformarla in VB
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    Se sapevo che l'avevi fatta non perdevo tempo a farne una uguale in vb6 e te la chiedevo
    a proposito aggiorna la parte TD ed aggiungici TD20 autofattura
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    dario46 ha scritto:


    Se sapevo che l'avevi fatta non perdevo tempo a farne una uguale in vb6 e te la chiedevo
    a proposito aggiorna la parte TD ed aggiungici TD20 autofattura
    non sono convintissimo, mi sembra l'abbia messo assoinvoice, ma non ho letto la nuova documentazione (con la mia pigrizia ci vorranno mesi)
  • Re: Vb6 fattura elettronica impostazione versione e attributi

    Se vai a pag 74 di questo link trovi l'indicazione TD20



    ora non hai più scuse
Devi accedere o registrarti per scrivere nel forum
9 risposte