Page 2 of 7

Re: Fatturazione Elettronica

PostPosted: Fri Oct 26, 2018 11:51 am
by Maurizio
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

Re: Fatturazione Elettronica

PostPosted: Fri Oct 26, 2018 2:19 pm
by MarcoBoschi
:D
Grazissime!

Re: Fatturazione Elettronica

PostPosted: Fri Oct 26, 2018 2:57 pm
by MarcoBoschi
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

Re: Fatturazione Elettronica

PostPosted: Fri Oct 26, 2018 4:29 pm
by Maurizio
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

Re: Fatturazione Elettronica

PostPosted: Sat Oct 27, 2018 2:08 pm
by MaxP
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

Re: Fatturazione Elettronica

PostPosted: Wed Nov 14, 2018 6:25 pm
by solving
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.

Re: Fatturazione Elettronica

PostPosted: Mon Nov 19, 2018 3:34 pm
by solving
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.

Re: Fatturazione Elettronica

PostPosted: Tue Nov 20, 2018 7:41 am
by Maurizio
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

Re: Fatturazione Elettronica

PostPosted: Wed Nov 21, 2018 10:27 am
by Enrico Maria Giordano
Questa funzione ha qualcosa che non va?

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


EMG

Re: Fatturazione Elettronica

PostPosted: Wed Nov 21, 2018 11:03 am
by solving
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.

Re: Fatturazione Elettronica

PostPosted: Wed Nov 21, 2018 11:56 am
by solving
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 )

Re: Fatturazione Elettronica

PostPosted: Mon Nov 26, 2018 10:46 am
by MaxP
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
 

Re: Fatturazione Elettronica

PostPosted: Mon Nov 26, 2018 4:22 pm
by MarcoBoschi
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

Re: Fatturazione Elettronica

PostPosted: Tue Nov 27, 2018 8:05 am
by solving
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.

Re: Fatturazione Elettronica

PostPosted: Tue Nov 27, 2018 9:03 am
by MarcoBoschi
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