use of it.cnr.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class CRUDFatturaPassivaElettronicaBP method scaricaFatturaFirmata.
public void scaricaFatturaFirmata(ActionContext actioncontext) throws IOException, ServletException, TransformerException, ApplicationException {
DocumentoEleTestataBulk documentoEleTestata = (DocumentoEleTestataBulk) getModel();
final StoreService storeService = SpringUtil.getBean("storeService", StoreService.class);
final StorageObject fattura = Optional.ofNullable(getModel()).filter(DocumentoEleTestataBulk.class::isInstance).map(DocumentoEleTestataBulk.class::cast).map(DocumentoEleTestataBulk::getDocumentoEleTrasmissione).map(DocumentoEleTrasmissioneBulk::getCmisNodeRef).map(cmisNodeRef -> storeService.getStorageObjectBykey(cmisNodeRef)).filter(storageObject -> Optional.ofNullable(storageObject).isPresent()).map(fatturaFolder -> storeService.getChildren(fatturaFolder.getKey()).stream().filter(storageObject -> storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value()).contains(StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_FATTURA_ELETTRONICA_XML_POST_FIRMA.value()) || storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value()).contains(StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_TRASMISSIONE_FATTURA.value())).reduce((x, y) -> {
return Optional.ofNullable(x).filter(storageObject -> storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value()).contains(StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_FATTURA_ELETTRONICA_XML_POST_FIRMA.value())).orElse(y);
}).get()).orElseThrow(() -> new RuntimeException("Fattura non trovata!"));
final HttpServletResponse response = ((HttpActionContext) actioncontext).getResponse();
InputStream is = storeService.getResource(fattura);
response.setContentLength(fattura.<BigInteger>getPropertyValue(StoragePropertyNames.CONTENT_STREAM_LENGTH.value()).intValue());
response.setContentType(fattura.getPropertyValue(StoragePropertyNames.CONTENT_STREAM_MIME_TYPE.value()));
response.setDateHeader("Expires", 0);
IOUtils.copyLarge(is, response.getOutputStream());
response.getOutputStream().flush();
}
use of it.cnr.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class CRUDFatturaPassivaElettronicaBP method scaricaFatturaHtml.
public void scaricaFatturaHtml(ActionContext actioncontext) throws IOException, ServletException, TransformerException, ApplicationException {
DocumentoEleTestataBulk documentoEleTestata = (DocumentoEleTestataBulk) getModel();
StorageObject fatturaFolder = SpringUtil.getBean("storeService", StoreService.class).getStorageObjectBykey(documentoEleTestata.getDocumentoEleTrasmissione().getCmisNodeRef());
List<StorageObject> files = SpringUtil.getBean("storeService", StoreService.class).getChildren(fatturaFolder.getKey());
for (StorageObject storageObject : files) {
if (storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value()).contains("P:sigla_fatture_attachment:trasmissione_fattura")) {
TransformerFactory tFactory = TransformerFactory.newInstance();
Source xslDoc = null;
if (documentoEleTestata.getDocumentoEleTrasmissione().getFormatoTrasmissione().equals("FPA12")) {
xslDoc = new StreamSource(this.getClass().getResourceAsStream("/it/cnr/contab/docamm00/bp/fatturapa_v1.2.1.xsl"));
} else if (documentoEleTestata.getDocumentoEleTrasmissione().getFormatoTrasmissione().equals("SDI11")) {
xslDoc = new StreamSource(this.getClass().getResourceAsStream("/it/cnr/contab/docamm00/bp/fatturapa_v1.1.xsl"));
} else {
throw new ApplicationException("Il formato trasmissione indicato da SDI non rientra tra i formati attesi");
}
Source xmlDoc = new StreamSource(SpringUtil.getBean("storeService", StoreService.class).getResource(storageObject.getKey()));
HttpServletResponse response = ((HttpActionContext) actioncontext).getResponse();
OutputStream os = response.getOutputStream();
response.setContentType("text/html");
Transformer trasform = tFactory.newTransformer(xslDoc);
trasform.transform(xmlDoc, new StreamResult(os));
os.flush();
}
}
}
use of it.cnr.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class CRUDFatturaPassivaElettronicaBP method scaricaEsito.
public void scaricaEsito(ActionContext actioncontext) throws IOException, ServletException, TransformerException, ApplicationException {
DocumentoEleTestataBulk documentoEleTestata = (DocumentoEleTestataBulk) getModel();
StorageObject fatturaFolder = SpringUtil.getBean("storeService", StoreService.class).getStorageObjectBykey(documentoEleTestata.getDocumentoEleTrasmissione().getCmisNodeRef());
List<StorageObject> files = SpringUtil.getBean("storeService", StoreService.class).getChildren(fatturaFolder.getKey());
for (StorageObject storageObject : files) {
if (storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value()).contains(documentoEleTestata.getStatoDocumentoEle().equals(StatoDocumentoEleEnum.RIFIUTATO) ? StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_ESITO_RIFIUTATO.value() : StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_ESITO_ACCETTATO.value())) {
HttpServletResponse response = ((HttpActionContext) actioncontext).getResponse();
OutputStream os = response.getOutputStream();
response.setContentType("application/octetstream");
response.setContentLength(storageObject.<BigInteger>getPropertyValue(StoragePropertyNames.CONTENT_STREAM_LENGTH.value()).intValue());
IOUtils.copy(SpringUtil.getBean("storeService", StoreService.class).getResource(storageObject.getKey()), os);
os.flush();
}
}
}
use of it.cnr.si.spring.storage.StorageObject 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.si.spring.storage.StorageObject in project sigla-main by consiglionazionaledellericerche.
the class CRUDFatturaPassivaBP method scaricaFatturaHtml.
public void scaricaFatturaHtml(ActionContext actioncontext) throws IOException, ServletException, TransformerException, ApplicationException {
Fattura_passivaBulk fattura_passivaBulk = (Fattura_passivaBulk) getModel();
DocumentoEleTestataBulk documentoEleTestata = fattura_passivaBulk.getDocumentoEleTestata();
StorageObject fatturaFolder = SpringUtil.getBean("storeService", StoreService.class).getStorageObjectBykey(documentoEleTestata.getDocumentoEleTrasmissione().getCmisNodeRef());
List<StorageObject> files = SpringUtil.getBean("storeService", StoreService.class).getChildren(fatturaFolder.getKey());
for (StorageObject storageObject : files) {
if (storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value()).contains("P:sigla_fatture_attachment:trasmissione_fattura")) {
TransformerFactory tFactory = TransformerFactory.newInstance();
Source xslDoc = null;
if (documentoEleTestata.getDocumentoEleTrasmissione().getFormatoTrasmissione().equals("FPA12")) {
xslDoc = new StreamSource(this.getClass().getResourceAsStream("/it/cnr/contab/docamm00/bp/fatturapa_v1.2.1.xsl"));
} else if (documentoEleTestata.getDocumentoEleTrasmissione().getFormatoTrasmissione().equals("SDI11")) {
xslDoc = new StreamSource(this.getClass().getResourceAsStream("/it/cnr/contab/docamm00/bp/fatturapa_v1.1.xsl"));
} else {
throw new ApplicationException("Il formato trasmissione indicato da SDI non rientra tra i formati attesi");
}
Source xmlDoc = new StreamSource(SpringUtil.getBean("storeService", StoreService.class).getResource(storageObject.getKey()));
HttpServletResponse response = ((HttpActionContext) actioncontext).getResponse();
OutputStream os = response.getOutputStream();
response.setContentType("text/html");
Transformer trasform = tFactory.newTransformer(xslDoc);
trasform.transform(xmlDoc, new StreamResult(os));
os.flush();
}
}
}
Aggregations