use of it.cnr.contab.docamm00.service.FatturaPassivaElettronicaService in project sigla-main by consiglionazionaledellericerche.
the class CRUDFatturaPassivaElettronicaBP method rifiutaFatturaConPEC.
public void rifiutaFatturaConPEC(ActionContext context, DocumentoEleTestataBulk bulk, RifiutaFatturaBulk rifiutaFatturaBulk) throws BusinessProcessException {
try {
if (isDirty()) {
save(context);
bulk = (DocumentoEleTestataBulk) createComponentSession().inizializzaBulkPerModifica(context.getUserContext(), bulk);
}
TerzoBulk prestatore = Optional.ofNullable(bulk.getDocumentoEleTrasmissione().getPrestatore()).orElseThrow(() -> new ApplicationException("Valorizzare il terzo cedente/prestatore"));
TerzoBulk terzoPerUnitaOrganizzativa = ((it.cnr.contab.anagraf00.ejb.TerzoComponentSession) createComponentSession("CNRANAGRAF00_EJB_TerzoComponentSession")).cercaTerzoPerUnitaOrganizzativa(context.getUserContext(), bulk.getDocumentoEleTrasmissione().getUnitaOrganizzativa());
Numerazione_baseComponentSession numerazione = (Numerazione_baseComponentSession) EJBCommonServices.createEJB("CNRCONFIG00_TABNUM_EJB_Numerazione_baseComponentSession");
boolean isNota = bulk.getTipoDocumento().equalsIgnoreCase(TipoDocumentoType.TD_04.value());
Format dateFormat = new SimpleDateFormat("yyyy/MM/dd");
Print_spoolerBulk print = new Print_spoolerBulk();
print.setPgStampa(UUID.randomUUID().getLeastSignificantBits());
print.setFlEmail(false);
print.setReport("/docamm/docamm/rifiuto_fattura_elettronica.jasper");
print.setNomeFile("Comunicazione di non registrabilità del ".concat(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))).concat(".pdf"));
print.setUtcr(context.getUserContext().getUser());
print.addParam("title", Optional.ofNullable(rifiutaFatturaBulk.getMessageText()).filter(s -> !isNota).map(s -> "Richiesta storno Documento Elettronico").orElseGet(() -> "Rifiuto Documento Elettronico"), String.class);
print.addParam("message", rifiutaFatturaBulk.getMessage(), String.class);
print.addParam("note", rifiutaFatturaBulk.getNote(), String.class);
print.addParam("is_nota", isNota, Boolean.class);
print.addParam("codice_uo", bulk.getDocumentoEleTrasmissione().getUnitaOrganizzativa().getCd_unita_organizzativa(), String.class);
print.addParam("descrizione_uo", bulk.getDocumentoEleTrasmissione().getUnitaOrganizzativa().getDs_unita_organizzativa(), String.class);
print.addParam("codice_cuu", terzoPerUnitaOrganizzativa.getCodiceUnivocoUfficioIpa(), String.class);
print.addParam("denominazione_sede", prestatore.getDenominazione_sede(), String.class);
print.addParam("pec", rifiutaFatturaBulk.getEmailPEC(), String.class);
print.addParam("tipo_documento", DocumentoEleTestataBulk.tiTipoDocumentoKeys.get(bulk.getTipoDocumento()), String.class);
print.addParam("identificativo_sdi", bulk.getIdentificativoSdi(), Long.class);
print.addParam("numero_documento", bulk.getNumeroDocumento(), String.class);
print.addParam("data_documento", bulk.getDataDocumento(), Date.class, dateFormat);
print.addParam("data_ricezione", bulk.getDocumentoEleTrasmissione().getDataRicezione(), Date.class, dateFormat);
Report report = SpringUtil.getBean("printService", PrintService.class).executeReport(context.getUserContext(), print);
LocalDateTime now = LocalDateTime.now();
int esercizio = now.getYear();
Long numProtocollo = numerazione.creaNuovoProgressivo(context.getUserContext(), esercizio, "RIFIUTO_FATTURA_PEC", "NUM_PROTOCOLLO", CNRUserContext.getUser(context.getUserContext()));
AllegatoNonRegistrabilitaBulk allegatoNonRegistrabilitaBulk = new AllegatoNonRegistrabilitaBulk();
allegatoNonRegistrabilitaBulk.setNome(report.getName());
allegatoNonRegistrabilitaBulk.setUtenteSIGLA(CNRUserContext.getUser(context.getUserContext()));
allegatoNonRegistrabilitaBulk.setAnnoProtocollo(esercizio);
allegatoNonRegistrabilitaBulk.setNumeroProtocollo(Utility.lpad(numProtocollo, 6, '0'));
allegatoNonRegistrabilitaBulk.setDataProtocollo(Date.from(now.toInstant(ZoneOffset.UTC)));
allegatoNonRegistrabilitaBulk.setTitolo("Allegato inviato al seguente indirizzo email: " + rifiutaFatturaBulk.getEmailPEC());
final StorageObject storageObject = SpringUtil.getBean("storeService", StoreService.class).restoreSimpleDocument(allegatoNonRegistrabilitaBulk, report.getInputStream(), report.getContentType(), report.getName(), Optional.ofNullable(getStorePath(bulk, false)).orElseThrow(() -> new ApplicationException("Path sul documentale non trovato, contattare il supporto Help Desk!")), false);
FatturaPassivaElettronicaService fatturaPassivaElettronicaService = SpringUtil.getBean("fatturaPassivaElettronicaService", FatturaPassivaElettronicaService.class);
fatturaPassivaElettronicaService.inviaPECFornitore(context.getUserContext(), new ByteArrayDataSource(storeService.getResource(storageObject.getKey()), MimeTypes.PDF.mimetype()), report.getName(), rifiutaFatturaBulk.getEmailPEC(), Optional.ofNullable(rifiutaFatturaBulk.getMessageText()).filter(s -> !isNota).map(s -> "Richiesta Storno documento elettronico ricevuto IdentificativoSdI: ").orElseGet(() -> "Rifiuto documento elettronico ricevuto IdentificativoSdI: ").concat(bulk.getIdentificativoSdi().toString()), Optional.ofNullable(rifiutaFatturaBulk.getMessageText()).filter(s -> !isNota).map(s -> "Richiesta Storno documento elettronico ricevuto. ").orElseGet(() -> "Rifiuto documento elettronico ricevuto. ").concat("Informazioni del rifiuto e riferimenti del documento in allegato." + "\n\nNota: questa è un'e-mail generata automaticamente e non avremo la possibilità di " + "leggere eventuali e-mail di risposta. Non rispondere a questo messaggio."));
bulk.setFlIrregistrabile("S");
if (isNota) {
bulk.setStatoDocumento(StatoDocumentoEleEnum.RIFIUTATA_CON_PEC.name());
} else {
bulk.setStatoDocumento(StatoDocumentoEleEnum.DA_STORNARE.name());
}
bulk.setToBeUpdated();
OggettoBulk oggettoBulk = getComponentSession().modificaConBulk(context.getUserContext(), bulk);
if (!Optional.ofNullable(getEMailPEC(context)).isPresent()) {
TelefonoBulk telefonoBulk = new TelefonoBulk();
telefonoBulk.setTerzo(prestatore);
telefonoBulk.setRiferimento(rifiutaFatturaBulk.getEmailPEC());
telefonoBulk.setTi_riferimento(TelefonoBulk.PEC);
telefonoBulk.setFattElettronica(Boolean.TRUE);
telefonoBulk.setToBeCreated();
getComponentSession().creaConBulk(context.getUserContext(), telefonoBulk);
}
setMessage("Comunicazione inviata correttamente.");
edit(context, oggettoBulk);
} catch (ComponentException | IOException | EmailException | BusyResourceException | ValidationException e) {
throw handleException(e);
}
}
use of it.cnr.contab.docamm00.service.FatturaPassivaElettronicaService in project sigla-main by consiglionazionaledellericerche.
the class CaricaFatturaPassivaElettronicaAction method doScaricaFatture.
public Forward doScaricaFatture(ActionContext actioncontext) throws FillException {
FatturaPassivaElettronicaService fatturaPassivaElettronicaService = SpringUtil.getBean("fatturaPassivaElettronicaService", FatturaPassivaElettronicaService.class);
CaricaFatturaElettronicaBP caricaFatturaElettronicaBP = (CaricaFatturaElettronicaBP) actioncontext.getBusinessProcess();
caricaFatturaElettronicaBP.fillModel(actioncontext);
FileSdIConMetadatiTypeBulk model = (FileSdIConMetadatiTypeBulk) caricaFatturaElettronicaBP.getModel();
fatturaPassivaElettronicaService.caricaFatture(model.getDaysBefore(), model.getIdentificativoSDI());
return actioncontext.findDefaultForward();
}
use of it.cnr.contab.docamm00.service.FatturaPassivaElettronicaService in project sigla-main by consiglionazionaledellericerche.
the class PECFattureAttiveResource method reinviaPEC.
@Override
public Response reinviaPEC(HttpServletRequest request, Integer esercizio, Long pgFatturaAttiva) throws Exception {
CNRUserContext userContext = (CNRUserContext) securityContext.getUserPrincipal();
DocumentiCollegatiDocAmmService documentiCollegatiDocAmmService = SpringUtil.getBean("documentiCollegatiDocAmmService", DocumentiCollegatiDocAmmService.class);
FatturaPassivaElettronicaService fatturaService = SpringUtil.getBean(FatturaPassivaElettronicaService.class);
Configurazione_cnrBulk config = docAmmFatturazioneElettronicaComponentSession.getAuthenticatorPecSdi(userContext);
logger.info("Recuperata Autenticazione PEC");
String pwd = null;
try {
pwd = StringEncrypter.decrypt(config.getVal01(), config.getVal02());
} catch (StringEncrypter.EncryptionException e1) {
return Response.serverError().entity("Cannot decrypt password").build();
}
final String password = pwd;
logger.info("Decrypt password");
Fattura_attiva_IBulk fattura_attiva_iBulk = new Fattura_attiva_IBulk();
fattura_attiva_iBulk.setEsercizio(esercizio);
fattura_attiva_iBulk.setStatoInvioSdi(Fattura_attivaBulk.FATT_ELETT_INVIATA_SDI);
fattura_attiva_iBulk.setPg_fattura_attiva(pgFatturaAttiva);
List<Fattura_attivaBulk> fatture = docAmmFatturazioneElettronicaComponentSession.find(userContext, Fattura_attiva_IBulk.class, "find", userContext, fattura_attiva_iBulk);
for (Fattura_attivaBulk fattura_attivaBulk : fatture) {
final StorageObject fileXmlFatturaAttiva = documentiCollegatiDocAmmService.getFileXmlFatturaAttiva(fattura_attivaBulk);
String nomeFile = fileXmlFatturaAttiva.getPropertyValue(StoragePropertyNames.NAME.value());
String nomeFileP7m = nomeFile + ".p7m";
final Optional<StorageObject> storageObjectByPath = Optional.ofNullable(documentiCollegatiDocAmmService.getStorageObjectByPath(documentiCollegatiDocAmmService.recuperoFolderFatturaByPath(fattura_attivaBulk).getPath().concat(StorageDriver.SUFFIX).concat(nomeFileP7m)));
if (storageObjectByPath.isPresent()) {
fatturaService.inviaFatturaElettronica(config.getVal01(), password, new ByteArrayDataSource(documentiCollegatiDocAmmService.getResource(storageObjectByPath.get()), MimeTypes.P7M.mimetype()), docAmmFatturazioneElettronicaComponentSession.recuperoNomeFileXml(userContext, fattura_attivaBulk).concat(".p7m"));
} else {
logger.error("File firmato non trovato fattura {}/{}", fattura_attivaBulk.getEsercizio(), fattura_attivaBulk.getPg_fattura_attiva());
return Response.serverError().entity("File firmato non trovato").build();
}
}
return Response.ok().build();
}
use of it.cnr.contab.docamm00.service.FatturaPassivaElettronicaService in project sigla-main by consiglionazionaledellericerche.
the class PECFattureAttiveResource method aggiornaNomeFile.
@Override
public Response aggiornaNomeFile(HttpServletRequest request) throws Exception {
CNRUserContext userContext = (CNRUserContext) securityContext.getUserPrincipal();
DocumentiCollegatiDocAmmService documentiCollegatiDocAmmService = SpringUtil.getBean("documentiCollegatiDocAmmService", DocumentiCollegatiDocAmmService.class);
FatturaPassivaElettronicaService fatturaService = SpringUtil.getBean(FatturaPassivaElettronicaService.class);
Fattura_attiva_IBulk fattura_attiva_iBulk = new Fattura_attiva_IBulk();
fattura_attiva_iBulk.setStatoInvioSdi(Fattura_attivaBulk.FATT_ELETT_INVIATA_SDI);
List<Fattura_attivaBulk> fatture = docAmmFatturazioneElettronicaComponentSession.find(userContext, Fattura_attiva_IBulk.class, "findFattureInviateSenzaNomeFile", userContext, fattura_attiva_iBulk);
for (Fattura_attivaBulk fattura_attivaBulk : fatture) {
final StorageObject fileXmlFatturaAttiva = documentiCollegatiDocAmmService.getFileXmlFatturaAttiva(fattura_attivaBulk);
String nomeFile = fileXmlFatturaAttiva.getPropertyValue(StoragePropertyNames.NAME.value());
String nomeFileP7m = nomeFile + ".p7m";
final Optional<StorageObject> storageObjectByPath = Optional.ofNullable(documentiCollegatiDocAmmService.getStorageObjectByPath(documentiCollegatiDocAmmService.recuperoFolderFatturaByPath(fattura_attivaBulk).getPath().concat(StorageDriver.SUFFIX).concat(nomeFileP7m)));
if (storageObjectByPath.isPresent()) {
fattura_attivaBulk.setNomeFileInvioSdi(docAmmFatturazioneElettronicaComponentSession.recuperoNomeFileXml(userContext, fattura_attivaBulk).concat(".p7m"));
fattura_attivaBulk.setToBeUpdated();
crudComponentSession.modificaConBulk(userContext, fattura_attivaBulk);
} else {
logger.error("File firmato non trovato fattura {}/{}", fattura_attivaBulk.getEsercizio(), fattura_attivaBulk.getPg_fattura_attiva());
return Response.serverError().entity("File firmato non trovato").build();
}
}
return Response.ok().build();
}
use of it.cnr.contab.docamm00.service.FatturaPassivaElettronicaService in project sigla-main by consiglionazionaledellericerche.
the class DocumentoEleTestataHome method notificaEsito.
public void notificaEsito(UserContext userContext, TipoIntegrazioneSDI tipoIntegrazioneSDI, DocumentoEleTestataBulk documentoEleTestataBulk) throws ApplicationException, IOException {
if (documentoEleTestataBulk.isRicevutaDecorrenzaTermini()) {
logger.info("Notifica esito per identificativo SDI:" + documentoEleTestataBulk.getIdentificativoSdi() + " non inviata per avvenuta decorrenza termini!");
return;
}
FatturazioneElettronicaClient client = SpringUtil.getBean("fatturazioneElettronicaClient", FatturazioneElettronicaClient.class);
FatturaPassivaElettronicaService fatturaService = SpringUtil.getBean("fatturaPassivaElettronicaService", FatturaPassivaElettronicaService.class);
NotificaEsitoCommittenteType notificaEsitoCommittenteType = this.createNotificaEsitoCommittente(documentoEleTestataBulk);
if (tipoIntegrazioneSDI.equals(TipoIntegrazioneSDI.PEC)) {
try {
it.gov.fatturapa.sdi.messaggi.v1.ObjectFactory objMessaggi = new it.gov.fatturapa.sdi.messaggi.v1.ObjectFactory();
JAXBElement<NotificaEsitoCommittenteType> notificaEsitoCommittente = objMessaggi.createNotificaEsitoCommittente(notificaEsitoCommittenteType);
ByteArrayOutputStream outputStreamNotificaEsito = new ByteArrayOutputStream();
client.getMarshaller().marshal(notificaEsitoCommittente, new StreamResult(outputStreamNotificaEsito));
PasswordAuthentication authentication = getAuthenticatorPecSdi(userContext);
if (authentication == null) {
logger.error("Errore applicativo durante la Notifica di Esito Committente, contattare il servizio di HelpDesk!");
throw new ApplicationException("Errore applicativo durante la Notifica di Esito Committente, contattare il servizio di HelpDesk!");
}
/*
storeEsitoDocument(documentoEleTestataBulk, new ByteArrayInputStream(outputStreamNotificaEsito.toByteArray()),
documentoEleTestataBulk.getStatoDocumentoEle().equals(StatoDocumentoEleEnum.RIFIUTATO)?
StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_ESITO_RIFIUTATO.value():
StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_ESITO_ACCETTATO.value());
*/
fatturaService.notificaEsito(authentication.getUserName(), authentication.getPassword(), documentoEleTestataBulk, notificaEsitoCommittente);
} catch (ApplicationException _ex) {
throw _ex;
} catch (Exception _ex) {
logger.error("Errore applicativo durante la Notifica di Esito Committente, contattare il servizio di HelpDesk!" + _ex.getMessage(), _ex.getCause());
throw new ApplicationException("Errore applicativo durante la Notifica di Esito Committente, contattare il servizio di HelpDesk!\n" + _ex.getMessage(), _ex.getCause());
}
} else if (!tipoIntegrazioneSDI.equals(TipoIntegrazioneSDI.PEC)) {
ObjectFactory obj = new ObjectFactory();
FileSdIType fileSdIType = obj.createFileSdIType();
fileSdIType.setIdentificativoSdI(BigInteger.valueOf(documentoEleTestataBulk.getIdentificativoSdi()));
fileSdIType.setNomeFile(documentoEleTestataBulk.getNomeFile("EC"));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
client.getMarshaller().marshal(notificaEsitoCommittenteType, new StreamResult(outputStream));
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
DataSource ds = new UploadedFileDataSource(inputStream);
fileSdIType.setFile(new DataHandler(ds));
JAXBElement<FileSdIType> notificaEsito = obj.createNotificaEsito(fileSdIType);
ByteArrayOutputStream outputStreamNotificaEsito = new ByteArrayOutputStream();
client.getMarshaller().marshal(notificaEsito, new StreamResult(outputStreamNotificaEsito));
storeEsitoDocument(documentoEleTestataBulk, new ByteArrayInputStream(outputStreamNotificaEsito.toByteArray()), documentoEleTestataBulk.getStatoDocumentoEle().equals(StatoDocumentoEleEnum.RIFIUTATO) ? StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_ESITO_RIFIUTATO.value() : StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_ESITO_ACCETTATO.value());
}
}
Aggregations