Invio comunicazioni all'Agenzia delle Entrate.
import { ArubaClient } from '@fatturazione-elettronica-aruba/core';
import { CommunicationsClient } from '@fatturazione-elettronica-aruba/communications';
const client = new ArubaClient({ environment: 'demo' });
await client.auth.signin('username', 'password');
const communications = new CommunicationsClient(client.http);
| Codice | Descrizione |
|---|---|
LI | Liquidazioni periodiche IVA |
DTE | Dati fatture emesse |
DTR | Dati fatture ricevute |
ANN | Annullamento |
import { encodeBase64 } from '@fatturazione-elettronica-aruba/utils';
const result = await communications.createTransmission({
comunicationType: 'LI',
dataFile: encodeBase64(xmlContent),
});
console.log('Request ID:', result.requestId);
const info = await communications.getTransmissionInfo(result.requestId);
console.log('Stato:', info.result);
console.log('Esito:', info.elaboratedResult);
| Codice | Descrizione |
|---|---|
SF01 | File ricevuto |
SF02 | File in elaborazione |
SF03 | File elaborato |
| Codice | Descrizione |
|---|---|
ES01 | File accettato |
ES02 | File accettato con segnalazioni |
ES03 | File scartato |
const pdd = await communications.getPdd(result.requestId);
// pdd e un ArrayBuffer
const buffer = Buffer.from(pdd);
writeFileSync('ricevuta.zip', buffer);
async function sendLiquidazioneIVA(xmlContent: string) {
const client = new ArubaClient({ environment: 'production' });
await client.auth.signin(process.env.USERNAME!, process.env.PASSWORD!);
const communications = new CommunicationsClient(client.http);
// Invio
const result = await communications.createTransmission({
comunicationType: 'LI',
dataFile: encodeBase64(xmlContent),
});
// Polling stato
let info;
do {
await new Promise(r => setTimeout(r, 30000));
info = await communications.getTransmissionInfo(result.requestId);
} while (info.result !== 'SF03');
// Verifica esito
if (info.elaboratedResult === 'ES01') {
const pdd = await communications.getPdd(result.requestId);
return { success: true, pdd };
}
return { success: false, errors: info.notifyResult };
}