@openade/common
Version:
Common types, validators, and XML builders for Italian fiscal receipts
133 lines • 3.29 kB
TypeScript
import { ISODate, ISODateTime, PartitaIVA } from './common';
export declare enum TipoOperazione {
VENDITA = "V",
RESO = "R",
ANNULLO = "A",
RETTIFICA = "C"
}
export interface VoceGiornale {
numeroProgressivo: number;
dataOra: ISODateTime;
tipo: TipoOperazione;
numeroDocumento?: string;
importo: number;
metodoPagamento?: string;
note?: string;
}
export interface Journal {
versione: string;
contribuente: {
partitaIVA: PartitaIVA;
};
identificativoPEM: string;
dataRiferimento: ISODate;
voci: VoceGiornale[];
numeroVoci: number;
importoTotaleGiornata: number;
dataOraGenerazione: ISODateTime;
}
export declare enum TipoBlocco {
SEME = "SEME",
ATTIVAZIONE = "ATTIVAZIONE",
SEDE = "SEDE",
DC = "DC",
CG = "CG",
CC = "CC",
CORR = "CORR"
}
export interface IntestazioneBlocco {
hashBloccoPrec: string;
hashDoc?: string;
}
export interface SemeBlocco {
tipoBlocco: TipoBlocco.SEME;
intestazione: IntestazioneBlocco;
corpo: {
cau: string;
codSoluzione: string;
semeAttivazione: string;
};
}
export interface AttivazioneBlocco {
tipoBlocco: TipoBlocco.ATTIVAZIONE;
intestazione: IntestazioneBlocco;
corpo: {
esercente: {
partitaIVA: PartitaIVA;
anagrafica: {
denominazione: string;
nome?: never;
cognome?: never;
} | {
denominazione?: never;
nome: string;
cognome: string;
};
};
tipologiaPEM: 'AP' | 'SP' | 'TM' | 'PV';
};
}
export interface IndirizzoPtoVendita {
indirizzo: string;
nCivico: string;
cap: string;
comune: string;
provincia: string;
nazione: string;
tipoSede: '0' | '1';
}
export interface SedeBlocco {
tipoBlocco: TipoBlocco.SEDE;
intestazione: IntestazioneBlocco;
corpo: {
partitaIVA: PartitaIVA;
sedePtoVendita: IndirizzoPtoVendita;
};
}
export interface DcBlocco {
tipoBlocco: TipoBlocco.DC;
intestazione: IntestazioneBlocco;
corpo: {
numeroEmissione: number;
dataOraEmissione: ISODateTime;
};
}
export interface CgBlocco {
tipoBlocco: TipoBlocco.CG;
intestazione: IntestazioneBlocco;
corpo: {
dataOraCambioGiornata: ISODateTime;
};
}
export interface CcBlocco {
tipoBlocco: TipoBlocco.CC;
intestazione: IntestazioneBlocco;
corpo: {
dataOraChiusura: ISODateTime;
totaleDocumenti: number;
importoTotale: number;
};
}
export interface CorrBlocco {
tipoBlocco: TipoBlocco.CORR;
intestazione: IntestazioneBlocco;
corpo: {
hashCorrispettivi: string;
dataRiferimento: ISODate;
};
}
export type BloccoJournal = SemeBlocco | AttivazioneBlocco | SedeBlocco | DcBlocco | CgBlocco | CcBlocco | CorrBlocco;
export interface JournalCompleto {
versione: string;
intestazione: {
dataOraApertura: ISODateTime;
progressivo: number;
versionePEM: {
versione: number;
sottoVersione: number;
patch: string;
};
};
blocchi: BloccoJournal[];
}
//# sourceMappingURL=journal.d.ts.map