FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index All products support Fatturazione Elettronica
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Fatturazione Elettronica
Posted: Fri Oct 26, 2018 11:51 AM
Totale Fattura 114.68 € pagamento 2 rate

Code (fw): Select all Collapse
<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
Posts: 1091
Joined: Thu Nov 17, 2005 11:08 AM
Re: Fatturazione Elettronica
Posted: Fri Oct 26, 2018 02:19 PM

Grazissime!

:D

Marco Boschi
info@marcoboschi.it
Posts: 1091
Joined: Thu Nov 17, 2005 11:08 AM
Re: Fatturazione Elettronica
Posted: Fri Oct 26, 2018 02: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

Marco Boschi
info@marcoboschi.it
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Fatturazione Elettronica
Posted: Fri Oct 26, 2018 04:29 PM
devi mettere la Quantità a 1 e IVA


Code (fw): Select all Collapse
<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
Posts: 99
Joined: Thu Jul 12, 2007 02:02 PM
Re: Fatturazione Elettronica
Posted: Sat Oct 27, 2018 02:08 PM
Salve,

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

Codice per le scadenze

Code (fw): Select all Collapse
    <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
Posts: 65
Joined: Fri Jun 05, 2009 07:55 AM
Re: Fatturazione Elettronica
Posted: Wed Nov 14, 2018 06: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.

Posts: 65
Joined: Fri Jun 05, 2009 07:55 AM
Re: Fatturazione Elettronica
Posted: Mon Nov 19, 2018 03:34 PM
salve a tutti

ho trovato questo :
Code (fw): Select all Collapse
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 (fw): Select all Collapse
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.
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: Fatturazione Elettronica
Posted: Tue Nov 20, 2018 07:41 AM
Io uso questa funzione
Code (fw): Select all Collapse
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
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: Fatturazione Elettronica
Posted: Wed Nov 21, 2018 10:27 AM
Questa funzione ha qualcosa che non va?

Code (fw): Select all Collapse
cProgInvio := NTOC( nProgInvio , 36, 5, "0" )


EMG
Posts: 65
Joined: Fri Jun 05, 2009 07:55 AM
Re: Fatturazione Elettronica
Posted: 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 (fw): Select all Collapse
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.
Posts: 65
Joined: Fri Jun 05, 2009 07:55 AM
Re: Fatturazione Elettronica
Posted: Wed Nov 21, 2018 11:56 AM
l'ultimo e poi basta. :-)
Code (fw): Select all Collapse
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 )
Posts: 99
Joined: Thu Jul 12, 2007 02:02 PM
Re: Fatturazione Elettronica
Posted: 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 (fw): Select all Collapse
#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
Posts: 1091
Joined: Thu Nov 17, 2005 11:08 AM
Re: Fatturazione Elettronica
Posted: Mon Nov 26, 2018 04: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

Marco Boschi
info@marcoboschi.it
Posts: 65
Joined: Fri Jun 05, 2009 07:55 AM
Re: Fatturazione Elettronica
Posted: Tue Nov 27, 2018 08: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.

Posts: 1091
Joined: Thu Nov 17, 2005 11:08 AM
Re: Fatturazione Elettronica
Posted: Tue Nov 27, 2018 09: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
Marco Boschi
info@marcoboschi.it