use of it.cnr.contab.docamm00.storage.StorageFileFatturaAttiva in project sigla-main by consiglionazionaledellericerche.
the class TrasmissioneFatture method salvaFileSuDocumentale.
private void salvaFileSuDocumentale(DataHandler data, String nomeFile, Fattura_attivaBulk fattura, StorageDocAmmAspect aspect) throws IOException, ApplicationException {
logger.info("Inizio Salvataggio sul Documentale");
DocumentiCollegatiDocAmmService documentiCollegatiDocAmmService = SpringUtil.getBean("documentiCollegatiDocAmmService", DocumentiCollegatiDocAmmService.class);
StorageFile storageFile = new StorageFileFatturaAttiva(data.getInputStream(), data.getContentType(), nomeFile, fattura);
if (storageFile != null) {
String path = storageFile.getStorageParentPath();
try {
StorageObject storageObject = documentiCollegatiDocAmmService.restoreSimpleDocument(storageFile, storageFile.getInputStream(), storageFile.getContentType(), storageFile.getFileName(), path, true);
documentiCollegatiDocAmmService.addAspect(storageObject, aspect.value());
storageFile.setStorageObject(storageObject);
logger.info("Salvato file sul Documentale");
} catch (StorageException e) {
if (e.getType().equals(StorageException.Type.CONSTRAINT_VIOLATED))
throw new ApplicationException("CMIS - File Ricevuta Consegna [" + storageFile.getFileName() + "] già presente o non completo di tutte le proprietà obbligatorie. Inserimento non possibile!");
throw new ApplicationException("CMIS - Errore nella registrazione del file Ricevuta Consegna sul Documentale (" + e.getMessage() + ")");
}
}
}
use of it.cnr.contab.docamm00.storage.StorageFileFatturaAttiva in project sigla-main by consiglionazionaledellericerche.
the class DocumentiCollegatiDocAmmService method archiviaFileCMIS.
private void archiviaFileCMIS(UserContext userContext, DocumentiCollegatiDocAmmService documentiCollegatiDocAmmService, Fattura_attivaBulk fattura, File file) throws ComponentException {
List<StorageFile> storageFileCreate = new ArrayList<StorageFile>();
List<StorageFile> storageFileAnnullati = new ArrayList<StorageFile>();
try {
StorageFileFatturaAttiva storageFile = new StorageFileFatturaAttiva(file, fattura, "application/pdf", "FAPP" + fattura.constructCMISNomeFile() + ".pdf");
String path = storageFile.getStorageParentPath();
StorageObject folder = documentiCollegatiDocAmmService.getStorageObjectByPath(path);
try {
Optional.ofNullable(documentiCollegatiDocAmmService.restoreSimpleDocument(storageFile, storageFile.getInputStream(), storageFile.getContentType(), storageFile.getFileName(), path, true)).ifPresent(storageObject -> {
List<String> aspects = storageObject.<List<String>>getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value());
aspects.add(StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_STAMPA_FATTURA_PRIMA_PROTOCOLLO.value());
documentiCollegatiDocAmmService.updateProperties(storageFile.getCMISFolder(fattura), folder);
documentiCollegatiDocAmmService.updateProperties(Collections.singletonMap(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value(), aspects), storageObject);
storageFile.setStorageObject(storageObject);
storageFileCreate.add(storageFile);
});
} catch (StorageException _ex) {
if (_ex.getType().equals(StorageException.Type.CONSTRAINT_VIOLATED))
throw new ApplicationException("CMIS - File [" + storageFile.getFileName() + "] già presente o non completo di tutte le proprietà obbligatorie. Inserimento non possibile!");
throw new ApplicationException("CMIS - Errore nella registrazione del file XML sul Documentale (" + _ex.getMessage() + ")");
}
} catch (Exception e) {
// Codice per riallineare il documentale allo stato precedente rispetto alle modifiche
for (StorageFile storageFile : storageFileCreate) documentiCollegatiDocAmmService.delete(storageFile.getStorageObject());
for (StorageFile storageFile : storageFileAnnullati) {
String cmisFileName = storageFile.getFileName();
String cmisFileEstensione = cmisFileName.substring(cmisFileName.lastIndexOf(".") + 1);
String stringToDelete = cmisFileName.substring(cmisFileName.indexOf("-ANNULLATO"));
storageFile.setFileName(cmisFileName.replace(stringToDelete, "." + cmisFileEstensione));
documentiCollegatiDocAmmService.updateProperties(storageFile, storageFile.getStorageObject());
}
throw new ApplicationException(e.getMessage());
}
}
use of it.cnr.contab.docamm00.storage.StorageFileFatturaAttiva in project sigla-main by consiglionazionaledellericerche.
the class CRUDSelezionatoreDocumentiAmministrativiFatturazioneElettronicaBP method protocollaECreaFileXml.
public Fattura_attivaBulk protocollaECreaFileXml(UserContext userContext, FatturaAttivaSingolaComponentSession componentFatturaAttiva, Fattura_attivaBulk fatturaAttiva) throws BusinessProcessException, ComponentException, RemoteException, PersistencyException {
logger.info("Processo la fattura {}/{}", fatturaAttiva.getEsercizio(), fatturaAttiva.getPg_fattura_attiva());
DocAmmFatturazioneElettronicaComponentSession component = createComponentSession();
// Questo metodo va invocato perchè fa tutti i controlli prima che la fattura venga protocollata
component.preparaFattura(userContext, fatturaAttiva);
if (fatturaAttiva.getProtocollo_iva() == null) {
Fattura_attivaBulk fatturaAttivaProtocollata = protocollazione(userContext, fatturaAttiva);
fatturaAttiva = fatturaAttivaProtocollata;
logger.info("Creato protocollazione {}/{}", fatturaAttiva.getEsercizio(), fatturaAttiva.getPg_fattura_attiva());
}
File file = creaFileXml(userContext, fatturaAttiva);
logger.info("Creato file XML {}/{}", fatturaAttiva.getEsercizio(), fatturaAttiva.getPg_fattura_attiva());
List<StorageFile> storageFileCreate = new ArrayList<StorageFile>();
List<StorageFile> storageFileAnnullati = new ArrayList<StorageFile>();
try {
StorageFile storageFile = new StorageFileFatturaAttiva(file, fatturaAttiva, "application/xml", "FAXA" + fatturaAttiva.constructCMISNomeFile() + ".xml");
if (storageFile != null) {
// E' previsto solo l'inserimento ma non l'aggiornamento
String path = storageFile.getStorageParentPath();
try {
Optional.ofNullable(documentiCollegatiDocAmmService.restoreSimpleDocument(storageFile, storageFile.getInputStream(), storageFile.getContentType(), storageFile.getFileName(), path, false)).ifPresent(storageObject -> {
List<String> aspects = storageObject.getPropertyValue(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value());
aspects.add(StorageDocAmmAspect.SIGLA_FATTURE_ATTACHMENT_FATTURA_ELETTRONICA_XML_ANTE_FIRMA.value());
documentiCollegatiDocAmmService.updateProperties(Collections.singletonMap(StoragePropertyNames.SECONDARY_OBJECT_TYPE_IDS.value(), aspects), storageObject);
storageFile.setStorageObject(storageObject);
storageFileCreate.add(storageFile);
});
logger.info("Salvato file XML sul Documentale");
} catch (StorageException _ex) {
if (_ex.getType().equals(StorageException.Type.CONSTRAINT_VIOLATED))
throw new ApplicationException("CMIS - File [" + storageFile.getFileName() + "] già presente o non completo di tutte le proprietà obbligatorie. Inserimento non possibile!");
throw new ApplicationException("CMIS - Errore nella registrazione del file XML sul Documentale (" + _ex.getMessage() + ")");
}
fatturaAttiva = componentFatturaAttiva.aggiornaFatturaPredispostaAllaFirma(userContext, fatturaAttiva);
}
} catch (Exception e) {
/*
Codice per riallineare il documentale allo stato precedente rispetto alle modifiche
*/
for (StorageFile storageFile : storageFileAnnullati) {
String cmisFileName = storageFile.getFileName();
String cmisFileEstensione = cmisFileName.substring(cmisFileName.lastIndexOf(".") + 1);
String stringToDelete = cmisFileName.substring(cmisFileName.indexOf("-ANNULLATO"));
storageFile.setFileName(cmisFileName.replace(stringToDelete, "." + cmisFileEstensione));
documentiCollegatiDocAmmService.updateProperties(storageFile, storageFile.getStorageObject());
}
throw new BusinessProcessException(e);
}
documentiCollegatiDocAmmService.gestioneAllegatiPerFatturazioneElettronica(userContext, fatturaAttiva);
return fatturaAttiva;
}
Aggregations