Fatturazione Elettronica

Moderator: Enrico Maria Giordano

Re: Fatturazione Elettronica

Postby Maurizio » Fri Oct 26, 2018 11:51 am

Totale Fattura 114.68 € pagamento 2 rate

Code: Select all  Expand view
<DatiPagamento>
<CondizioniPagamento>TP01</CondizioniPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP12</ModalitaPagamento>
<DataScadenzaPagamento>2018-12-25</DataScadenzaPagamento>
<ImportoPagamento>57.34</ImportoPagamento>
<IBAN>..........codice IBAN di chi emette ..................</IBAN>
</DettaglioPagamento>
<DettaglioPagamento>
<ModalitaPagamento>MP12</ModalitaPagamento>
<DataScadenzaPagamento>2019-01-24</DataScadenzaPagamento>
<ImportoPagamento>57.34</ImportoPagamento>
<IBAN>..........codice IBAN di chi emette ..................</IBAN>
</DettaglioPagamento>
</DatiPagamento>


Maurizio
www.nipeservice.com
User avatar
Maurizio
 
Posts: 824
Joined: Mon Oct 10, 2005 1:29 pm

Re: Fatturazione Elettronica

Postby MarcoBoschi » Fri Oct 26, 2018 2:19 pm

:D
Grazissime!
User avatar
MarcoBoschi
 
Posts: 1065
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy

Re: Fatturazione Elettronica

Postby MarcoBoschi » Fri Oct 26, 2018 2:57 pm

Ne approfitto ancora
<DatiBeniServizi>
<DettaglioLinee>
<NumeroLinea>1</NumeroLinea>
<Descrizione>Vendita del seguente materiale:</Descrizione>
<Quantita>0.00</Quantita>
<PrezzoUnitario>0.00</PrezzoUnitario>
<PrezzoTotale>0.00</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
</DettaglioLinee>

Una riga di questo tipo solamente descrittiva che segue pari passo quello che appare in fattura quindi io non la posso mettere nel file XML?
Sembra che dia errore sempre!
Vanno messe solo quelle con Quantita e prezzo maggiori di zero?

Grazie
User avatar
MarcoBoschi
 
Posts: 1065
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy

Re: Fatturazione Elettronica

Postby Maurizio » Fri Oct 26, 2018 4:29 pm

devi mettere la Quantità a 1 e IVA


Code: Select all  Expand view
<NumeroLinea>2</NumeroLinea>
<Descrizione>TESTO </Descrizione>
<Quantita>1.00</Quantita>
<UnitaMisura>N.</UnitaMisura>
<PrezzoUnitario>0.00</PrezzoUnitario>
<PrezzoTotale>0.00000</PrezzoTotale>
<AliquotaIVA>22.00</AliquotaIVA>
</DettaglioLinee>


Maurizio
User avatar
Maurizio
 
Posts: 824
Joined: Mon Oct 10, 2005 1:29 pm

Re: Fatturazione Elettronica

Postby MaxP » Sat Oct 27, 2018 2:08 pm

Salve,

per le Fatture Elettroniche tra ditte/privati NON E' OBBLIGATORIO firmare il file XML.

Codice per le scadenze

Code: Select all  Expand view

    <DatiPagamento>
      <CondizioniPagamento>TP02</CondizioniPagamento>
      <DettaglioPagamento>
        <ModalitaPagamento>MP12</ModalitaPagamento>
        <DataScadenzaPagamento>2018-05-31</DataScadenzaPagamento>
        <ImportoPagamento>305.00</ImportoPagamento>
      </DettaglioPagamento>
      <DettaglioPagamento>
        <ModalitaPagamento>MP12</ModalitaPagamento>
        <DataScadenzaPagamento>2018-06-30</DataScadenzaPagamento>
        <ImportoPagamento>305.00</ImportoPagamento>
      </DettaglioPagamento>
    </DatiPagamento>
 


ciao
User avatar
MaxP
 
Posts: 85
Joined: Thu Jul 12, 2007 2:02 pm

Re: Fatturazione Elettronica

Postby solving » Wed Nov 14, 2018 6:25 pm

Salve

per quanto riguarda il nome file xml da inviare bisogna usare un progressivo
( i famosi 5 numeri e/o caratteri di ITcodicefiscal_XXXXX.xml )
quindi partendo da 1 si arriva a 99999.

pensavo di andare oltre i soli numeri e usare un progressivo alfanumerico quando si supera il 99999.

Es. dopo il 99999 usare Lettera + 4 cifre , quindi da A0000 a A9999
poi passare da B0000 a B99999 etc....
arrivati a Z9999 passare a AA000 fino a AA999 e cosi via ( quindi lettera + lettera + 3 cifre ).

In questo modo si avra' una combinazione enorme del progressivo nome file .

Se poi si usano anche le lettere minuscole nella combinazione ( a ....z ) la quantità di generazione
aumenta.

Qualcuno ha implementato una funzione che genera questo incremento ?
ho provato alcune soluzioni ma in alcuni casi "toppano" :)

Grazie.
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: Fatturazione Elettronica

Postby solving » Mon Nov 19, 2018 3:34 pm

salve a tutti

ho trovato questo :
Code: Select all  Expand view

function getNextAlphaNumeric($str, $step = 1) {
   for ($x = 0; $x < strlen(strval($str)); $x++) {
      $ord = ord( substr(strval($str), -1 - $x, 1) );
      $nord = $ord + $step;
      if ($nord > 57 && $ord <= 57) $nord += 7;
      if ($nord > 90 && $ord <= 90) $nord += 6;
      if ($nord <= 122) {
         return substr_replace(strval($str), chr($nord), -1 - $x, 1);
      } else {
         $over = $nord - 122;
         if ($over > 62) {
            $step = floor( $over / 62 ) + 1;
            $ord = 47 + ( $over % 62 );
         } else {
            $step = 1;
            $ord = 47 + $over;
         }
         if ($ord > 57) $ord += 7;
         if ($ord > 90) $ord += 6;
         $str = substr_replace(strval($str), chr($ord), -1 - $x, 1);

      }
   }
return $str . '0';
}
 


ho convertito in questo modo :
N.B. funzione per 4 cifre ma si puo' adattare a piu' cifre.
Code: Select all  Expand view

STATIC FUNCTION Renum()
LOCAL cCont := SPACE(4), cRet := ""
LOCAL aS := {}, i, nX, nY, nZ

do while .T.

    cRet := ""
    aS := {}
    nZ := 1

    dfGetW(10,10,"Codice ",@cCont,"XXXX")
    IF cCont == "XXXX"
        EXIT
    ENDIF

    AADD( aS, SUBSTR(cCont,4,1) )
    AADD( aS, SUBSTR(cCont,3,1) )
    AADD( aS, SUBSTR(cCont,2,1) )
    AADD( aS, SUBSTR(cCont,1,1) )

    FOR i = 1 TO LEN( aS )
         nX := ASC( aS[i] ) + nZ

         IF nX > 57
             nX := nX + 7
         ENDIF

         IF nX > 90
             nX := nX + 6
         ENDIF

         IF nX <= 122
             aS[i] := CHR( nX )
             EXIT
         ELSE
             nY := nX - 122
             IF nY > 62
                 nZ := INT( nY / 62 ) +1
                 nX := 47 + ( nY % 62 )
             ELSE
                 nZ := 1
                 nX := 47 + nY
             ENDIF

             IF nX > 57
                 nX := nX + 7
             ENDIF

             IF nX > 90
                 nX := nX + 6
             ENDIF
         ENDIF
    NEXT

    cRet := aS[4] + aS[3] + aS[2] + aS[1]

    dbMsgW( cRet )

enddo

RETURN NIL
 

sostituire dfGetW(.... con una get classica e dbMsgW( .... con un msgbox o alert.

sembra funzionare , es. da 0001 da 0002 da 1000 da 1001 etc...
da A998 da A999 pero' se digito A999 invece di dare B0000 da A99A .

Suggerimenti ?
Grazie.
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: Fatturazione Elettronica

Postby Maurizio » Tue Nov 20, 2018 7:41 am

Io uso questa funzione
Code: Select all  Expand view
function Dec2Hex(nDec,lPad)
local nDig
local cHex := ""
lPad := lPad=nil .or. lPad
while .T.
   nDig := nDec%16
   cHex := if(nDig>9, Chr(Asc("A")+nDig-10), Str(nDig,1)) + cHex

   if (nDec := Int(nDec/16)) < 16
      if nDec > 0
         cHex := if(nDec>9, Chr(Asc("A")+nDec-10), Str(nDec,1)) + cHex
      end
      exit
   end
end
return if(lPad, PadL(cHex,Len(cHex)+if(Len(cHex)%2=0,0,1),"0"), cHex)



che ho trovato
http://www.pctoledo.com.br/forum/viewto ... mobile=off

Maurizio
http://www.nipeservice.com
User avatar
Maurizio
 
Posts: 824
Joined: Mon Oct 10, 2005 1:29 pm

Re: Fatturazione Elettronica

Postby Enrico Maria Giordano » Wed Nov 21, 2018 10:27 am

Questa funzione ha qualcosa che non va?

Code: Select all  Expand view
cProgInvio := NTOC( nProgInvio , 36, 5, "0" )


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8715
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Fatturazione Elettronica

Postby solving » Wed Nov 21, 2018 11:03 am

la funzione Dec2Hex(nDec,lPad) e' ottima , quindi trasformo in esadecimale
massimo 1.048.575 valori possibili.

per curiosità stavo provando anche quest'altra soluzione :
Code: Select all  Expand view

STATIC FUNCTION Renum()
LOCAL aList := {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',;
 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',;
                'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}

LOCAL cCont := SPACE(5), cRet := "", nBase := 62
LOCAL aS := {}, i, nPos, nNew

do while .T.

    cRet := ""
    aS := {}

    dfGetW(10,10,"Codice ",@cCont,"XXXXX")
    IF ALLTRIM( cCont ) == "-"
        EXIT
    ENDIF

    cCont := PADL( ALLTRIM(cCont), 5, "0" )

    AADD( aS, SUBSTR(cCont,5,1) )
    AADD( aS, SUBSTR(cCont,4,1) )
    AADD( aS, SUBSTR(cCont,3,1) )
    AADD( aS, SUBSTR(cCont,2,1) )
    AADD( aS, SUBSTR(cCont,1,1) )

    FOR i = 1 TO LEN( aS )

         nPos := ASCAN( aList, aS[i] )
         nNew := nPos + 1

         IF nNew >= nBase
             nNew := 1
             aS[i] := aList[nNew]
         ELSE
             aS[i] := aList[nNew]
             EXIT
         ENDIF
    NEXT

    cRet := aS[5] + aS[4] + aS[3] + aS[2] + aS[1]

    msgbox( cRet )

ENDDO

RETURN NIL
 


ma usero' la Dec2Hex per adesso.
Grazie.
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: Fatturazione Elettronica

Postby solving » Wed Nov 21, 2018 11:56 am

l'ultimo e poi basta. :D
Code: Select all  Expand view

STATIC FUNCTION Renum()
* --- e' possibile cambiare nBase
LOCAL cRet, nDec, nBase := 36

DO WHILE .T.
      cRet := ""
      nDec := 0

      dfGetW(10,10,"Codice ",@nDec,"9999999")
      IF nDec == 0
         EXIT
      ENDIF

     cRet := N2C( nDec, nBase )

     dbMsgW( cRet )
ENDDO

RETURN NIL

STATIC FUNCTION N2C(n, nBase)
LOCAL cOutStr := '
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
LOCAL cRet  := cOutStr[ (n % nBase)+1 ]

IF n >= nBase    // Recurse for greater digits
   cRet := N2C(INT(n/nBase), nBase) + cRet
ENDIF

RETURN( cRet )
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: Fatturazione Elettronica

Postby MaxP » Mon Nov 26, 2018 10:46 am

Ciao a tutti,

non so se potrà servire, invio un'elaborazione dell'idea,
una funzione che può generare un codice univoco per
ogni minuto che passa anche per gli anni futuri.
Sarebbe stato ottimo farlo per ogni secondo (la mia
idea era quella) ma 5 cifre base 36 non bastano.


Code: Select all  Expand view

#include "Fivewin.ch"


FUNCTION MAIN()
        MsgStop( ALLTRIM( GETCODFE() ) )
RETURN NIL


#pragma BEGINDUMP

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include "hbapi.h"


static void N2C( unsigned long n, int nBase, int nPos, char *cBuf )

{
        char cOutStr[37] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
        char cRet ;

        cRet  = cOutStr[ (int)(n % (unsigned long)nBase) ] ;

        if ( n >= (unsigned long)nBase )
                N2C((unsigned long)(n/nBase), nBase, nPos-1, cBuf) ;

        cBuf[nPos] = cRet ;
}

HB_FUNC( GETCODFE )


{
        char    cBuf[11] = "          " ;        
        unsigned long count;
       
        time_t *tmppointer=NULL;
       
        count = time( tmppointer ) / (unsigned long)60 ;
       
        N2C( count, 36, 9, cBuf ) ;
       
        hb_retc( cBuf ) ;
}

#pragma ENDDUMP
 
User avatar
MaxP
 
Posts: 85
Joined: Thu Jul 12, 2007 2:02 pm

Re: Fatturazione Elettronica

Postby MarcoBoschi » Mon Nov 26, 2018 4:22 pm

Ciao,
ci sono regole particolari per uploadare un XML relativo ad una una TD04 nota di credito?
Parlo soprattutto dei riferimento alla fattura che nel cartaceo vengono scritti nel dettaglio.

STORNO TOTALE NS. FT.1670.15 DEL 31/08/2015 IN QUANTO VIENE RESA LA CAUZIONE

Mi immagino che il formato XML preveda TAG specifici
Oppure mi sbaglio ed è sufficiente scrivere nel dettaglio?

Grazie
User avatar
MarcoBoschi
 
Posts: 1065
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy

Re: Fatturazione Elettronica

Postby solving » Tue Nov 27, 2018 8:05 am

ciao

io la tratto come riga dettaglio "descrittiva"
nel senso che metto q.ta = 0, prezzo = 0 e iva = xx

per ricavare xx cerco sulle righe dettaglio la prima iva valida con % diverso da 0
quindi escludo tutte quelle che hanno natura Nx.
in modo che la riga "descrittiva" non dia "fastidio" nel riepilogo.
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: Fatturazione Elettronica

Postby MarcoBoschi » Tue Nov 27, 2018 9:03 am

Grazie,
che peccato il sito https://sdi.fatturapa.gov.it/SdI2FatturaPAWeb/AccediAlServizioAction.do?pagina=controlla_fattura
in questo momento è in tilt.
Speravo di provare ma niente.
Non ci voleva
User avatar
MarcoBoschi
 
Posts: 1065
Joined: Thu Nov 17, 2005 11:08 am
Location: Padova - Italy

PreviousNext

Return to All products support

Who is online

Users browsing this forum: No registered users and 8 guests