Flussi

Descrizione dei flussi di fatturazione

Flusso SDIPR

Flusso Attivo

Descrizione

l nome file viene generato dal backend di Agyo per le fatture NON firmate (il parametro in ingresso viene quindi ignorato), viene invece preso il nome file così com'è in caso di fatture già firmate, con l'unico vincolo che non contenga la piva di TS altrimenti creerebbe conflitti con la generazione dei progressivi.

Si accettano file firmati XAdES(.xml) e CAdES (.p7m)

Per poter effettuare l'invio il sender deve esistere su ts-digital  e deve corrispondere a quello indicato in fattura come cedente. Il sender può inviare anche se non in stato "Certificato". Il sender deve essere VALIDATO.

In questo flusso è possibile anche caricare fatture semplifiche FSM10

Servizi

Per quanto riguarda il flusso attivo per poter inviare una fattura a SDI è necessario possedere il servizio SDI.

é possibile ottenere il servizio per estensione mediante una connessione.

Verrà sempre utilizzato prima un eventuale pacchetto del sender e se non presente quello del transmitter

In caso il transmitter differisca dal sender viene verificata che ci sia una connessione se il pacchetto utilizzato è quello del transmitter.

Se il pacchetto utilizzato è quello del transmitter ed è necessario apporre firma TeamSystem viene verificato che la connessione sia Validata.

Motivi di scarto:

Rappresentazione degli stati

cArr8TWSJSUTqCUz-Drawing-Amedeo-Zitti-1585925146.png

 

Flusso Passivo

Descrizione

Il flusso passivo rappresenta la ricezione di una fattura SDIPR da parte di SDI.

Una volta processata la fattura viene verrà assegnata di default all'ufficio principale (-000). in sua mancanza all'azienda. In caso si utilizzino i gov code all'ufficio configurato.

Servizi

Per poter ricevere è necessario avere il servizio ERICEVI arrivo. In caso di esaurimento del pacchetto le fatture verranno mantenute per 120 giorni ma non saranno assegnate alle aziende. 

Sarà possibile riassegnare le fatture solo dopo aver rinnovato il pacchetto.

Al momento la riassegnazione deve esser richiesta all'assistenza. è in sviluppo uno strumento per automatizzare questo processo

Rappresentazione degli stati

 

DCyD9BZ85T9uAD67-Drawing-Amedeo-Zitti-1585925593.png

Flusso SDIPA

Flusso Attivo

Descrizione

l nome file viene generato dal backend di Agyo per le fatture NON firmate (il parametro in ingresso viene quindi ignorato), viene invece preso il nome file così com'è in caso di fatture già firmate, con l'unico vincolo che non contenga la piva di TS altrimenti creerebbe conflitti con la generazione dei progressivi.

Si accettano file firmati XAdES(.xml) e CAdES (.p7m)

Per poter effettuare l'invio il sender deve esistere su ts-digital  e deve corrispondere a quello indicato in fattura come cedente. Il sender può inviare anche se non in stato "Certificato". Il sender deve essere VALIDATO

Servizi

Per quanto riguarda il flusso arrivo poter inviare una fattura a SDI è necessario possedere il servizio SDI.

Per quanto riguarda il flusso arrivo poter inviare una fattura a SDI è necessario possedere il servizio SDI.

é possibile ottenere il servizio per estensione mediante una connessione.

Verra sempre utilizzato prima un eventuale pacchetto del sender e se non presente quello del transmitter

In caso il transmitter differisca dal sender viene verificata che ci sia una connessione se il pachetto utilizzato è quello del transmitter. in caso contrario non viene verificata la connessione.

Motivi di scarto

Rappresentazione degli stati

NOLUK7gZR2O5X1NH-Drawing-Zittino-1604932690.png

 

Flusso Passivo

Descrizione

Il flusso passivo rappresenta la ricezione di una fattura SDIPR da parte di SDI.

Una volta processata la fattura viene verrà assegnata di default all'ufficio principale (-000). in sua mancanza all'azienda. In caso si utilizzino i gov code all'ufficio configurato.

Servizi

Per poter ricevere non è necessario avere il servizio ERICEVI ma per poter accedere ai dettagli e scaricarla è obbligatorio.

Questo comportamento sta per variare con l'introduzione del flag di readonly sui pacchetti

Rappresentazione degli stati

 

4Dz9AG936Ue8Zmys-Drawing-Amedeo-Zitti-1588231006.png

Flusso SELFINV

Descrizione

l nome file viene generato dai nostri sistemi

i campi senderId, recipeintId e transmitterId sono campi tecnici mirati all'instradamento della fattura e non si riferiscono al contenuto della fattura. essendo un autofattura. il sender e recipient sono per definizione gli stessi (se differiscono la fattura viene scartata). 
Vengono firmate sole le fatture destinate alle pubbliche aministrazioni

Non è possibile inviare fatture già firmate

 

Servizi

Per quanto riguarda il flusso arrivo poter inviare una fattura a SDI è necessario possedere il servizio SDI.

Motivi di scarto:

Rappresentazione degli stati

cArr8TWSJSUTqCUz-Drawing-Amedeo-Zitti-1585925146.png

 

 

Flusso SELFSEND

Dettagli

Per poter eseguire le logiche di SELFSEND relative alla fattura occorre specificare un campo in extradata : 'aziendaDiRiferimento'. Questo campo deve contenere il riferimento anagrafico ItemId dell'azienda di riferimento e può essere un ufficio.

Nel caso si operi come studio essa sarà necessaria per capire a quale azienda gestita dallo studio fa riferimento la fattura che si sta caricando. In questo caso verrà verificato che vi sia una connessione di tipo VALIDATO fra l'azienda di riferimento il transmitterId per appurare che il transmitter abbia i diritti ad operare su tale azienda.

L'azienda di riferimento coinciderà con il transmitterId nel caso si operi come azienda.

In particolare se l'azienda di riferimento coincide con il cedente prestatore la fattura risulterà come attiva. In caso coincidesse con il cessionario risulterà passiva. Questa comparazione viene effettuata prendendo in considerazione sia la piva che il cf. in questo modo viene gestito anche il caso particolare dei gruppi IVA (piva presente in fattura ma non esistente su Agyo)

Se l'azienda di riferimento non viene specificata oppure se non coincide ne con il cedente ne con il cessionario la fattura verrà scartata.

I parametri transmitterIdsenderId e recipientId devono essere impostati con l'identificativo dell'azienda, o dello studio, che sta tendando l'invio. In caso uno dei parametri differisca si riceve un errore in fase di caricamento.

SenderId e recipientId verranno poi sovrascritti prendendoli dalla fattura, in particolare in caso di fattura passiva il senderId viene impostato come facciamo per le fatture passive ricevute da SDI (se c'è CF, altrimenti Piva). E' fondamentale che il sender(per le attive) o il recipient (per le passive) siano su Agyo.

In caso di scarto, SenderId e recipientId, e ownerId (Sender e recipient non sarebbero più necessari)  non vengono modificati e rimangono uguali al transmitterId  (per questioni di visibilità)  viene inoltre messo il flag di active: false (per permetterne la visibilità al transmitter su console [scelta LV 08/02/2019]).

In caso di assegnazione l'ownerId viene ri-assegnato con l'itemId dell'azienda di riferimento. in questo modo la visibilità passa all'azienda di riferimento. Fintanto che vi sarà connessione fra i due, potrà vederla ancora anche il transmitter (quindi lo studio che l'ha inviata).

Il metering assegnerà il consumo consapevole del fatto che la fattura è di tipo SELFSEND 

Eventuali allegati non vengono mergiati nella fattura. (ci aspettiamo siano già allegati in quanto già in inviati a SDI)

Check duplicati

In caso venga trovato un duplicato la fattura verrà scartata[09].

Il check duplicato avviene verificando:

In particolare prima estraiamo da db per i primi 4 valori (OwnerId, data documento, numero documento, tipo documento) e successivamente valutiamo gli altri parametri

Il check viene fatto filtrando (non considerando) le fatture in stato SCARTATO, CARICATO o RIFIUTATO.

Caso particolare di Passaggio Interno

Si verifica nel caso in cui  l'autofattura (cedente e cessionario sono lo stesso soggetto) e va registrata sia tra le fatture attive che tra quelle passive. Per gestire questo caso. nel momento in cui si genera un duplicato verrà verificata la coincidenza fra cedente e cessionario, se coincidono e la fattura duplicata è solo una verrà inserita una fattura passiva (la prima va automaticamente in attiva perchè viene prima fatto il check sul cedente). se le fatture duplicate sono invece 2 avverrà uno scarto per fattura duplicata[10].

ATTENZIONE: Il check viene usando l'azienda di riferimento come parametro di ricerca perchè sarà quello che diventerà ownerId del documento al termine della procedura

Questo check si applica anche al suo sotto-flusso IMPEXP e OCR

Servizi

Il transmitter necessità del pacchetto ERICEVI (ottenibile tramite connessione o estenzione)

Rappresentazione degli stati

 

e9m1YZFXzF8uSwtU-Drawing-Zittino-1591174878.png

Flusso IMPEXP

Descrizione

Il flusso IMPEXP è al momento veicolabile solo attraverso il flusso CSV.

Ogni flusso IMPEXP può essere rappresentato nel flusso CSV da 2 diversi record group

Necessita del campo in extradata: aziendaDiRiferimento

Fare attenzione all'ordine dei campi

Record Group 1
id
senderId
recipientId
pivaCedente
cfCedente
ragSocialeCedente
pivaCessionario
cfCessionario
ragSocialeCessionario
dataDoc //formato ISO 8601:2004 -> 2020-01-25
numDoc
tipoDocumento
totale
Record Group 2
ImponibileImporto
aliquotaIva
imposta
esigibilitaIva
natura

 

Gli stati che può assumere sono 

CARICATO

REGISTRATO

CONTROLLATO

AUTO_INVIATO

 

in caso di problemi lo stato sarà SCARTATO con relativa motivazione.

 

Flusso CSV

Descrizione

Il servizio permette di caricare un file CSV, trasformare ognuna delle sue righe o gruppo di righe (RecordGroup) in un xml e di sottomettere quest'ultimo ad un flusso pre-esistente. (al momento solo IMPEXP)

Per ogni flusso dovrà essere concordata la struttura del file CSV in modo da poter creare il corretto mapping fra RecordGroup e xml.

Una volta generato l'xml, ogni RecordGroup seguirà le regole per il flusso che è stato specificato in Extradata.

Al momento non è prevista la risottomissione.

Flussi attualmente veicolabili

Al momento è veicolabile solo il flusso IMPEXP.

Regole di struttura del file

L'unità base del csv è una riga chiamata anche Record. Ogni riga deve contenere un header obbligatorio alla prima colonna (indice 0): il recordType

è possibile raggruppare più record, il gruppo assumerà il nome di RecordGroup

Un RecordGroup permette di raggruppare più linee del CSV al fine di utilizzarle per generare uno stesso xml. Sono utili nel caso si voglia generare un xml con campi ripetuti.(vedi esempio)

Headers obbligatori del record group:

Questi campi obbligatori non hanno una posizione obbligatoria all'interno del file ma devono essere esplicitati in fase di condivisione del nuovo flusso che si sta definendo.

Come transmitter verrà utilizzato quello specificato per l'intero CSV.

Il file deve essere costruito secondo le regole definite dalla RFC4180 (https://tools.ietf.org/html/rfc4180) senza specificare il nome degli headers.

Il carattere di separazione è rappresentato dalla virgola : ,

le informazioni inserite nei campi extradata della richiesta webService saranno utilizzate per ogni documento estratto dal csv. Bisognerà creare quindi il file tenendo in considerazione questa cosa.

Dati Invio

FlowType : CSV

I parametri transmitterIdsenderId e recipientId devono essere impostati con l'identificativo dell'azienda, o dello studio, che sta tendando l'invio. In caso uno dei parametri differisca si riceve un errore in fase di caricamento.

Valori obbligatori in extraData:

Non è possibile avere CSV con all'interno tipi di flusso differenti.

 

Servizi

Il pacchetto necessario per l'invio dipende dal flusso dichiarato nell'extraData 'flowtype'

 

Lettura stato di elaborazione del CSV

 

Verrà fornita un api di lettura dedicata che mediante l'id fornito in fase di caricamento fornirà informazioni relative al processamento del file stesso, se il documento ha terminato l'esecuzione verrà restituito per ogni riga presente:

 

Motivi di scarto del CSV

Rappresentazione degli stati del flusso CSV

 

V8Ure6E8bXKoc7mX-Drawing-Amedeo-Zitti-1585928148.png

 

Rappresentazione degli stati del RecordGroupCsv

 

P0lgWKZxew7brAa1-Drawing-Amedeo-Zitti-1585928243.png

Esempio 

Il caricamento del seguente file CSV:

1,10,46546747471,46546747471,46546747471,46546747471,TEAMSYSTEM,0,MRCRRT72B14A145A,MERCANDELLIROBERTO,2019-01-01,1,TD01,162
2,160,N1,0,
2,2,N2,0,

Produce il seguente XML:​

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="FatturaPrivati_v1.2.xsl"?>
<p:FatturaElettronica xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versione="FPR12">
  <FatturaElettronicaHeader>
    <DatiTrasmissione>
      <IdTrasmittente>
        <IdPaese>IT</IdPaese>
        <IdCodice>01641790702</IdCodice>
      </IdTrasmittente>
      <ProgressivoInvio>0</ProgressivoInvio>
      <FormatoTrasmissione>FPR12</FormatoTrasmissione>
    </DatiTrasmissione>
    <CedentePrestatore>
      <DatiAnagrafici>
        <IdFiscaleIVA>
          <IdPaese>IT</IdPaese>
          <IdCodice>46546747471</IdCodice>
        </IdFiscaleIVA>
        <CodiceFiscale>46546747471</CodiceFiscale>
        <Anagrafica>
          <Denominazione>TEAMSYSTEM</Denominazione>
        </Anagrafica>
        <RegimeFiscale>RF01</RegimeFiscale>
      </DatiAnagrafici>
    </CedentePrestatore>
    <CessionarioCommittente>
      <DatiAnagrafici>
        <IdFiscaleIVA>
            <IdPaese>IT</IdPaese>
              <IdCodice>0</IdCodice>
        </IdFiscaleIVA>
        <CodiceFiscale>MRCRRT72B14A145A</CodiceFiscale>
        <Anagrafica>
          <Denominazione>MERCANDELLIROBERTO</Denominazione>
        </Anagrafica>
      </DatiAnagrafici>
    </CessionarioCommittente>
  </FatturaElettronicaHeader>
  <FatturaElettronicaBody>
    <DatiGenerali>
      <DatiGeneraliDocumento>
        <TipoDocumento>TD01</TipoDocumento>
        <Divisa>EUR</Divisa>
        <Data>2019-01-01</Data>
        <Numero>1</Numero>
        <ImportoTotaleDocumento>162</ImportoTotaleDocumento>
      </DatiGeneraliDocumento>
    </DatiGenerali>
    <DatiBeniServizi>
        <DatiRiepilogo>
            <Natura>N1</Natura>
            <ImponibileImporto>160</ImponibileImporto>
        </DatiRiepilogo>
        <DatiRiepilogo>
            <Natura>N2</Natura>
            <ImponibileImporto>2</ImponibileImporto>
        </DatiRiepilogo>
    </DatiBeniServizi>
  </FatturaElettronicaBody>
</p:FatturaElettronica>

 

 

​​