it.cnr.contab.docamm00.actions.CRUDFatturaPassivaAction Maven / Gradle / Ivy
/*
* Copyright (C) 2019 Consiglio Nazionale delle Ricerche
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
package it.cnr.contab.docamm00.actions;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Vector;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.ejb.EJBException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk;
import it.cnr.contab.anagraf00.core.bulk.BancaBulk;
import it.cnr.contab.anagraf00.core.bulk.TerzoBulk;
import it.cnr.contab.anagraf00.tabrif.bulk.Rif_modalita_pagamentoBulk;
import it.cnr.contab.compensi00.bp.CRUDCompensoBP;
import it.cnr.contab.compensi00.docs.bulk.CompensoBulk;
import it.cnr.contab.compensi00.docs.bulk.V_terzo_per_compensoBulk;
import it.cnr.contab.config00.bulk.CigBulk;
import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk;
import it.cnr.contab.docamm00.bp.CRUDFatturaPassivaBP;
import it.cnr.contab.docamm00.bp.CRUDFatturaPassivaIBP;
import it.cnr.contab.docamm00.bp.CRUDNotaDiCreditoBP;
import it.cnr.contab.docamm00.bp.CRUDNotaDiDebitoBP;
import it.cnr.contab.docamm00.bp.ContabilizzaOrdineBP;
import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoBP;
import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoSpesaBP;
import it.cnr.contab.docamm00.bp.RisultatoEliminazioneBP;
import it.cnr.contab.docamm00.bp.TitoloDiCreditoDebitoBP;
import it.cnr.contab.docamm00.docs.bulk.AssociazioniInventarioTable;
import it.cnr.contab.docamm00.docs.bulk.CarichiInventarioTable;
import it.cnr.contab.docamm00.docs.bulk.Fattura_passivaBulk;
import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_IBulk;
import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_rigaBulk;
import it.cnr.contab.docamm00.docs.bulk.Fattura_passiva_rigaIBulk;
import it.cnr.contab.docamm00.docs.bulk.Filtro_ricerca_obbligazioniVBulk;
import it.cnr.contab.docamm00.docs.bulk.IDocumentoAmministrativoBulk;
import it.cnr.contab.docamm00.docs.bulk.Lettera_pagam_esteroBulk;
import it.cnr.contab.docamm00.docs.bulk.Nota_di_creditoBulk;
import it.cnr.contab.docamm00.docs.bulk.Nota_di_credito_rigaBulk;
import it.cnr.contab.docamm00.docs.bulk.Nota_di_debitoBulk;
import it.cnr.contab.docamm00.docs.bulk.Nota_di_debito_rigaBulk;
import it.cnr.contab.docamm00.docs.bulk.ObbligazioniTable;
import it.cnr.contab.docamm00.docs.bulk.Risultato_eliminazioneVBulk;
import it.cnr.contab.docamm00.docs.bulk.TrovatoBulk;
import it.cnr.contab.docamm00.ejb.CategoriaGruppoInventComponentSession;
import it.cnr.contab.docamm00.ejb.FatturaPassivaComponentSession;
import it.cnr.contab.docamm00.ejb.VoceIvaComponentSession;
import it.cnr.contab.docamm00.tabrif.bulk.Bene_servizioBulk;
import it.cnr.contab.docamm00.tabrif.bulk.Categoria_gruppo_inventBulk;
import it.cnr.contab.docamm00.tabrif.bulk.Categoria_gruppo_voceBulk;
import it.cnr.contab.docamm00.tabrif.bulk.DivisaBulk;
import it.cnr.contab.docamm00.tabrif.bulk.Tipo_sezionaleBulk;
import it.cnr.contab.docamm00.tabrif.bulk.Voce_ivaBulk;
import it.cnr.contab.doccont00.bp.CRUDVirtualObbligazioneBP;
import it.cnr.contab.doccont00.core.bulk.ObbligazioneBulk;
import it.cnr.contab.doccont00.core.bulk.Obbligazione_scadenzarioBulk;
import it.cnr.contab.doccont00.core.bulk.OptionRequestParameter;
import it.cnr.contab.doccont00.core.bulk.SospesoBulk;
import it.cnr.contab.doccont00.ejb.ObbligazioneAbstractComponentSession;
import it.cnr.contab.inventario00.bp.AssBeneFatturaBP;
import it.cnr.contab.inventario00.docs.bulk.Ass_inv_bene_fatturaBulk;
import it.cnr.contab.inventario00.docs.bulk.V_ass_inv_bene_fatturaBulk;
import it.cnr.contab.inventario01.bp.CRUDCaricoInventarioBP;
import it.cnr.contab.inventario01.bulk.Buono_carico_scaricoBulk;
import it.cnr.contab.inventario01.ejb.BuonoCaricoScaricoComponentSession;
import it.cnr.contab.inventario01.ejb.NumerazioneTempBuonoComponentSession;
import it.cnr.contab.ordmag.ordini.bulk.EvasioneOrdineRigaBulk;
import it.cnr.contab.ordmag.ordini.bulk.FatturaOrdineBulk;
import it.cnr.contab.ordmag.ordini.bulk.OrdineAcqConsegnaBulk;
import it.cnr.contab.utenze00.bulk.CNRUserInfo;
import it.cnr.contab.utenze00.bulk.UtenteBulk;
import it.cnr.contab.util.Utility;
import it.cnr.jada.DetailedRuntimeException;
import it.cnr.jada.action.ActionContext;
import it.cnr.jada.action.BusinessProcessException;
import it.cnr.jada.action.Forward;
import it.cnr.jada.action.HookForward;
import it.cnr.jada.bulk.FillException;
import it.cnr.jada.bulk.OggettoBulk;
import it.cnr.jada.bulk.ValidationException;
import it.cnr.jada.comp.ApplicationException;
import it.cnr.jada.comp.ComponentException;
import it.cnr.jada.persistency.IntrospectionException;
import it.cnr.jada.persistency.PersistencyException;
import it.cnr.jada.persistency.sql.CompoundFindClause;
import it.cnr.jada.util.RemoteIterator;
import it.cnr.jada.util.action.BulkBP;
import it.cnr.jada.util.action.CRUDBP;
import it.cnr.jada.util.action.FormBP;
import it.cnr.jada.util.action.FormField;
import it.cnr.jada.util.action.OptionBP;
import it.cnr.jada.util.action.Selection;
import it.cnr.jada.util.action.SelezionatoreListaBP;
import it.cnr.jada.util.ejb.EJBCommonServices;
public class CRUDFatturaPassivaAction extends it.cnr.jada.util.action.CRUDAction {
private transient static final Logger logger = LoggerFactory.getLogger(CRUDFatturaPassivaAction.class);
public CRUDFatturaPassivaAction() {
super();
}
/**
* Aggiunge sul modello corrente del target i dettagli selzionati sul documento amministrativo di origine
* Ogni dettaglio deve essere in stato iniziale.
*/
private java.util.Vector basicAddDetailsTo(
ActionContext context,
CRUDNotaDiCreditoBP target)
throws BusinessProcessException {
Nota_di_creditoBulk notaDiCredito = (Nota_di_creditoBulk) target.getModel();
it.cnr.jada.bulk.BulkList dettagliNdC = notaDiCredito.getFattura_passiva_dettColl();
if (dettagliNdC == null) {
dettagliNdC = new it.cnr.jada.bulk.BulkList();
notaDiCredito.setFattura_passiva_dettColl(dettagliNdC);
}
java.util.Vector addedElements = new java.util.Vector();
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
if (!notaDiCredito.isEditable() || target.isViewing()) {
if (!bp.getDettaglio().getSelection().isEmpty())
target.setErrorMessage("Uno o più dettagli non sono stati aggiunti perchè la nota di credito è già stata pagata o annullata o riportata!");
} else {
for (java.util.Iterator i = bp.getDettaglio().getSelection().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaIBulk dettaglio = (Fattura_passiva_rigaIBulk) bp.getDettaglio().getDetails().get(((Integer) i.next()).intValue());
if (!dettaglio.STATO_INIZIALE.equals(dettaglio.getStato_cofi())) {
Nota_di_credito_rigaBulk dettaglioNdC = new Nota_di_credito_rigaBulk();
dettaglioNdC.setNotaDiCredito(notaDiCredito);
try {
try {
if (((FatturaPassivaComponentSession) bp.createComponentSession()).isBeneServizioPerSconto(context.getUserContext(), dettaglio))
throw new it.cnr.jada.bulk.FillException("Uno dei dettagli selezionati è un \"bene sconto\". Dettaglio non aggiunto.");
} catch (ComponentException exc) {
throw new BusinessProcessException(exc);
} catch (java.rmi.RemoteException exc) {
throw new BusinessProcessException(exc);
}
dettaglioNdC.copyFrom(dettaglio);
if (!isRigaContainedInDetails(dettaglioNdC, dettagliNdC)) {
dettaglioNdC.setUser(context.getUserInfo().getUserid());
dettagliNdC.add(dettaglioNdC);
addedElements.add(dettaglioNdC);
}
} catch (it.cnr.jada.bulk.FillException e) {
target.setErrorMessage("Uno o più dettagli non sono stati aggiunti o per mancanza di disponibiltà o perchè il bene contenuto è di tipo sconto/abbuono!");
}
}
}
}
if (!addedElements.isEmpty() && notaDiCredito.isToBeCreated()) {
//try {
//java.math.BigDecimal totNdC = notaDiCredito.getIm_totale_fattura().add(calcolaTotaleSelezionati(addedElements));
//notaDiCredito.setIm_totale_fattura(totNdC);
//} catch (it.cnr.jada.comp.ApplicationException e) {
//notaDiCredito.setIm_totale_fattura(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
//}
notaDiCredito.setIm_totale_fattura(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
notaDiCredito.calcolaTotaleFatturaFornitoreInEur();
}
return addedElements;
}
/**
* Aggiunge sul modello corrente del target i dettagli selzionati sul documento amministrativo di origine
* Ogni dettaglio deve essere in stato iniziale.
*/
private java.util.Vector basicAddDetailsTo(ActionContext context, CRUDNotaDiDebitoBP target)
throws BusinessProcessException {
Nota_di_debitoBulk notaDiDebito = (Nota_di_debitoBulk) target.getModel();
it.cnr.jada.bulk.BulkList dettagliNdD = notaDiDebito.getFattura_passiva_dettColl();
if (dettagliNdD == null) {
dettagliNdD = new it.cnr.jada.bulk.BulkList();
notaDiDebito.setFattura_passiva_dettColl(dettagliNdD);
}
java.util.Vector addedElements = new java.util.Vector();
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
if (!notaDiDebito.isEditable() || target.isViewing()) {
if (!bp.getDettaglio().getSelection().isEmpty())
target.setErrorMessage("Uno o più dettagli non sono stati aggiunti perchè la nota di debito è già stata pagata o annullata o riportata!");
} else {
for (java.util.Iterator i = bp.getDettaglio().getSelection().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaIBulk dettaglio = (Fattura_passiva_rigaIBulk) bp.getDettaglio().getDetails().get(((Integer) i.next()).intValue());
if (!dettaglio.STATO_INIZIALE.equals(dettaglio.getStato_cofi())) {
Nota_di_debito_rigaBulk dettaglioNdD = new Nota_di_debito_rigaBulk();
dettaglioNdD.setNotaDiDebito(notaDiDebito);
try {
try {
if (((FatturaPassivaComponentSession) bp.createComponentSession()).isBeneServizioPerSconto(context.getUserContext(), dettaglio))
throw new it.cnr.jada.bulk.FillException("Uno dei dettagli selezionati è un \"bene sconto\". Dettaglio non aggiunto.");
} catch (ComponentException exc) {
throw new BusinessProcessException(exc);
} catch (java.rmi.RemoteException exc) {
throw new BusinessProcessException(exc);
}
dettaglioNdD.copyFrom(dettaglio);
if (!isRigaContainedInDetails(dettaglioNdD, dettagliNdD)) {
dettaglioNdD.setUser(context.getUserInfo().getUserid());
dettagliNdD.add(dettaglioNdD);
addedElements.add(dettaglioNdD);
}
} catch (it.cnr.jada.bulk.FillException e) {
target.setErrorMessage("Uno o più dettagli non sono stati aggiunti o per mancanza di disponibiltà o perchè il bene contenuto è di tipo sconto/abbuono!");
}
}
}
}
if (!addedElements.isEmpty()) {
//try {
//java.math.BigDecimal totNdD = notaDiDebito.getIm_totale_fattura().add(calcolaTotaleSelezionati(addedElements));
//notaDiDebito.setIm_totale_fattura(totNdD);
//} catch (it.cnr.jada.comp.ApplicationException e) {
//notaDiDebito.setIm_totale_fattura(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
//}
notaDiDebito.setIm_totale_fattura(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
notaDiDebito.calcolaTotaleFatturaFornitoreInEur();
}
return addedElements;
}
/**
* Calcola l'importo disponibile per la nota di credito
*
* @param context L'ActionContext della richiesta
* @param riga
* @param vecchioTotale
* @throws FillException
*/
protected void basicCalcolaImportoDisponibileNC(
ActionContext context,
Fattura_passiva_rigaBulk riga,
java.math.BigDecimal vecchioTotale)
throws it.cnr.jada.bulk.FillException {
Fattura_passiva_rigaIBulk rigaFP = (Fattura_passiva_rigaIBulk) riga;
if (rigaFP.getQuantita() == null) rigaFP.setQuantita(new java.math.BigDecimal(1));
if (rigaFP.getPrezzo_unitario() == null) rigaFP.setPrezzo_unitario(new java.math.BigDecimal(0));
if (rigaFP.getIm_iva() == null)
rigaFP.setIm_iva(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
java.math.BigDecimal nuovoTotale = rigaFP.getIm_imponibile().add(rigaFP.getIm_iva()).add(rigaFP.getIm_totale_addebiti());
java.util.HashMap storni = rigaFP.getFattura_passivaI().getStorniHashMap();
if (storni == null ||
storni.get(rigaFP) == null ||
((java.util.List) storni.get(rigaFP)).isEmpty())
rigaFP.setIm_diponibile_nc(nuovoTotale);
else {
java.math.BigDecimal impStorni = vecchioTotale.subtract(rigaFP.getIm_diponibile_nc());
java.math.BigDecimal impDisponibile = nuovoTotale.subtract(impStorni);
if (impDisponibile.signum() < 0)
throw new it.cnr.jada.bulk.FillException("Attenzione: l'importo totale di riga (" + nuovoTotale + ") è inferiore all'importo totale di " + impStorni + " degli storni ad essa associati!");
rigaFP.setIm_diponibile_nc(impDisponibile);
}
}
/**
* Apre il pannello delle note di credito sul modello passato 'notaDiCebito' e nel
* caso in cui alcune righe sono selezionate in fattura, cerca di aggiungerle come
* dettagli della nota di credito stessa ('basicAddDetailsTo').
*/
private Forward basicDoApriNotaDiCredito(
ActionContext context,
Nota_di_creditoBulk notaDiCredito)
throws it.cnr.jada.comp.ApplicationException {
try {
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
if (bp.isDirty() && bp.getDettaglio().getSelection().size() != 0)
throw new it.cnr.jada.comp.ApplicationException("Il documento risulta modificato! Per continuare o salvare o deselezionare i dettagli da aggiungere alla nota di credito e ricercarli successivamente.");
//Assolutamente necessario eseguirlo DOPO i controlli
bp.rollbackUserTransaction();
String status = bp.isEditing() ? "M" : "V";
CRUDNotaDiCreditoBP notaBp = (CRUDNotaDiCreditoBP) context.createBusinessProcess("CRUDNotaDiCreditoBP", new Object[]{status + "Tn"});
if (notaDiCredito.getCrudStatus() == notaDiCredito.NORMAL) {
notaBp.edit(context, notaDiCredito);
notaDiCredito = (Nota_di_creditoBulk) notaBp.getModel();
} else {
notaDiCredito.setDt_termine_creazione_docamm(((Fattura_passivaBulk) notaBp.getModel()).getDt_termine_creazione_docamm());
notaBp.setModel(context, notaDiCredito);
}
basicAddDetailsTo(context, notaBp);
notaBp.setAutoGenerated(Boolean.TRUE);
context.addHookForward("chiusuraNotaDiCredito", this, "doChiusuraNotaDiCredito");
return context.addBusinessProcess(notaBp);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
}
/**
* Apre il pannello delle note di debito sul modello passato 'notaDiDebito' e nel
* caso in cui alcune righe sono selezionate in fattura, cerca di aggiungerle come
* dettagli della nota di debito stessa ('basicAddDetailsTo').
*/
private Forward basicDoApriNotaDiDebito(
ActionContext context,
Nota_di_debitoBulk notaDiDebito)
throws it.cnr.jada.comp.ApplicationException {
try {
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
if (bp.isDirty() && bp.getDettaglio().getSelection().size() != 0)
throw new it.cnr.jada.comp.ApplicationException("Il documento risulta modificato! Per continuare o salvare o deselezionare i dettagli da aggiungere alla nota di debito e ricercarli successivamente.");
//Assolutamente necessario eseguirlo DOPO i controlli
bp.rollbackUserTransaction();
String status = bp.isEditing() ? "M" : "V";
CRUDNotaDiDebitoBP notaBp = (CRUDNotaDiDebitoBP) context.createBusinessProcess("CRUDNotaDiDebitoBP", new Object[]{status + "Tn"});
if (notaDiDebito.getCrudStatus() == notaDiDebito.NORMAL) {
notaBp.edit(context, notaDiDebito);
notaDiDebito = (Nota_di_debitoBulk) notaBp.getModel();
} else {
notaDiDebito.setDt_termine_creazione_docamm(((Fattura_passivaBulk) notaBp.getModel()).getDt_termine_creazione_docamm());
notaBp.setModel(context, notaDiDebito);
}
basicAddDetailsTo(context, notaBp);
notaBp.setAutoGenerated(Boolean.TRUE);
context.addHookForward("chiusuraNotaDiDebito", this, "doChiusuraNotaDiDebito");
return context.addBusinessProcess(notaBp);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
}
/**
* Gestisce l'associazione della scadenza riportata con il documento amm.
* Se non esiste l'aggiunge, altrimenti sincronizza l'istanza già presente
*
* @param context L'ActionContext della richiesta
* @param newObblig scadenza selezionata dall'utente con riporta
* @return Il Forward alla pagina di risposta
*/
protected Forward basicDoBringBackOpenObbligazioniWindow(
ActionContext context,
Obbligazione_scadenzarioBulk newObblig) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
try {
TerzoBulk creditore = newObblig.getObbligazione().getCreditore();
Fattura_passivaBulk fp = (Fattura_passivaBulk) bp.getModel();
if (!fp.getFornitore().equalsByPrimaryKey(creditore) &&
!AnagraficoBulk.DIVERSI.equalsIgnoreCase(creditore.getAnagrafico().getTi_entita()))
throw new it.cnr.jada.comp.ApplicationException("La scadenza selezionata deve appartenere ad un'obbligazione che ha come creditore il fornitore della fattura!");
/* Rospuc 15/01/2015 Controllo SOSPESO compatibilità dell'obbligazione con il titolo capitolo selezionato
SOSPESO PER ESERCIZIO 2015 */
if (fp instanceof Fattura_passiva_IBulk) {
java.util.List dettagliDaContabilizzare = (java.util.List) fp.getObbligazioniHash().get(newObblig);
if (dettagliDaContabilizzare != null && !dettagliDaContabilizzare.isEmpty()) {
List titoloCapitoloValidolist = controllaSelezionePerTitoloCapitoloLista(context, dettagliDaContabilizzare.iterator());
Elemento_voceBulk titoloCapitoloObbligazione = newObblig.getObbligazione().getElemento_voce();
//Controllo la compatibilità dell'obbligazione con il titolo capitolo selezionato
Boolean compatibile = null;
if (titoloCapitoloValidolist != null && titoloCapitoloValidolist.size() != 0)
for (Iterator i = titoloCapitoloValidolist.iterator(); (i.hasNext() && (compatibile == null || !compatibile)); ) {
Categoria_gruppo_voceBulk bulk = (Categoria_gruppo_voceBulk) i.next();
if (bulk.getCd_elemento_voce().compareTo(titoloCapitoloObbligazione.getCd_elemento_voce()) == 0)
compatibile = new Boolean(true);
else
compatibile = new Boolean(false);
}
if (compatibile != null && !compatibile)
throw new it.cnr.jada.comp.ApplicationException("L'impegno selezionato non è compatibile con il titolo capitolo della categoria");//+ titoloCapitoloValido.getCd_ds_elemento_voce() + "\"!");
}
}
Obbligazione_scadenzarioBulk obbligazione = (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel();
if (obbligazione != null) {
resyncObbligazione(context, obbligazione, newObblig);
} else {
basicDoContabilizza(context, newObblig, null);
}
} catch (Throwable t) {
it.cnr.contab.doccont00.core.bulk.IDefferUpdateSaldi defSaldiBulk = bp.getDefferedUpdateSaldiParentBP().getDefferedUpdateSaldiBulk();
if (newObblig.getObbligazione().getPg_ver_rec().equals((Long) newObblig.getObbligazione().getSaldiInfo().get("pg_ver_rec")))
defSaldiBulk.removeFromDefferredSaldi(newObblig.getObbligazione());
try {
CRUDVirtualObbligazioneBP.rollbackToSafePoint(context);
} catch (Exception e) {
handleException(context, e);
}
return handleException(context, t);
}
return context.findDefaultForward();
}
/**
* Viene richiamato nel momento in cui si seleziona una valuta dal combo Valuta nella
* testata della fattura.
* Richiama a sua volta il metodo cercaCambio dalla component.
*/
private void basicDoCalcolaTotaleFatturaFornitoreInEur(Fattura_passivaBulk fattura) {
if (fattura != null)
fattura.calcolaTotaleFatturaFornitoreInEur();
}
/**
* Calcola i totali del dettaglio 'riga' e se necessario aggiorna l'importo disp
* per le note di credito relativo al dettaglio stesso
*/
protected void basicDoCalcolaTotaliDiRiga(
ActionContext context,
Fattura_passiva_rigaBulk riga,
java.math.BigDecimal vecchioTotale)
throws it.cnr.jada.bulk.FillException {
if (riga.getQuantita() == null) riga.setQuantita(new java.math.BigDecimal(1));
if (riga.getPrezzo_unitario() == null) riga.setPrezzo_unitario(new java.math.BigDecimal(0));
if (riga.getIm_iva() == null)
riga.setIm_iva(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
riga.setFl_iva_forzata(Boolean.FALSE);
riga.calcolaCampiDiRiga();
if (riga instanceof Fattura_passiva_rigaIBulk)
basicCalcolaImportoDisponibileNC(context, (Fattura_passiva_rigaIBulk) riga, vecchioTotale);
doSelectObbligazioni(context);
}
/**
* Gestisce una richiesta di ricerca.
*
* L'implementazione di default utilizza il metodo astratto read
* di CRUDBusinessProcess.
* Se la ricerca fornisce più di un risultato viene creato un
* nuovo SelezionatoreListaBP per la selezione di un elemento.
* Al business process viene anche chiesto l'elenco delle colonne da
* visualizzare.
*/
protected Forward basicDoCerca(ActionContext context) throws java.rmi.RemoteException, InstantiationException, javax.ejb.RemoveException {
try {
fillModel(context);
CRUDBP bp = getBusinessProcess(context);
OggettoBulk model = (OggettoBulk) bp.getModel();
it.cnr.jada.util.RemoteIterator ri = bp.find(context, null, model);
if (ri == null || ri.countElements() == 0) {
it.cnr.jada.util.ejb.EJBCommonServices.closeRemoteIterator(context, ri);
bp.setMessage("La ricerca non ha fornito alcun risultato.");
return context.findDefaultForward();
//} else if (ri.countElements() == 1) {
//OggettoBulk bulk = (OggettoBulk)ri.nextElement();
//return basicDoRiportaSelezione(context, bulk);
} else {
bp.setModel(context, model);
SelezionatoreListaBP nbp = (SelezionatoreListaBP) context.createBusinessProcess("Selezionatore");
nbp.setIterator(context, ri);
nbp.setBulkInfo(bp.getBulkInfo());
nbp.setColumns(getBusinessProcess(context).getSearchResultColumns());
context.addHookForward("seleziona", this, "doRiportaSelezione");
return context.addBusinessProcess(nbp);
}
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Gestisce la contabilizzazione dei dettagli selezionati, cioè crea
* l'associazione della scadenza riportata con i dettagli selezionati.
* Se non esiste la scadenza viene aggiunta, altrimenti aggiunge alla
* scadenza esistente il dettaglio risincronizzando infine le istanze
* e ricalcolando i totali di scadenza
*/
private void basicDoContabilizza(
ActionContext context,
Obbligazione_scadenzarioBulk obbligazione,
java.util.List selectedModels)
throws it.cnr.jada.comp.ComponentException {
if (obbligazione != null && selectedModels != null) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
java.util.Vector dettagliDaContabilizzare = new java.util.Vector();
dettagliDaContabilizzare.addAll(selectedModels);
ObbligazioniTable obbs = ((Fattura_passivaBulk) bp.getModel()).getObbligazioniHash();
if (obbs != null) {
java.util.List dettagliContabilizzati = (java.util.List) obbs.get(obbligazione);
if (dettagliContabilizzati != null && !dettagliContabilizzati.isEmpty())
dettagliDaContabilizzare.addAll(dettagliContabilizzati);
}
//Elemento_voceBulk titoloCapitoloValido = controllaSelezionePerTitoloCapitolo(context, dettagliDaContabilizzare.iterator());
Elemento_voceBulk titoloCapitoloObbligazione = obbligazione.getObbligazione().getElemento_voce();
// MI - controllo se l'obbligazione ha voce coerente con il tipo di bene
if (selectedModels != null && !selectedModels.isEmpty()) {
for (java.util.Iterator i = selectedModels.iterator(); i.hasNext(); ) {
Object rigaObj = i.next();
if (rigaObj instanceof Fattura_passiva_rigaIBulk) {
Fattura_passiva_rigaIBulk fpRiga = (Fattura_passiva_rigaIBulk) rigaObj;
if (!titoloCapitoloObbligazione.getFl_inv_beni_patr().equals(fpRiga.getBene_servizio().getFl_gestione_inventario())) {
final Optional flGestioneInventario = Optional.ofNullable(fpRiga)
.flatMap(fattura_passiva_rigaIBulk -> Optional.ofNullable(fattura_passiva_rigaIBulk.getBene_servizio()))
.flatMap(bene_servizioBulk -> Optional.ofNullable(bene_servizioBulk.getFl_gestione_inventario()));
if (flGestioneInventario.isPresent() && flGestioneInventario.get())
throw new it.cnr.jada.comp.ApplicationException("Il titolo capitolo dell'impegno selezionato non è utilizzabile per beni patrimoniali da inventariare!");
else
throw new it.cnr.jada.comp.ApplicationException("Il titolo capitolo dell'impegno selezionato non è utilizzabile per beni/servizi da non inventariare!");
}
}
}
}
try {
List titoloCapitoloValidolist;
if (dettagliDaContabilizzare != null && !dettagliDaContabilizzare.isEmpty()) {
titoloCapitoloValidolist = controllaSelezionePerTitoloCapitoloLista(context, dettagliDaContabilizzare.iterator());
//Controllo la compatibilità dell'obbligazione con il titolo capitolo selezionato
Boolean compatibile = null;
if (titoloCapitoloValidolist != null && titoloCapitoloValidolist.size() != 0)
for (Iterator i = titoloCapitoloValidolist.iterator(); (i.hasNext() && (compatibile == null || !compatibile)); ) {
Categoria_gruppo_voceBulk bulk = (Categoria_gruppo_voceBulk) i.next();
if (bulk.getCd_elemento_voce().compareTo(titoloCapitoloObbligazione.getCd_elemento_voce()) == 0)
compatibile = new Boolean(true);
else
compatibile = new Boolean(false);
}
if (compatibile != null && !compatibile)
throw new it.cnr.jada.comp.ApplicationException("L'impegno selezionato non è compatibile con il titolo capitolo della categoria");//+ titoloCapitoloValido.getCd_ds_elemento_voce() + "\"!");
}
} catch (PersistencyException e1) {
bp.handleException(e1);
} catch (IntrospectionException e1) {
bp.handleException(e1);
} catch (RemoteException e1) {
bp.handleException(e1);
} catch (BusinessProcessException e1) {
bp.handleException(e1);
}
/* Rospuc 15/01/2015 Controllo SOSPESO compatibilità dell'obbligazione con il titolo capitolo selezionato
SOSPESO PER ESERCIZIO 2015
//Controllo la compatibilità dell'obbligazione con il titolo capitolo selezionato
if (titoloCapitoloValido != null &&
!(titoloCapitoloObbligazione.getCd_elemento_voce().startsWith(titoloCapitoloValido.getCd_elemento_voce()) ||
titoloCapitoloValido.getCd_elemento_voce().startsWith(titoloCapitoloObbligazione.getCd_elemento_voce())))
throw new it.cnr.jada.comp.ApplicationException("L'impegno selezionato non è compatibile con il titolo capitolo \"" + titoloCapitoloValido.getCd_ds_elemento_voce() + "\"!");
*/
try {
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
Fattura_passivaBulk fattura = h.contabilizzaDettagliSelezionati(
context.getUserContext(),
(Fattura_passivaBulk) bp.getModel(),
selectedModels,
obbligazione);
try {
bp.setModel(context, fattura);
bp.setDirty(true);
doCalcolaTotalePerObbligazione(context, obbligazione);
if (!(fattura.isEstera() || fattura.isSanMarinoConIVA() || fattura.isSanMarinoSenzaIVA()) &&
!(obbligazione != null && obbligazione.getObbligazione() != null && obbligazione.getObbligazione().getContratto() != null && obbligazione.getObbligazione().getContratto().getCig() != null
&& obbligazione.getObbligazione().getContratto().getCig().getCdCig() != null)) {
bp.setMessage("L'impegno selezionato non ha il CIG. Indicare il CIG.");
}
} catch (BusinessProcessException e) {
}
} catch (java.rmi.RemoteException e) {
bp.handleException(e);
} catch (BusinessProcessException e) {
bp.handleException(e);
}
}
}
/**
* Creo una nuova istanza di nota di credito e ne richiedo l'apertura con il
* metodo 'basicDoApriNotaDiCredito'
*/
private Forward basicDoGeneraNotaDiCredito(ActionContext context)
throws ComponentException, BusinessProcessException {
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
Integer esercizioScrivania = it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext());
Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) bp.getModel();
if (fp.isRiportata() && esercizioScrivania.intValue() == fp.getEsercizio().intValue())
throw new it.cnr.jada.comp.ApplicationException("Non è possibile generare note di credito per fatture riportate!");
// Gennaro Borriello - (02/11/2004 16.48.21)
// Fix sul controllo dello "Stato Riportato": controlla che il documento sia stato
// riportato DA UN ES. PRECEDENTE a quello di scrivania.
// RP 16/03/2010 Da commentare per generare NC di fatture di anni precedenti
//else if (!fp.COMPLETAMENTE_RIPORTATO.equalsIgnoreCase(fp.getRiportataInScrivania()) && esercizioScrivania.intValue() != fp.getEsercizio().intValue())
//throw new it.cnr.jada.comp.ApplicationException("Non è possibile generare note di credito per fatture non completamente riportate nell'esercizio di scrivania!");
//if (fp.isRiportata() && !fp.COMPLETAMENTE_RIPORTATO.equalsIgnoreCase(fp.getRiportata()))
//throw new it.cnr.jada.comp.ApplicationException("Non è possibile generare note di credito per fatture non riportate completamente!");
try {
java.sql.Timestamp date = it.cnr.jada.util.ejb.EJBCommonServices.getServerDate();
int annoSolare = fp.getDateCalendar(date).get(java.util.Calendar.YEAR);
if (annoSolare != esercizioScrivania.intValue())
throw new it.cnr.jada.comp.ApplicationException("Non è possibile inserire note di credito in esercizi non corrispondenti all'anno solare!");
} catch (javax.ejb.EJBException e) {
return handleException(context, e);
}
//Rimanadato a basicDoApriNotaDiCredito
//bp.rollbackUserTransaction();
Nota_di_creditoBulk notaDiCredito = new Nota_di_creditoBulk(
fp,
esercizioScrivania);
creaEsercizioPerFatturaFornitore(context, notaDiCredito);
return basicDoApriNotaDiCredito(context, notaDiCredito);
}
/**
* Creo una nuova istanza di nota di debito e ne richiedo l'apertura con il
* metodo 'basicDoApriNotaDiDebito'
*/
private Forward basicDoGeneraNotaDiDebito(ActionContext context)
throws ComponentException, BusinessProcessException {
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
Integer esercizioScrivania = it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext());
Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) bp.getModel();
if (fp.isRiportata() && esercizioScrivania.intValue() == fp.getEsercizio().intValue())
throw new it.cnr.jada.comp.ApplicationException("Non è possibile generare note di debito per fatture riportate!");
// Gennaro Borriello - (02/11/2004 16.48.21)
// Fix sul controllo dello "Stato Riportato": controlla che il documento sia stato
// riportato DA UN ES. PRECEDENTE a quello di scrivania.
// else if (!fp.COMPLETAMENTE_RIPORTATO.equalsIgnoreCase(fp.getRiportataInScrivania()) && esercizioScrivania.intValue() != fp.getEsercizio().intValue())
// throw new it.cnr.jada.comp.ApplicationException("Non è possibile generare note di credito per fatture non completamente riportate nell'esercizio di scrivania!");
//if (fp.isRiportata() && !fp.COMPLETAMENTE_RIPORTATO.equalsIgnoreCase(fp.getRiportata()))
//throw new it.cnr.jada.comp.ApplicationException("Non è possibile generare note di debito per fatture non riportate completamente!");
try {
java.sql.Timestamp date = it.cnr.jada.util.ejb.EJBCommonServices.getServerDate();
int annoSolare = fp.getDateCalendar(date).get(java.util.Calendar.YEAR);
if (annoSolare != esercizioScrivania.intValue())
throw new it.cnr.jada.comp.ApplicationException("Non è possibile inserire note di debito in esercizi non corrispondenti all'anno solare!");
} catch (javax.ejb.EJBException e) {
return handleException(context, e);
}
//Rimanadato a basicDoApriNotaDiDebito
//bp.rollbackUserTransaction();
Nota_di_debitoBulk notaDiDebito = new Nota_di_debitoBulk(
fp,
esercizioScrivania);
creaEsercizioPerFatturaFornitore(context, notaDiDebito);
return basicDoApriNotaDiDebito(context, notaDiDebito);
}
/**
* creo una nuova istanza di buono di carico; lo inizializzo, aggiungo i dettagli
* selezionati e ne richiedo l'apertura. Se esistevano già dei buoni di carico, li
* elimino
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
* @throws BusinessProcessException
* @throws ComponentException
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward basicDoInventariaDettagli(ActionContext context)
throws BusinessProcessException,
ComponentException,
java.rmi.RemoteException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
CarichiInventarioTable carichi = fattura.getCarichiInventarioHash();
if (carichi != null && !carichi.isEmpty()) {
BuonoCaricoScaricoComponentSession h = (BuonoCaricoScaricoComponentSession) bp.createComponentSession(
"CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",
BuonoCaricoScaricoComponentSession.class);
for (java.util.Enumeration e = ((CarichiInventarioTable) carichi.clone()).keys(); e.hasMoreElements(); ) {
Buono_carico_scaricoBulk buono = (Buono_carico_scaricoBulk) e.nextElement();
buono.setToBeDeleted();
h.eliminaConBulk(context.getUserContext(), buono);
carichi.remove(buono);
}
for (java.util.Iterator i = fattura.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) i.next();
if (riga.isInventariato() && !fattura.getHa_beniColl()) riga.setInventariato(false);
}
}
java.util.List dettagliDaInventariare = getDettagliDaInventariare(context, bp.getDettaglio().getDetails().iterator());
if (dettagliDaInventariare != null && !dettagliDaInventariare.isEmpty()) {
CRUDCaricoInventarioBP ibp = (CRUDCaricoInventarioBP) context.createBusinessProcess("CRUDCaricoInventarioBP", new Object[]{"MRSWTh"});
Buono_carico_scaricoBulk bcs = new Buono_carico_scaricoBulk();
ibp.setBy_fattura(true);
bcs.setTi_documento(Buono_carico_scaricoBulk.CARICO);
bcs.setByFattura(Boolean.TRUE);
bcs.initializeForInsert(ibp, context);
bcs = (it.cnr.contab.inventario01.bulk.Buono_carico_scaricoBulk) ibp.createComponentSession().inizializzaBulkPerInserimento(context.getUserContext(), bcs);
bcs.completeFrom(dettagliDaInventariare);
try {
bcs.setPg_buono_c_s(((NumerazioneTempBuonoComponentSession) EJBCommonServices.createEJB(
"CNRINVENTARIO01_EJB_NumerazioneTempBuonoComponentSession",
NumerazioneTempBuonoComponentSession.class)).getNextTempPG(context.getUserContext(), bcs));
} catch (Throwable e) {
throw new ComponentException(e);
}
ibp.setModel(context, bcs);
ibp.setStatus(ibp.INSERT);
ibp.setDirty(false);
ibp.resetChildren(context);
context.addHookForward("bringback", this, "doBringBackInventariaDettagli");
HookForward hook = (HookForward) context.findForward("bringback");
hook.addParameter("dettagliDaInventariare", dettagliDaInventariare);
return context.addBusinessProcess(ibp);
}
bp.setMessage("Nessun dettaglio è inventariabile o tutti i dettagli inventariabili sono già stati caricati!");
return context.findDefaultForward();
}
public Forward basicDoAssociaDettagli(ActionContext context)
throws BusinessProcessException,
ComponentException,
java.rmi.RemoteException, PersistencyException, IntrospectionException, EJBException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
for (java.util.Iterator i = fattura.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) i.next();
AssociazioniInventarioTable associazioni = fattura.getAssociazioniInventarioHash();
if ((associazioni != null && !associazioni.isEmpty()) || (riga.getCrudStatus() != OggettoBulk.TO_BE_CREATED)) {
Ass_inv_bene_fatturaBulk ass = fattura.getAssociationWithInventarioFor(riga);
if ((ass != null) && !ass.isPerAumentoValore()) {
/*
R.p. Non elimino le associazioni gia' fatte
Fattura_passiva_rigaIBulk dettaglio = (Fattura_passiva_rigaIBulk)riga;
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession)bp.createComponentSession();
h.rimuoviDaAssociazioniInventario(
context.getUserContext(),
dettaglio,
ass);
fattura.removeFromAssociazioniInventarioHash(ass, dettaglio);*/
if (riga.isInventariato()) riga.setInventariato(false);
} else if (riga.getCrudStatus() != OggettoBulk.TO_BE_CREATED && (riga.getBene_servizio().getFl_gestione_inventario().booleanValue())) {
riga.setInventariato(false);
}
}
}//ricerca
java.util.List dettagliDaInventariare = getDettagliDaInventariare(context, bp.getDettaglio().getDetails().iterator());
if (dettagliDaInventariare != null && !dettagliDaInventariare.isEmpty()) {
AssBeneFatturaBP ibp = (AssBeneFatturaBP) context.getUserInfo().createBusinessProcess(context, "AssBeneFatturaBP", new Object[]{"MRSWTh"});
Ass_inv_bene_fatturaBulk associa = new Ass_inv_bene_fatturaBulk();
associa.setLocal_transactionID(ibp.getLocalTransactionID(context.getUserContext(), true));
associa.completeFrom(dettagliDaInventariare);
associa.setInventario(((BuonoCaricoScaricoComponentSession) EJBCommonServices.createEJB(
"CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",
BuonoCaricoScaricoComponentSession.class)).caricaInventario(context.getUserContext()));
ibp.setModel(context, associa);
ibp.setDirty(false);
context.addHookForward("bringback", this, "doBringBackAssociaInventario");
HookForward hook = (HookForward) context.findForward("bringback");
hook.addParameter("dettagliDaInventariare", dettagliDaInventariare);
return context.addBusinessProcess(ibp);
} else { //R.P. MODIFICA BENI già ASSOCIATI(IN SOSPESO)
if (fattura.getCrudStatus() != OggettoBulk.TO_BE_CREATED) {
List dettagli = bp.getDettaglio().getDetails();
for (Iterator i = dettagli.iterator(); i.hasNext(); ) {
if (dettagli.get(0) instanceof Fattura_passiva_rigaIBulk) {
Fattura_passiva_rigaIBulk riga = (Fattura_passiva_rigaIBulk) i.next();
if (riga.getBene_servizio().getFl_gestione_inventario().booleanValue())
dettagliDaInventariare.add(riga);
} else if (dettagli.get(0) instanceof Nota_di_credito_rigaBulk) {
Nota_di_credito_rigaBulk riga = (Nota_di_credito_rigaBulk) i.next();
if (riga.getBene_servizio().getFl_gestione_inventario().booleanValue())
dettagliDaInventariare.add(riga);
} else if (dettagli.get(0) instanceof Nota_di_debito_rigaBulk) {
Nota_di_debito_rigaBulk riga = (Nota_di_debito_rigaBulk) i.next();
if (riga.getBene_servizio().getFl_gestione_inventario().booleanValue())
dettagliDaInventariare.add(riga);
}
}
if (dettagliDaInventariare.size() == 0) {
bp.setMessage("Nessun dettaglio è inventariabile o tutti i dettagli inventariabili sono già stati caricati!");
return context.findDefaultForward();
}
AssBeneFatturaBP ibp = (AssBeneFatturaBP) context.getUserInfo().createBusinessProcess(context, "AssBeneFatturaBP", new Object[]{"MRSWTh"});
Ass_inv_bene_fatturaBulk associa = new Ass_inv_bene_fatturaBulk();
associa.setLocal_transactionID(ibp.getLocalTransactionID(context.getUserContext(), true));
associa.completeFrom(dettagliDaInventariare);
associa.setInventario(((BuonoCaricoScaricoComponentSession) EJBCommonServices.createEJB(
"CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",
BuonoCaricoScaricoComponentSession.class)).caricaInventario(context.getUserContext()));
ibp.setModel(context, associa);
ibp.setDirty(false);
context.addHookForward("bringback", this, "doBringBackAssociaInventario");
HookForward hook = (HookForward) context.findForward("bringback");
hook.addParameter("dettagliDaInventariare", dettagliDaInventariare);
return context.addBusinessProcess(ibp);
} else {
bp.setMessage("Nessun dettaglio è inventariabile o tutti i dettagli inventariabili sono già stati caricati!");
return context.findDefaultForward();
}
}
}
/**
* Viene richiamato nel momento in cui si seleziona una valuta dal combo Valuta nella
* testata della fattura.
* Richiama a sua volta il metodo cercaCambio dalla component.
*/
protected void basicDoOnIstituzionaleCommercialeChange(ActionContext context, Fattura_passivaBulk fattura)
throws it.cnr.jada.comp.ComponentException {
try {
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) ((CRUDFatturaPassivaBP) getBusinessProcess(context)).createComponentSession();
java.util.Vector sezionali = h.estraeSezionali(context.getUserContext(), fattura);
fattura.setSezionali(sezionali);
if (!getBusinessProcess(context).isSearching() &&
sezionali != null && !sezionali.isEmpty())
fattura.setTipo_sezionale((Tipo_sezionaleBulk) sezionali.firstElement());
else
fattura.setTipo_sezionale(null);
if (fattura.getFattura_passiva_dettColl() != null) {
Iterator dettagli = fattura.getFattura_passiva_dettColl().iterator();
while (dettagli.hasNext()) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) dettagli.next();
if (riga.getTi_istituz_commerc() != null && fattura.getTi_istituz_commerc() != null && !riga.getTi_istituz_commerc().equals(fattura.getTi_istituz_commerc())) {
riga.setTi_istituz_commerc(fattura.getTi_istituz_commerc());
riga.setToBeUpdated();
}
}
}
/*commentato perchè da problemi con la fatturazione elettronica che trova già il fornitore caricato
if (fattura.getFornitore() != null && fattura.getFornitore().getCrudStatus() == it.cnr.jada.bulk.OggettoBulk.NORMAL) {
doBlankSearchFornitore(context, fattura);
((it.cnr.jada.util.action.CRUDBP)context.getBusinessProcess()).setMessage("Attenzione: il fornitore non è più valido. Selezionare un altro fornitore!");
}*/
} catch (Throwable t) {
throw new it.cnr.jada.comp.ComponentException(t);
}
}
/**
* Prepara e apre il filtro di ricerca per le obbligazioni valide al collegamento
* con documenti amministrativi.
*/
private Forward basicDoRicercaObbligazione(
ActionContext context,
Fattura_passivaBulk fatturaPassiva,
java.util.List models) {
try {
controllaQuadraturaConti(context, fatturaPassiva);
Filtro_ricerca_obbligazioniVBulk filtro = new Filtro_ricerca_obbligazioniVBulk();
filtro.setData_scadenziario(fatturaPassiva.getDt_scadenza());
filtro.setFornitore(fatturaPassiva.getFornitore());
filtro.setIm_importo(calcolaTotaleSelezionati(models, fatturaPassiva.quadraturaInDeroga()));
filtro.setCd_unita_organizzativa(fatturaPassiva.getCd_uo_origine());
filtro.setHasDocumentoCompetenzaCOGEInAnnoPrecedente(fatturaPassiva.hasCompetenzaCOGEInAnnoPrecedente());
filtro.setHasDocumentoCompetenzaCOGESoloInAnnoCorrente(
!fatturaPassiva.hasCompetenzaCOGEInAnnoPrecedente() &&
fatturaPassiva.getDateCalendar(fatturaPassiva.getDt_a_competenza_coge()).get(java.util.Calendar.YEAR) == fatturaPassiva.getEsercizio().intValue());
if (filtro.getData_scadenziario() == null)
filtro.setFl_data_scadenziario(Boolean.FALSE);
if (models == null || models.isEmpty())
filtro.setFl_importo(Boolean.FALSE);
else {
Fattura_passiva_rigaBulk firstRow = (Fattura_passiva_rigaBulk) models.get(0);
// Rospuc 15/01/2015 Controllo SOSPESO compatibilità dell'obbligazione con il titolo capitolo selezionato
//SOSPESO PER ESERCIZIO 2015
// if (firstRow.getBene_servizio().getFl_gestione_inventario().booleanValue()) {
// Elemento_voceBulk ev = getElementoVoce(context, firstRow.getBene_servizio().getCategoria_gruppo());
// filtro.setElemento_voce(ev);
// }
}
BulkBP robp = (BulkBP) context.getUserInfo().createBusinessProcess(context, "RicercaObbligazioniBP", new Object[]{"MRSWTh"});
robp.setModel(context, filtro);
context.addHookForward("bringback", this, "doContabilizza");
HookForward hook = (HookForward) context.findForward("bringback");
return context.addBusinessProcess(robp);
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Prepara e apre la ricerca per l'evasione dell'ordine
*/
private Forward basicDoRicercaEvasioneOrdine(ActionContext context, Fattura_passivaBulk fatturaPassiva, List models, boolean manually) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
return Optional.ofNullable(models)
.filter(list -> list.size() == 1 && manually)
.map((List list) -> {
try {
final RemoteIterator contabilizzaRigaIterator = bp.find(context, new CompoundFindClause(),
new EvasioneOrdineRigaBulk(), models.get(0), "contabilizzaRiga");
return Optional.ofNullable(contabilizzaRigaIterator)
.map(remoteIterator -> {
try {
return remoteIterator.countElements();
} catch (RemoteException e) {
throw new DetailedRuntimeException(e);
}
})
.filter(elements -> elements != 0)
.map(integer -> {
try {
ContabilizzaOrdineBP nbp = (ContabilizzaOrdineBP) context.createBusinessProcess("ContabilizzaOrdineBP", new Object[]{"MRSWTh"});
nbp.setFattura_passiva_rigaBulk(models.get(0));
nbp.setMultiSelection(true);
nbp.setIterator(context, contabilizzaRigaIterator);
context.addHookForward("seleziona", this, "doContabilizzaOrdine");
return (Forward)context.addBusinessProcess(nbp);
} catch (BusinessProcessException | RemoteException e) {
throw new DetailedRuntimeException(e);
}
}).orElseGet(() -> {
bp.setMessage("Non ci sono dati per i criteri impostati!");
try {
contabilizzaRigaIterator.close();
} catch (RemoteException e) {
throw new DetailedRuntimeException(e);
}
return context.findDefaultForward();
});
} catch (Throwable e) {
return handleException(context, e);
}
}).orElseGet(() -> {
if (manually) {
bp.setMessage(FormBP.WARNING_MESSAGE, "Per procedere, bisogna selezionare un unico dettaglio da contabilizzare!");
} else {
final Map result = models.stream().map(fattura_passiva_rigaBulk -> {
try {
return bp.associaOrdineRigaFattura(context, fattura_passiva_rigaBulk);
} catch (BusinessProcessException e) {
throw new DetailedRuntimeException(e);
}
}).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
final Long righeContabilizzate = Optional.ofNullable(result.get(true)).orElse(Long.valueOf(0));
if (righeContabilizzate.intValue() == models.size()) {
bp.setMessage(FormBP.INFO_MESSAGE,"Tutte le righe selezionate sono state contabilizzate.");
} else {
bp.setMessage(FormBP.ERROR_MESSAGE,"Sono state contabilizzate " + righeContabilizzate + " righe su " + models.size() + "! Procedere alla conatbilizzazione manuale.");
}
}
return context.findDefaultForward();
});
}
/**
* Contabilizza i dettagli selezionati previo controllo della selezione
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doContabilizzaOrdine(ActionContext context) {
HookForward caller = (HookForward) context.getCaller();
final Supplier> selectedElements = () ->
Optional.ofNullable(caller.getParameter("selectedElements"))
.filter(List.class::isInstance)
.map(List.class::cast)
.filter(list -> !list.isEmpty())
.map(list ->
list.stream()
.filter(EvasioneOrdineRigaBulk.class::isInstance)
.map(EvasioneOrdineRigaBulk.class::cast)
).orElse(Stream.empty());
Optional crudFatturaPassivaBP = Optional.ofNullable(context.getBusinessProcess())
.filter(CRUDFatturaPassivaBP.class::isInstance)
.map(CRUDFatturaPassivaBP.class::cast);
if (!crudFatturaPassivaBP.isPresent())
return context.findDefaultForward();
final Map> collectBeneServizio = selectedElements.get().collect(
Collectors.groupingBy(o -> o.getOrdineAcqConsegna().getOrdineAcqRiga().getCdBeneServizio())
);
if (collectBeneServizio.size() > 1) {
crudFatturaPassivaBP.get().setMessage("Non è possibile collegare alla stessa riga di fattura consegne che hanno beni diversi ["
.concat(collectBeneServizio.keySet().stream().collect(Collectors.joining(","))).concat("]"));
return context.findDefaultForward();
}
final Map> collectCodiciIva = selectedElements.get().collect(
Collectors.groupingBy(o -> o.getOrdineAcqConsegna().getOrdineAcqRiga().getCdVoceIva())
);
if (collectCodiciIva.size() > 1) {
crudFatturaPassivaBP.get().setMessage("Non è possibile collegare alla stessa riga di fattura consegne che hanno codici iva diversi ["
.concat(collectCodiciIva.keySet().stream().collect(Collectors.joining(","))).concat("]"));
return context.findDefaultForward();
}
try {
Optional fattura_passiva_rigaBulk =
Optional.ofNullable(crudFatturaPassivaBP.get().getDettaglio().getDetails().get(crudFatturaPassivaBP.get().getDettaglio().getSelection().getFocus()))
.filter(Fattura_passiva_rigaBulk.class::isInstance)
.map(Fattura_passiva_rigaBulk.class::cast);
if (fattura_passiva_rigaBulk.isPresent()) {
selectedElements.get().forEach(evasioneOrdineRigaBulk -> {
fattura_passiva_rigaBulk.get().setBene_servizio(Optional.ofNullable(fattura_passiva_rigaBulk.get().getBene_servizio())
.orElseGet(() -> evasioneOrdineRigaBulk.getOrdineAcqConsegna().getOrdineAcqRiga().getBeneServizio())
);
fattura_passiva_rigaBulk.get().setVoce_iva(Optional.ofNullable(fattura_passiva_rigaBulk.get().getVoce_iva())
.orElseGet(() -> evasioneOrdineRigaBulk.getOrdineAcqConsegna().getOrdineAcqRiga().getVoce_iva())
);
fattura_passiva_rigaBulk.get().setDs_riga_fattura(Optional.ofNullable(fattura_passiva_rigaBulk.get().getDs_riga_fattura())
.orElseGet(() -> evasioneOrdineRigaBulk.getOrdineAcqConsegna().getOrdineAcqRiga().getBeneServizio().getDs_bene_servizio())
);
fattura_passiva_rigaBulk.get().setPrezzo_unitario(Optional.ofNullable(fattura_passiva_rigaBulk.get().getPrezzo_unitario())
.orElseGet(() -> evasioneOrdineRigaBulk.getOrdineAcqConsegna().getOrdineAcqRiga().getPrezzoUnitario())
);
fattura_passiva_rigaBulk.get().setQuantita(Optional.ofNullable(fattura_passiva_rigaBulk.get().getQuantita())
.orElseGet(() -> evasioneOrdineRigaBulk.getQuantitaEvasa())
);
doCalcolaTotaliDiRiga(context);
try {
crudFatturaPassivaBP.get().associaOrdineRigaFattura(context, evasioneOrdineRigaBulk, fattura_passiva_rigaBulk.get());
} catch (BusinessProcessException e) {
throw new DetailedRuntimeException(e);
}
});
}
return context.findDefaultForward();
} catch (Throwable _ex) {
return handleException(context, _ex);
}
}
/**
* Riporta il documento amministrativo selezionato dall'utente (caso delle cancellazioni
* di note di debito e credito)
*/
protected Forward basicDoRiportaSelezione(ActionContext context, it.cnr.jada.bulk.OggettoBulk selezione) throws java.rmi.RemoteException {
try {
if (selezione != null) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
bp.edit(context, selezione);
selezione = bp.getModel();
//if (!Fattura_passivaBulk.COMPLETAMENTE_RIPORTATO.equalsIgnoreCase(((Fattura_passivaBulk)selezione).getRiportata()) ||
//((Fattura_passivaBulk)selezione).isCongelata())
//throw new it.cnr.jada.comp.ApplicationException("Il documento amministrativo risulta riportato o congelato! Operazione annullata.");
// Borriello: integrazione Err. CNR 775
Integer esScriv = it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext());
if ((((Fattura_passivaBulk) selezione).getEsercizio().compareTo(esScriv) == 0) && ((Fattura_passivaBulk) selezione).isRiportata()) {
throw new it.cnr.jada.comp.ApplicationException("Il documento amministrativo risulta (parzialmente) riportato! Operazione annullata.");
}
// Gennaro Borriello - (09/11/2004 18.08.57)
// Nuova gestione dello stato getRiportata()
if ((((Fattura_passivaBulk) selezione).getEsercizio().compareTo(esScriv) != 0) && (!Fattura_passivaBulk.COMPLETAMENTE_RIPORTATO.equalsIgnoreCase(((Fattura_passivaBulk) selezione).getRiportataInScrivania()))) {
throw new it.cnr.jada.comp.ApplicationException("Il documento amministrativo non risulta completamente riportato! Operazione annullata.");
}
context.closeBusinessProcess();
HookForward forward = (HookForward) context.findForward("bringback");
forward.addParameter("documentoAmministrativoSelezionato", selezione);
return forward;
}
} catch (Exception e) {
return handleException(context, e);
}
return context.findDefaultForward();
}
/**
* Calcola i totali per l'eelnco dei dettagli selezionati. Nel caso di fattura
* vengono tolti gli importi di storno e aggiunti gli addebiti
*
* @param selectedModels
* @return
* @throws ApplicationException
*/
protected java.math.BigDecimal calcolaTotaleSelezionati(
java.util.List selectedModels,
boolean escludiIVA)
throws it.cnr.jada.comp.ApplicationException {
java.math.BigDecimal importo = new java.math.BigDecimal(0);
boolean escludiIVAInt = false;
boolean escludiIVAOld = escludiIVA;
if (selectedModels != null) {
for (java.util.Iterator i = selectedModels.iterator(); i.hasNext(); ) {
escludiIVA = escludiIVAOld;
Fattura_passiva_rigaBulk rigaSelected = (Fattura_passiva_rigaBulk) i.next();
boolean autofattura = Optional.ofNullable(rigaSelected)
.map(fattura_passiva_rigaBulk -> Optional.ofNullable(fattura_passiva_rigaBulk.getVoce_iva()).orElse(new Voce_ivaBulk()))
.map(voce_ivaBulk -> voce_ivaBulk.getFl_autofattura()).orElse(false);
//RP 20/03/2015
if (!escludiIVA && autofattura)
escludiIVAInt = true;
else if (!escludiIVA && !autofattura)
escludiIVAInt = false;
if (escludiIVAInt)
escludiIVA = escludiIVAInt;
// fine RP 20/03/2015
java.math.BigDecimal imTotale = (escludiIVA) ?
rigaSelected.getIm_imponibile() :
rigaSelected.getIm_imponibile().add(rigaSelected.getIm_iva());
java.math.BigDecimal imStornati = new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
java.math.BigDecimal imAddebitati = new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
if (rigaSelected instanceof Fattura_passiva_rigaIBulk) {
Fattura_passiva_rigaIBulk dettaglioFatturaPassiva = (Fattura_passiva_rigaIBulk) rigaSelected;
java.math.BigDecimal impStorniDiRiga = (escludiIVA) ?
calcolaTotaleSelezionati((Vector) dettaglioFatturaPassiva.getFattura_passivaI().getStorniHashMap().get(dettaglioFatturaPassiva), true) :
dettaglioFatturaPassiva.getIm_totale_storni();
imStornati = imStornati.add(impStorniDiRiga);
java.math.BigDecimal impAddebitiDiRiga = (escludiIVA) ?
calcolaTotaleSelezionati((Vector) dettaglioFatturaPassiva.getFattura_passivaI().getAddebitiHashMap().get(dettaglioFatturaPassiva), true) :
dettaglioFatturaPassiva.getIm_totale_addebiti();
imAddebitati = imAddebitati.add(impAddebitiDiRiga);
}
importo = importo.add(imTotale.add(imAddebitati).subtract(imStornati));
}
}
importo = importo.setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
return importo;
}
/**
* Viene richiamato nel momento in cui si seleziona una valuta dal combo Valuta nella
* testata della fattura.
* Richiama a sua volta il metodo cercaCambio dalla component.
*/
private Voce_ivaBulk caricaVoceIVADefault(ActionContext context)
throws it.cnr.jada.comp.ComponentException {
try {
VoceIvaComponentSession h = (VoceIvaComponentSession)
context.getBusinessProcess().createComponentSession("CNRDOCAMM00_EJB_VoceIvaComponentSession", VoceIvaComponentSession.class);
return h.caricaVoceIvaDefault(context.getUserContext());
} catch (Throwable t) {
throw new it.cnr.jada.comp.ComponentException(t);
}
}
/**
* Gestisce un comando di cancellazione o annullamento.
* Nel caso di ndc o ndd richiede la gestione della quadratura delle scadenze di doc cont
* tramite il gestore 'RisultatoEleminazioneBP'
*/
public Forward confermaEliminazione(ActionContext context, int option) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
try {
if (it.cnr.jada.util.action.OptionBP.YES_BUTTON == option) {
Fattura_passivaBulk fp = (Fattura_passivaBulk) bp.getModel();
if (!bp.isEditing()) {
bp.setMessage("Non è possibile cancellare in questo momento");
} else {
bp.delete(context);
RisultatoEliminazioneBP rebp = (RisultatoEliminazioneBP) context.createBusinessProcess("RisultatoEliminazioneBP", new String[]{"MRSWTh"});
Risultato_eliminazioneVBulk deleteManager = null;
if (!(bp instanceof CRUDFatturaPassivaIBP))
deleteManager = rebp.manageDelete(context, bp);
if (deleteManager != null &&
(!deleteManager.getDocumentiAmministrativiScollegati().isEmpty() || !deleteManager.getDocumentiContabiliScollegati().isEmpty())) {
rebp.edit(context, deleteManager);
context.addHookForward("bringback", this, "doBringBackConfirmDelete");
HookForward hook = (HookForward) context.findForward("bringback");
return context.addBusinessProcess(rebp);
} else {
bp.commitUserTransaction();
if (fp.isVoidable()) {
bp.setMessage("Annullamento effettuato.");
bp.edit(context, bp.getModel());
} else {
if (!(bp instanceof CRUDFatturaPassivaIBP)) {
//Nel caso in cui Ndc e Ndd vengano aggiornate completamente in
//automatico e non sia necessario il gestore cancellazioni riapro la
//fattura passiva di origine
doCloseForm(context);
Forward fwd = doChiusuraNotaDiCredito(context);
((CRUDFatturaPassivaIBP) context.getBusinessProcess()).setMessage("Cancellazione effettuata.");
return fwd;
}
bp.reset(context);
bp.setMessage("Cancellazione effettuata.");
}
}
}
}
return context.findDefaultForward();
} catch (Throwable e) {
try {
bp.rollbackUserTransaction();
bp.edit(context, bp.getModel());
} catch (it.cnr.jada.action.BusinessProcessException ex) {
return handleException(context, ex);
}
return handleException(context, e);
}
}
/**
* Invoca il metodo sulla component per la validazione e quadratura dei totali
* tra testata e dettagli
*/
protected void controllaQuadraturaConti(ActionContext context, Fattura_passivaBulk fatturaPassiva)
throws it.cnr.jada.comp.ComponentException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
try {
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
h.controllaQuadraturaConti(context.getUserContext(), fatturaPassiva);
} catch (java.rmi.RemoteException e) {
bp.handleException(e);
} catch (BusinessProcessException e) {
bp.handleException(e);
}
}
/**
* Invoca il metodo sulla component per la validazione e quadratura dei totali
* tra l'importo totale dei dettagli associati ad una scadenza di documento
* contabile e l'importo della scadenza stessa
*/
private void controllaQuadraturaObbligazioni(ActionContext context, Fattura_passivaBulk fatturaPassiva)
throws it.cnr.jada.comp.ComponentException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
try {
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
h.controllaQuadraturaObbligazioni(context.getUserContext(), fatturaPassiva);
} catch (java.rmi.RemoteException e) {
bp.handleException(e);
} catch (BusinessProcessException e) {
bp.handleException(e);
}
}
/**
* Controlla che i dettagli selezionati per la contabilizzazione siano tutti in
* stato iniziale (e --> non siano stati contabilizzati precedentemente)
*/
protected void controllaSelezionePerContabilizzazione(ActionContext context, java.util.Iterator selectedModels)
throws it.cnr.jada.comp.ApplicationException {
if (selectedModels != null) {
while (selectedModels.hasNext()) {
Fattura_passiva_rigaBulk rigaSelected = (Fattura_passiva_rigaBulk) selectedModels.next();
if (!Fattura_passiva_rigaBulk.STATO_INIZIALE.equals(rigaSelected.getStato_cofi()))
throw new it.cnr.jada.comp.ApplicationException("Il dettaglio \"" + rigaSelected.getDs_riga_fattura() + "\" è già stato contabilizzato! Modificare la selezione.");
try {
rigaSelected.validaDateCompetenza();
} catch (ValidationException e) {
throw new it.cnr.jada.comp.ApplicationException(e.getMessage());
}
}
}
}
/**
* In base alla data fattura fornitore di testata calcola e imposta l'esercizio
* di validità del fornitore
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva
* @throws ComponentException
*/
protected void creaEsercizioPerFatturaFornitore(ActionContext context, Fattura_passivaBulk fattura_passiva) throws ComponentException {
if (fattura_passiva == null) return;
if (fattura_passiva.getDt_fattura_fornitore() != null) {
java.util.GregorianCalendar gc = (java.util.GregorianCalendar) java.util.GregorianCalendar.getInstance();
gc.setTime(new java.util.Date(fattura_passiva.getDt_fattura_fornitore().getTime()));
Integer year = new Integer(gc.get(java.util.GregorianCalendar.YEAR));
fattura_passiva.setEsercizio_fattura_fornitore(year);
} else
fattura_passiva.setEsercizio_fattura_fornitore(null);
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doAddToCRUD(ActionContext context, String tableName) {
it.cnr.jada.util.action.CRUDBP bp = getBusinessProcess(context);
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
if (fatturaPassiva.getTi_istituz_commerc() == null || fatturaPassiva.getTipo_sezionale() == null) {
bp.setErrorMessage("Specificare prima una tipologia e un sezionale per la fattura.");
return context.findDefaultForward();
}
return super.doAddToCRUD(context, tableName);
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doAddToCRUDMain_Dettaglio(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
bp.getDettaglio().add(context);
Optional.ofNullable(bp.getDettaglio().getModel())
.filter(Fattura_passiva_rigaBulk.class::isInstance)
.map(Fattura_passiva_rigaBulk.class::cast)
.ifPresent(fattura_passiva_rigaBulk -> {
fattura_passiva_rigaBulk.setBene_servizio(new Bene_servizioBulk());
fattura_passiva_rigaBulk.setVoce_iva(new Voce_ivaBulk());
});
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doAddToCRUDMain_Obbligazioni(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
bp.getDettaglio().getSelection().clearSelection();
fillModel(context);
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
if (fatturaPassiva.isGestione_doc_ele() && fatturaPassiva.isGenerataDaCompenso())
throw new it.cnr.jada.comp.ApplicationException("La fattura deve essere associata a compenso, la contabilizzazione verrà fatta direttamente nel compenso!");
if (fatturaPassiva.getFornitore() == null || fatturaPassiva.getFornitore().getCrudStatus() == it.cnr.jada.bulk.OggettoBulk.UNDEFINED)
throw new it.cnr.jada.comp.ApplicationException("Per eseguire questa operazione è necessario selezionare un fornitore!");
return basicDoRicercaObbligazione(context, fatturaPassiva, null);
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doAddToCRUDMain_Obbligazioni_DettaglioObbligazioni(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
bp.getDettaglio().getSelection().clearSelection();
fillModel(context);
Obbligazione_scadenzarioBulk obbligazione = (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel();
if (obbligazione == null)
throw new it.cnr.jada.comp.ApplicationException("Selezionare l'impegno a cui associare i dettagli.");
java.util.Vector selectedModels = new java.util.Vector();
for (java.util.Enumeration e = bp.getDettaglio().getElements(); e.hasMoreElements(); ) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) e.nextElement();
if (riga.STATO_INIZIALE.equals(riga.getStato_cofi()))
selectedModels.add(riga);
}
if (selectedModels.isEmpty())
throw new it.cnr.jada.comp.ApplicationException("Tutti i dettagli sono già stati contabilizzati!");
it.cnr.jada.util.action.SelezionatoreListaBP slbp = (it.cnr.jada.util.action.SelezionatoreListaBP) select(
context,
new it.cnr.jada.util.ListRemoteIterator(selectedModels),
it.cnr.jada.bulk.BulkInfo.getBulkInfo(Fattura_passiva_rigaBulk.class),
"righiSet",
"doBringBackAddToCRUDMain_Obbligazioni_DettaglioObbligazioni");
slbp.setMultiSelection(true);
return slbp;
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Chiede conferma per l'apertura del pannello delle fatture sul modello fattura
* estera specificato per le fatture di tipo bolla doganale e spedizioniere
*/
public Forward doApriFatturaEstera(ActionContext context) {
try {
CRUDBP bp = getBusinessProcess(context);
fillModel(context);
if (bp.isDirty())
return openContinuePrompt(context, "doConfermaApriFatturaEstera");
return doConfermaApriFatturaEstera(context, it.cnr.jada.util.action.OptionBP.YES_BUTTON);
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Apre la nota di credito selezionata come conseguenza della selezione del bottone
* di testata 'Apri note...'
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doApriNdCSelezionata(ActionContext context) {
try {
Nota_di_creditoBulk ndc = (Nota_di_creditoBulk) ((HookForward) context.getCaller()).getParameter("focusedElement");
if (ndc != null)
return basicDoApriNotaDiCredito(context, ndc);
return context.findDefaultForward();
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Apre la nota di debito selezionata come conseguenza della selezione del bottone
* di testata 'Apri note...'
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doApriNdDSelezionata(ActionContext context) {
try {
Nota_di_debitoBulk ndd = (Nota_di_debitoBulk) ((HookForward) context.getCaller()).getParameter("focusedElement");
if (ndd != null)
return basicDoApriNotaDiDebito(context, ndd);
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Come conseguenza della selezione del bottone di testata 'Apri note...', vengono
* ricercate le note create dalla fattura e presenta all'utente il selezionatore
* per la scelta. Se l'elenco della ricerca è = 1 questo elemento viene aperto
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doApriNotaDiCredito(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
fillModel(context);
it.cnr.jada.util.RemoteIterator ri = findNoteDiCreditoFor(context, (Fattura_passiva_IBulk) bp.getModel());
ri = it.cnr.jada.util.ejb.EJBCommonServices.openRemoteIterator(context, ri);
if (ri == null || ri.countElements() == 0) {
it.cnr.jada.util.ejb.EJBCommonServices.closeRemoteIterator(context, ri);
throw new it.cnr.jada.comp.ApplicationException("Nessuna nota di credito generata per questa fattura!");
} else if (ri.countElements() == 1)
return basicDoApriNotaDiCredito(context, (Nota_di_creditoBulk) ri.nextElement());
else
return select(context, ri, it.cnr.jada.bulk.BulkInfo.getBulkInfo(Nota_di_creditoBulk.class), "default", "doApriNdCSelezionata");
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Come conseguenza della selezione del bottone di testata 'Apri note...', vengono
* ricercate le note create dalla fattura e presenta all'utente il selezionatore
* per la scelta. Se l'elenco della ricerca è = 1 questo elemento viene aperto
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doApriNotaDiDebito(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
fillModel(context);
it.cnr.jada.util.RemoteIterator ri = findNoteDiDebitoFor(context, (Fattura_passiva_IBulk) bp.getModel());
ri = it.cnr.jada.util.ejb.EJBCommonServices.openRemoteIterator(context, ri);
if (ri == null || ri.countElements() == 0)
throw new it.cnr.jada.comp.ApplicationException("Nessuna nota di debito generata per questa fattura!");
else if (ri.countElements() == 1)
return basicDoApriNotaDiDebito(context, (Nota_di_debitoBulk) ri.nextElement());
else
return select(context, ri, it.cnr.jada.bulk.BulkInfo.getBulkInfo(Nota_di_debitoBulk.class), "default", "doApriNdDSelezionata");
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Associa ad un buono di carico già creato i dettagli selezionati in fattura
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doAssociaInventario(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
controllaQuadraturaConti(context, fattura);
if ((fattura.getAssociazioniInventarioHash() != null && !fattura.getAssociazioniInventarioHash().isEmpty()) || (fattura.getHa_beniColl()))
return openConfirm(context, "Alcuni dettagli sono già stati associati. Si vuole continuare?", it.cnr.jada.util.action.OptionBP.CONFIRM_YES_NO, "doConfermaAssocia");
return basicDoAssociaDettagli(context);
} catch (Exception e) {
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di azzeramento del searchtool "fornitore"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva L'OggettoBulk padre del searchtool
* @return Il Forward alla pagina di risposta
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward doBlankSearchFatturaEstera(ActionContext context,
Fattura_passivaBulk fattura_passiva)
throws java.rmi.RemoteException {
try {
((Fattura_passiva_IBulk) fattura_passiva).setFattura_estera(
new Fattura_passiva_IBulk(
fattura_passiva.getCd_cds(),
fattura_passiva.getCd_unita_organizzativa(),
fattura_passiva.getEsercizio(),
null
));
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di azzeramento del searchtool "fornitore"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva L'OggettoBulk padre del searchtool
* @return Il Forward alla pagina di risposta
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward doBlankSearchFornitore(ActionContext context,
Fattura_passivaBulk fattura_passiva)
throws java.rmi.RemoteException {
try {
TerzoBulk tb = new TerzoBulk();
tb.setAnagrafico(new AnagraficoBulk());
fattura_passiva.setFornitore(tb);
fattura_passiva.setNome(null);
fattura_passiva.setCognome(null);
fattura_passiva.setRagione_sociale(null);
fattura_passiva.setCodice_fiscale(null);
fattura_passiva.setPartita_iva(null);
fattura_passiva.setModalita(null);
fattura_passiva.setTermini(null);
fattura_passiva.setBanca(null);
fattura_passiva.setCessionario(null);
fattura_passiva.setModalita_pagamento(null);
fattura_passiva.setTermini_pagamento(null);
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di azzeramento del searchtool "sospeso"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva L'OggettoBulk padre del searchtool
* @return Il Forward alla pagina di risposta
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward doBlankSearchSospeso(ActionContext context,
Fattura_passivaBulk fattura_passiva)
throws java.rmi.RemoteException {
try {
Lettera_pagam_esteroBulk lettera = fattura_passiva.getLettera_pagamento_estero();
SospesoBulk vecchioSospeso = lettera.getSospeso();
if (vecchioSospeso != null)
lettera.addToSospesiCancellati(vecchioSospeso);
SospesoBulk sospeso = new SospesoBulk();
sospeso.setEsercizio(lettera.getEsercizio());
if (!Utility.createParametriCnrComponentSession().getParametriCnr(context.getUserContext(), lettera.getEsercizio()).getFl_tesoreria_unica().booleanValue())
sospeso.setCd_cds(lettera.getCd_cds());
sospeso.setTi_entrata_spesa(sospeso.TIPO_SPESA);
sospeso.setTi_sospeso_riscontro(sospeso.TI_SOSPESO);
lettera.setSospeso(sospeso);
java.math.BigDecimal zero = new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
lettera.setIm_pagamento(zero);
//lettera.setIm_commissioni(zero);
//lettera.setDt_registrazione(new java.sql.Timestamp(System.currentTimeMillis()));
((CRUDBP) context.getBusinessProcess()).setDirty(true);
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doBringBackAddToCRUDMain_Obbligazioni_DettaglioObbligazioni(ActionContext context) {
try {
HookForward fwd = (HookForward) context.getCaller();
java.util.List selectedModels = (java.util.List) fwd.getParameter("selectedElements");
if (selectedModels != null && !selectedModels.isEmpty()) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Obbligazione_scadenzarioBulk obbligazione = (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel();
if (obbligazione != null) {
basicDoContabilizza(context, obbligazione, selectedModels);
bp.setDirty(true);
}
doCalcolaTotalePerObbligazione(context, obbligazione);
}
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Aggiunge, una volta terminata l'operazione di associazione, tale elenco nel
* modello
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doBringBackAssociaInventario(ActionContext context) {
try {
HookForward hook = (HookForward) context.getCaller();
Ass_inv_bene_fatturaBulk ass = (Ass_inv_bene_fatturaBulk) hook.getParameter("bringback");
if (ass != null) {
java.util.List dettagliInventariati = (java.util.List) hook.getParameter("dettagliDaInventariare");
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
for (java.util.Iterator i = dettagliInventariati.iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dettaglio = (Fattura_passiva_rigaBulk) i.next();
if (ass.getPg_riga() == null) {
BuonoCaricoScaricoComponentSession h = (BuonoCaricoScaricoComponentSession) bp.createComponentSession(
"CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",
BuonoCaricoScaricoComponentSession.class);
ass.setPg_riga(h.findMaxAssociazione(context.getUserContext(), ass));
}
fatturaPassiva.addToAssociazioniInventarioHash(ass, dettaglio);
dettaglio.setInventariato(true);
}
} else {
java.util.List dettagliInventariati = (java.util.List) hook.getParameter("dettagliDaInventariare");
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
for (java.util.Iterator i = dettagliInventariati.iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dettaglio = (Fattura_passiva_rigaBulk) i.next();
if (((FatturaPassivaComponentSession) bp.createComponentSession()).ha_beniColl(context.getUserContext(), dettaglio))
dettaglio.setInventariato(true);
else
dettaglio.setInventariato(false);
}
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doBringBackConfirmDelete(ActionContext context) {
HookForward caller = (HookForward) context.getCaller();
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
try {
if (caller.getParameter("undoBringBack") != null)
throw new it.cnr.jada.comp.ApplicationException("Cancellazione annullata!");
Risultato_eliminazioneVBulk re = (Risultato_eliminazioneVBulk) caller.getParameter("bringback");
if (!re.getDocumentiAmministrativiScollegati().isEmpty())
throw new it.cnr.jada.comp.ApplicationException("Eseguire il controllo di quadratura per tutti i dettagli in elenco!");
bp.commitUserTransaction();
return doPostConfirmDelete(context, re);
} catch (Throwable e) {
try {
bp.rollbackUserTransaction();
bp.edit(context, bp.getModel());
} catch (it.cnr.jada.action.BusinessProcessException ex) {
return handleException(context, ex);
}
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di assegnamento al crudtool "crea_fornitore"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva
* @param fornitoreTrovato
* @return Il Forward alla pagina di risposta
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward doBringBackCRUDCrea_fornitore(ActionContext context,
Fattura_passivaBulk fattura_passiva,
TerzoBulk fornitoreTrovato)
throws java.rmi.RemoteException {
return doBringBackSearchFornitore(context, fattura_passiva, fornitoreTrovato);
}
public Forward doBringBackCRUDFornitore(ActionContext context,
Fattura_passivaBulk fattura_passiva,
TerzoBulk fornitoreTrovato)
throws java.rmi.RemoteException {
return doBringBackCRUDCrea_fornitore(context, fattura_passiva, fornitoreTrovato);
}
/**
* Aggiunge, una volta terminata l'operazione di creazione di buono di carico,
* tale buono al modello
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doBringBackInventariaDettagli(ActionContext context) {
try {
HookForward hook = (HookForward) context.getCaller();
Buono_carico_scaricoBulk buonoCS = (Buono_carico_scaricoBulk) hook.getParameter("bringback");
if (buonoCS != null) {
buonoCS.setByFattura(true);
java.util.List dettagliInventariati = (java.util.List) hook.getParameter("dettagliDaInventariare");
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
for (java.util.Iterator i = dettagliInventariati.iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dettaglio = (Fattura_passiva_rigaBulk) i.next();
fatturaPassiva.addToCarichiInventarioHash(buonoCS, dettaglio);
dettaglio.setInventariato(true);
}
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* chiede l'associazione dell'obbligazione selezionata dall'utente ai dettagli
* di fattura selezionati per la contabilizzazione ('basicDoBringBackOpenObbligazioniWindow')
* Ricalcola i totali di scadenza e aggiunge ai documenti contabili modificati tale
* scadenza
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doBringBackOpenObbligazioniWindow(ActionContext context) {
HookForward caller = (HookForward) context.getCaller();
Obbligazione_scadenzarioBulk obblig = (Obbligazione_scadenzarioBulk) caller.getParameter("bringback");
if (obblig != null) {
try {
basicDoBringBackOpenObbligazioniWindow(context, obblig);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
bp.getObbligazioniController().reset(context);
bp.getObbligazioniController().setModelIndex(context, it.cnr.jada.bulk.BulkCollections.indexOfByPrimaryKey(bp.getObbligazioniController().getDetails(), obblig));
doCalcolaTotalePerObbligazione(context, (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel());
bp.setDirty(true);
if (bp instanceof TitoloDiCreditoDebitoBP)
((TitoloDiCreditoDebitoBP) bp).addToDocumentiContabiliModificati(obblig);
} catch (Throwable t) {
return handleException(context, t);
}
}
return context.findDefaultForward();
}
/**
*
* Gestisce una richiesta di ricerca del searchtool "bene_servizio"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva_riga L'OggettoBulk padre del searchtool
* @param beneTrovato L'OggettoBulk selezionato dall'utente
* @return Il Forward alla pagina di risposta
* @throws ComponentException
*/
public Forward doBringBackSearchBene_servizio(ActionContext context,
Fattura_passiva_rigaBulk fattura_passiva_riga,
Bene_servizioBulk beneTrovato)
throws it.cnr.jada.comp.ComponentException {
try {
Voce_ivaBulk voceIvaB = null;
if (beneTrovato != null) {
fattura_passiva_riga.setBene_servizio(beneTrovato);
if (fattura_passiva_riga.getDs_riga_fattura() == null)
fattura_passiva_riga.setDs_riga_fattura(beneTrovato.getDs_bene_servizio());
fattura_passiva_riga.setInventariato(false);
Fattura_passivaBulk fatturaPassiva = fattura_passiva_riga.getFattura_passiva();
if (fatturaPassiva.ISTITUZIONALE.equalsIgnoreCase(fatturaPassiva.getTi_istituz_commerc())) {
voceIvaB = caricaVoceIVADefault(context);
//if (voceIvaB == null)
//((it.cnr.jada.util.action.CRUDBP)context.getBusinessProcess()).setErrorMessage("Attenzione: non è stata caricata una voce IVA di default per le fatture istituzionali!");
} else
voceIvaB = beneTrovato.getVoce_iva();
}
return doBringBackSearchVoce_iva(context, fattura_passiva_riga, voceIvaB);
} catch (Exception e) {
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di ricerca del searchtool "fornitore"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva L'OggettoBulk padre del searchtool
* @param fornitoreTrovato L'OggettoBulk selezionato dall'utente
* @return Il Forward alla pagina di risposta
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward doBringBackSearchFornitore(ActionContext context,
Fattura_passivaBulk fattura_passiva,
TerzoBulk fornitoreTrovato)
throws java.rmi.RemoteException {
try {
CRUDFatturaPassivaBP crudFattura = (CRUDFatturaPassivaBP) getBusinessProcess(context);
if (fornitoreTrovato != null) {
if (fattura_passiva.getFl_intra_ue() != null && fattura_passiva.getFl_intra_ue().booleanValue()) {
if (fornitoreTrovato.getAnagrafico().getComune_fiscale() != null && fornitoreTrovato.getAnagrafico().getComune_fiscale().getNazione() != null) {
fornitoreTrovato.getAnagrafico().setNazionalita(fornitoreTrovato.getAnagrafico().getComune_fiscale().getNazione());
if (fornitoreTrovato.getAnagrafico().getNazionalita().getDivisa() != null &&
fattura_passiva.getValuta().getCd_divisa().compareTo(fornitoreTrovato.getAnagrafico().getNazionalita().getDivisa().getCd_divisa()) != 0)
crudFattura.setMessage("La valuta del fornitore " + fornitoreTrovato.getAnagrafico().getNazionalita().getDivisa().getDs_divisa() + " non è coerente con quella indicata in testata.");
}
}
FatturaPassivaComponentSession fpcs = (FatturaPassivaComponentSession) crudFattura.createComponentSession();
fattura_passiva = fpcs.completaFornitore(context.getUserContext(), fattura_passiva, fornitoreTrovato);
Fattura_passivaBulk originale = (Fattura_passivaBulk) crudFattura.getBulkClone();
if (originale != null && !fattura_passiva.NON_REGISTRATO_IN_COGE.equalsIgnoreCase(fattura_passiva.getStato_coge())) {
TerzoBulk oldTerzo = originale.getFornitore();
if (oldTerzo != null && !oldTerzo.equalsByPrimaryKey(fornitoreTrovato))
fattura_passiva.setStato_coge(fattura_passiva.DA_RICONTABILIZZARE_IN_COGE);
else
fattura_passiva.setStato_coge(fattura_passiva.REGISTRATO_IN_COGE);
}
crudFattura.setModel(context, fattura_passiva);
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di ricerca del searchtool "sospeso"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva L'OggettoBulk padre del searchtool
* @param sospesoTrovato L'OggettoBulk selezionato dall'utente
* @return Il Forward alla pagina di risposta
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward doBringBackSearchSospeso(ActionContext context,
Fattura_passivaBulk fattura_passiva,
SospesoBulk sospesoTrovato)
throws java.rmi.RemoteException {
try {
Lettera_pagam_esteroBulk lettera = fattura_passiva.getLettera_pagamento_estero();
if (sospesoTrovato != null && lettera != null) {
lettera.removeFromSospesiCancellati(sospesoTrovato);
lettera.setSospeso(sospesoTrovato);
lettera.setIm_pagamento(sospesoTrovato.getIm_sospeso());
//lettera.setDt_registrazione(sospesoTrovato.getDt_registrazione());
((CRUDBP) context.getBusinessProcess()).setDirty(true);
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di ricerca del searchtool "voce_iva"
*
* @param context L'ActionContext della richiesta
* @param fattura_passiva_riga L'OggettoBulk padre del searchtool
* @param ivaTrovata L'OggettoBulk selezionato dall'utente
* @return Il Forward alla pagina di risposta
* @throws RemoteException Se si verifica qualche eccezione di sistema per cui non è possibile effettuare l'operazione
*/
public Forward doBringBackSearchVoce_iva(ActionContext context,
Fattura_passiva_rigaBulk fattura_passiva_riga,
Voce_ivaBulk ivaTrovata)
throws java.rmi.RemoteException {
try {
if (ivaTrovata != null) {
fattura_passiva_riga.setVoce_iva(ivaTrovata);
basicDoCalcolaTotaliDiRiga(
context,
fattura_passiva_riga,
fattura_passiva_riga.getIm_imponibile().add(fattura_passiva_riga.getIm_iva()));
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* Viene richiamato nel momento in cui si seleziona una valuta dal combo Valuta nella
* testata della fattura.
* Ricalcola il valore di testata in EUR in base all'importo di fattura fornitore.
*/
public Forward doCalcolaTotaleFatturaFornitoreInEur(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
java.math.BigDecimal impFornitore = fattura.getIm_totale_fattura();
java.math.BigDecimal impFornitoreEuro = fattura.getIm_importo_totale_fattura_fornitore_euro();
try {
fillModel(context);
if (fattura.getIm_totale_fattura() != null)
basicDoCalcolaTotaleFatturaFornitoreInEur(fattura);
return context.findDefaultForward();
} catch (Throwable t) {
fattura.setIm_totale_fattura(impFornitore);
fattura.setIm_importo_totale_fattura_fornitore_euro(impFornitoreEuro);
return handleException(context, t);
}
}
/**
* Ricalcola il valore totale degli importi associati alla scadenza
*/
public Forward doCalcolaTotalePerObbligazione(ActionContext context, Obbligazione_scadenzarioBulk obbligazione) {
it.cnr.jada.util.action.FormBP bulkBP = (it.cnr.jada.util.action.FormBP) context.getBusinessProcess();
if (bulkBP instanceof CRUDFatturaPassivaBP) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) bulkBP;
Fattura_passivaBulk fatt = (Fattura_passivaBulk) bp.getModel();
if (fatt.getFattura_passiva_obbligazioniHash() != null && obbligazione != null) {
try {
fatt.setImportoTotalePerObbligazione(
calcolaTotaleSelezionati(
(java.util.List) fatt.getFattura_passiva_obbligazioniHash().get(obbligazione),
fatt.quadraturaInDeroga()));
} catch (it.cnr.jada.comp.ApplicationException e) {
fatt.setImportoTotalePerObbligazione(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
}
} else
fatt.setImportoTotalePerObbligazione(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP));
}
return context.findDefaultForward();
}
/**
* Ricalcola il totali di riga
*/
public Forward doCalcolaTotaliDiRiga(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) bp.getDettaglio().getModel();
java.math.BigDecimal qta = riga.getQuantita();
java.math.BigDecimal pu = riga.getPrezzo_unitario();
java.math.BigDecimal imiva = riga.getIm_iva();
Boolean flimiva = riga.getFl_iva_forzata();
java.math.BigDecimal impnc = riga.getIm_diponibile_nc();
try {
java.math.BigDecimal vecchioTotale = riga.getIm_imponibile().add(riga.getIm_iva());
if (riga instanceof Fattura_passiva_rigaIBulk)
vecchioTotale = vecchioTotale.add(((Fattura_passiva_rigaIBulk) riga).getIm_totale_addebiti());
fillModel(context);
basicDoCalcolaTotaliDiRiga(context, riga, vecchioTotale);
} catch (Throwable e) {
riga.setQuantita(qta);
riga.setPrezzo_unitario(pu);
riga.setIm_diponibile_nc(impnc);
riga.setIm_iva(imiva);
riga.setFl_iva_forzata(flimiva);
riga.calcolaCampiDiRiga();
return handleException(context, e);
}
return context.findDefaultForward();
}
/**
* Viene richiamato nel momento in cui viene inserito/cambiato il trovato
* nel dettaglio della fattura.
*/
public Forward doVerificaEsistenzaTrovato(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
bp.ricercaDatiTrovato(context);
} catch (Exception e) {
return handleException(context, e);
}
return context.findDefaultForward();
// try {
// CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP)getBusinessProcess(context);
// Fattura_passivaBulk fattura = (Fattura_passivaBulk)bp.getModel();
// java.sql.Timestamp dataEmissione = fattura.getDt_fattura_fornitore();
// try {
// fillModel( context );
// if (!bp.isSearching())
// fattura.validateDate();
// creaEsercizioPerFatturaFornitore(context, fattura);
//
// return context.findDefaultForward();
// } catch(Throwable e) {
// fattura.setDt_fattura_fornitore(dataEmissione);
// bp.setModel(context,fattura);
// throw e;
// }
// } catch(Throwable e) {
// return handleException(context, e);
// }
}
/**
* Viene richiamato nel momento in cui viene cambiata la data di emissione
* fattura fornitore nella testata della fattura.
*/
public Forward doCambiaDataEmissioneFattura(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
java.sql.Timestamp dataEmissione = fattura.getDt_fattura_fornitore();
boolean hasAccesso = ((it.cnr.contab.utente00.nav.ejb.GestioneLoginComponentSession) it.cnr.jada.util.ejb.EJBCommonServices.createEJB("CNRUTENZE00_NAV_EJB_GestioneLoginComponentSession")).controllaAccesso(context.getUserContext(), "AMMFATTURDOCSFATPASA");
try {
fillModel(context);
if (!bp.isSearching())
if (fattura.isGestione_doc_ele() &&
(fattura.getDt_fattura_fornitore() != null && !(fattura.getDt_fattura_fornitore().compareTo(fattura.getDataInizioFatturaElettronica()) < 0)) &&
!fattura.isElettronica() &&
!fattura.isEstera() &&
!fattura.isSanMarinoSenzaIVA() &&
!fattura.isSanMarinoConIVA() &&
!fattura.isBollaDoganale() &&
!hasAccesso) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new it.cnr.jada.comp.ApplicationException("Non è possibile registrare una fattura che non sia elettronica, che non sia estera e che abbia data di emissione uguale o successiva al " + sdf.format(fattura.getDataInizioFatturaElettronica()) + "!");
}
fattura.validateDate();
//NON ELIMINARE QUESTO COMMENTO: POSSIBILE VARIAZIONE IN FUTURO
//java.sql.Timestamp dataFatturaFornitore = fattura.getDt_fattura_fornitore();
//java.sql.Timestamp dataInizioValuta = fattura.getInizio_validita_valuta();
//java.sql.Timestamp dataFineValuta = fattura.getFine_validita_valuta();
//if (dataInizioValuta == null || dataFineValuta == null) {
//creaEsercizioPerFatturaFornitore(context, fattura);
//return doSelezionaValuta(context);
//}
//if (dataFatturaFornitore != null &&
//!dataFatturaFornitore.equals(dataInizioValuta) &&
//!dataFatturaFornitore.equals(dataFineValuta)) {
//if (dataFatturaFornitore.before(dataInizioValuta) || dataFatturaFornitore.after(dataFineValuta)) {
//creaEsercizioPerFatturaFornitore(context, fattura);
//return doSelezionaValuta(context);
//}
//}
if (fattura instanceof Nota_di_creditoBulk && fattura.getDt_scadenza() == null)
fattura.setDt_scadenza(fattura.getDt_fattura_fornitore());
creaEsercizioPerFatturaFornitore(context, fattura);
return context.findDefaultForward();
} catch (Throwable e) {
fattura.setDt_fattura_fornitore(dataEmissione);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Viene richiamato nel momento in cui viene cambiata la data di registrazione
* Richiesta la validazione delle date
*/
public Forward doCambiaDataRegistrazione(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
java.sql.Timestamp dataRegistrazione = fattura.getDt_registrazione();
try {
fillModel(context);
if (!bp.isSearching())
fattura.validateDate();
//NON ELIMINARE QUESTO COMMENTO: POSSIBILE VARIAZIONE IN FUTURO
//java.sql.Timestamp dataFatturaFornitore = fattura.getDt_fattura_fornitore();
//if (dataFatturaFornitore != null &&
//!dataFatturaFornitore.equals(fattura.getInizio_validita_valuta()) &&
//!dataFatturaFornitore.equals(fattura.getFine_validita_valuta())) {
//if (fattura.getInizio_validita_valuta() == null || fattura.getFine_validita_valuta() == null ||
//(!dataFatturaFornitore.after(fattura.getInizio_validita_valuta()) && !dataFatturaFornitore.before(fattura.getFine_validita_valuta()))) {
//return doSelezionaValuta(context);
//}
//}
//bp.valorizzaInfoDocEle(context, fattura);
return context.findDefaultForward();
} catch (Throwable e) {
fattura.setDt_registrazione(dataRegistrazione);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Viene richiamato nel momento in cui viene cambiata la data di scadenza fattura fornitore
* Richiesta la validazione delle date
*/
public Forward doCambiaDataScadenzaFatturaFornitore(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
java.sql.Timestamp dataScadenza = fattura.getDt_scadenza();
try {
fillModel(context);
if (!bp.isSearching()) {
bp.setModel(context, fattura);
fattura.validateDate();
java.util.Calendar cal = Calendar.getInstance();
if (fattura.getData_protocollo() != null)
cal.setTime(fattura.getData_protocollo());
else
throw new ValidationException("La data di protocollo/ricezione non può essere nulla!");
cal.add(Calendar.DAY_OF_MONTH, 45);
if (fattura.getDt_scadenza() != null && fattura.getDt_scadenza().after(cal.getTime())) {
OptionBP optionBP = openConfirm(context, "Attenzione: la data di scadenza indicata è superiore a quanto previsto dalla normativa. Vuoi continuare?", OptionBP.CONFIRM_YES_NO, "doConfirmDtScadenza");
return optionBP;
}
}
return context.findDefaultForward();
} catch (Throwable e) {
fattura.setDt_scadenza(dataScadenza);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doCambiaDataProtocollo(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
java.sql.Timestamp dataprotocollo= fattura.getData_protocollo();
try {
fillModel(context);
if (!bp.isSearching()) {
if(fattura.getTi_fattura().compareTo(Fattura_passivaBulk.TIPO_FATTURA_PASSIVA)==0)
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
fattura.validateDate();
java.util.Calendar cal = Calendar.getInstance();
if (fattura.getData_protocollo() != null)
cal.setTime(fattura.getData_protocollo());
else
throw new ValidationException("La data di protocollo/ricezione non può essere nulla!");
cal.add(Calendar.DAY_OF_MONTH, 45);
}
return context.findDefaultForward();
} catch (Throwable e) {
fattura.setData_protocollo(dataprotocollo);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Crea e imposta la lettera di pagamento estero
*/
public Forward doCancellaLettera(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk model = (Fattura_passivaBulk) bp.getModel();
if (model != null) {
if (model.getLettera_pagamento_estero() == null)
return handleException(
context,
new it.cnr.jada.comp.ApplicationException("Lettera di pagamento estero NON presente!"));
Lettera_pagam_esteroBulk lettera = model.getLettera_pagamento_estero();
int status = lettera.getCrudStatus();
if (status == OggettoBulk.UNDEFINED || status == OggettoBulk.TO_BE_CREATED) {
model.setLettera_pagamento_estero(null);
} else {
model = ((FatturaPassivaComponentSession) bp.createComponentSession()).eliminaLetteraPagamentoEstero(context.getUserContext(), model);
bp.setModel(context, model);
}
}
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Gestisce una richiesta di ricerca.
*
* L'implementazione di default utilizza il metodo astratto read
* di CRUDBusinessProcess.
* Se la ricerca fornisce più di un risultato viene creato un
* nuovo SelezionatoreListaBP per la selezione di un elemento.
* Al business process viene anche chiesto l'elenco delle colonne da
* visualizzare.
*/
public Forward doCerca(ActionContext context) throws java.rmi.RemoteException, InstantiationException, javax.ejb.RemoveException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
if (bp instanceof IDocumentoAmministrativoSpesaBP && ((IDocumentoAmministrativoSpesaBP) bp).isSpesaBP())
return basicDoCerca(context);
return super.doCerca(context);
}
/**
* Chide la nota di credito e riapre la fattura originante
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doChiusuraNotaDiCredito(ActionContext context) {
try {
it.cnr.jada.util.action.CRUDBP bp = (it.cnr.jada.util.action.CRUDBP) context.getBusinessProcess();
if (bp instanceof CRUDFatturaPassivaBP && ((CRUDFatturaPassivaBP) bp).isFromFatturaElettronica())
return this.doCloseForm(context);
bp.edit(context, bp.getModel());
return context.findDefaultForward();
} catch (BusinessProcessException e) {
return handleException(context, e);
}
}
/**
* Chide la nota di debito e riapre la fattura originante
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doChiusuraNotaDiDebito(ActionContext context) {
try {
it.cnr.jada.util.action.CRUDBP bp = (it.cnr.jada.util.action.CRUDBP) context.getBusinessProcess();
bp.edit(context, bp.getModel());
return context.findDefaultForward();
} catch (BusinessProcessException e) {
return handleException(context, e);
}
}
/**
* Apre il pannello delle fatture sul modello fattura estera
* specificato per le fatture di tipio bolla doganale e spedizioniere
*/
public Forward doConfermaApriFatturaEstera(ActionContext context, int option) {
try {
if (option == it.cnr.jada.util.action.OptionBP.YES_BUTTON) {
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
Fattura_passiva_IBulk fattura = (Fattura_passiva_IBulk) bp.getModel();
if (!fattura.isBollaDoganale() && !fattura.isSpedizioniere())
throw new it.cnr.jada.comp.ApplicationException("Comando disponibile solo se la fattura è di tipo bolla doganale o spedizioniere");
Fattura_passiva_IBulk fatturaEstera = fattura.getFattura_estera();
if (fatturaEstera == null || fatturaEstera.getCrudStatus() != OggettoBulk.NORMAL)
throw new it.cnr.jada.comp.ApplicationException("Specificare la fattura estera collegata!");
bp.edit(context, fatturaEstera);
}
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ApplicationException e) {
return handleException(context, e);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
}
/**
* Richiede conferma all'utente per la continuazione del processo di creazione di
* buono di carico
*/
public Forward doConfermaInventaria(ActionContext context, int option) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
if (option == it.cnr.jada.util.action.OptionBP.YES_BUTTON) {
return basicDoInventariaDettagli(context);
}
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
public Forward doConfermaAssocia(ActionContext context, int option) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
if (option == it.cnr.jada.util.action.OptionBP.YES_BUTTON) {
return basicDoAssociaDettagli(context);
}
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
/**
* Contabilizza i dettagli selezionati previo controllo della selezione
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doContabilizza(ActionContext context) {
HookForward caller = (HookForward) context.getCaller();
Obbligazione_scadenzarioBulk obblig = (Obbligazione_scadenzarioBulk) caller.getParameter("obbligazioneSelezionata");
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
java.util.List selectedModels = null;
try {
selectedModels = bp.getDettaglio().getSelectedModels(context);
bp.getDettaglio().getSelection().clearSelection();
} catch (Throwable e) {
}
if (obblig != null) {
try {
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
TerzoBulk creditore = obblig.getObbligazione().getCreditore();
if (!fattura.getFornitore().equalsByPrimaryKey(creditore) &&
!AnagraficoBulk.DIVERSI.equalsIgnoreCase(creditore.getAnagrafico().getTi_entita())) {
((IDocumentoAmministrativoBulk) fattura).addToDocumentiContabiliCancellati(obblig);
throw new it.cnr.jada.comp.ApplicationException("La scadenza selezionata deve appartenere ad un'obbligazione che ha come creditore il fornitore della fattura!");
}
Filtro_ricerca_obbligazioniVBulk filtro = (Filtro_ricerca_obbligazioniVBulk) caller.getParameter("filtroRicercaUtilizzato");
if (filtro != null) {
Elemento_voceBulk ev = filtro.getElemento_voce();
if (ev != null) {
if (!obblig.getObbligazione().getElemento_voce().getCd_elemento_voce().startsWith(ev.getCd_elemento_voce())) {
if (!ev.getCd_elemento_voce().startsWith(obblig.getObbligazione().getElemento_voce().getCd_elemento_voce())) {
((IDocumentoAmministrativoBulk) fattura).addToDocumentiContabiliCancellati(obblig);
throw new it.cnr.jada.comp.ApplicationException("Il titolo capitolo dell'impegno deve essere uguale o appartenere al titolo capitolo della categoria inventario dei beni selezionati (\"" + ev.getCd_elemento_voce() + "\")!");
}
}
}
}
Obbligazione_scadenzarioBulk obbligazione = null;
ObbligazioniTable obbHash = fattura.getObbligazioniHash();
if (obbHash != null && !obbHash.isEmpty())
obbligazione = obbHash.getKey(obblig);
if (obbligazione != null && obbligazione.getObbligazione().isTemporaneo()) {
java.util.Vector models = ((java.util.Vector) obbHash.get(obbligazione));
java.util.Vector clone = (java.util.Vector) models.clone();
if (!clone.isEmpty()) {
scollegaDettagliDaObbligazione(context, clone);
clone.addAll(selectedModels);
basicDoContabilizza(context, obblig, clone);
} else {
obbHash.remove(obbligazione);
basicDoContabilizza(context, obblig, selectedModels);
}
} else {
basicDoContabilizza(context, obblig, selectedModels);
}
} catch (it.cnr.jada.comp.ComponentException e) {
return handleException(context, e);
}
bp.getObbligazioniController().getSelection().clear();
bp.getObbligazioniController().setModelIndex(context, -1);
bp.getObbligazioniController().setModelIndex(context, it.cnr.jada.bulk.BulkCollections.indexOfByPrimaryKey(bp.getObbligazioniController().getDetails(), obblig));
bp.setDirty(true);
if (!"tabFatturaPassivaObbligazioni".equals(bp.getTab("tab")))
bp.setTab("tab", "tabFatturaPassivaObbligazioni");
}
return context.findDefaultForward();
}
/**
* Crea e imposta la lettera di pagamento estero
*/
public Forward doCreaLettera(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk model = (Fattura_passivaBulk) bp.getModel();
if (model != null) {
if (model.getLettera_pagamento_estero() == null) {
if (model instanceof Fattura_passiva_IBulk) {
Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) model;
// //RP 23/03/2010 ?? commentato per permettere la generazione delle nc/nd di fatture con lettera di pagamento
/*if (fp.hasAddebiti() || fp.hasStorni())
return handleException(
context,
new it.cnr.jada.comp.ApplicationException("La lettera di pagamento estero non puo' essere creata se la fattura è ha storni o addebiti!")); */
if (fp.isByFondoEconomale())
return handleException(
context,
new it.cnr.jada.comp.ApplicationException("La lettera di pagamento estero non puo' essere creata perchè la fattura è destinata al pagamento tramite fondo economale!"));
}
Lettera_pagam_esteroBulk lettera = new Lettera_pagam_esteroBulk(
model.getCd_cds_origine(),
model.getCd_uo_origine(),
it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext()),
null);
lettera.completeFrom(context);
lettera.setToBeCreated();
model.setLettera_pagamento_estero(lettera);
} else {
return handleException(
context,
new it.cnr.jada.comp.ApplicationException("La lettera per il pagamento estero è già stata creata!"));
}
}
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Gestisce un comando di cancellazione o annullamento.
* Nel caso di ndc o ndd richiede la gestione della quadratura delle scadenze di doc cont
* tramite il gestore 'RisultatoEleminazioneBP'
*/
public Forward doElimina(ActionContext context) throws java.rmi.RemoteException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fp = (Fattura_passivaBulk) bp.getModel();
if (fp.existARowToBeInventoried())
try {
return openConfirm(
context,
"Si sta per eliminare un documento amministrativo passivo contenente beni soggetti ad inventario.\nSi vuole continuare?",
it.cnr.jada.util.action.OptionBP.WARNING_MESSAGE,
"confermaEliminazione");
} catch (BusinessProcessException e) {
return handleException(context, e);
}
return confermaEliminazione(context, it.cnr.jada.util.action.OptionBP.YES_BUTTON);
}
/**
* Forza il flag 'ForzaIVA' e ricalcola i totali di riga
*/
public Forward doForzaIVA(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) bp.getDettaglio().getModel();
Boolean flForzaIVA = riga.getFl_iva_forzata();
java.math.BigDecimal impIVA = riga.getIm_iva();
try {
java.math.BigDecimal vecchioTotale = riga.getIm_imponibile().add(riga.getIm_iva());
if (riga instanceof Fattura_passiva_rigaIBulk)
vecchioTotale = vecchioTotale.add(((Fattura_passiva_rigaIBulk) riga).getIm_totale_addebiti());
fillModel(context);
riga.setFl_iva_forzata(Boolean.TRUE);
basicCalcolaImportoDisponibileNC(context, riga, vecchioTotale);
doSelectObbligazioni(context);
} catch (Throwable t) {
riga.setFl_iva_forzata(flForzaIVA);
riga.setIm_iva(impIVA);
riga.calcolaCampiDiRiga();
return handleException(context, t);
}
return context.findDefaultForward();
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doFreeSearchFatturaEstera(ActionContext context) {
FormField field = getFormField(context, "main.fatturaEstera");
try {
OggettoBulk fp = ((CRUDFatturaPassivaBP) context.getBusinessProcess()).createEmptyModelForFreeSearch(context);
return freeSearch(context, field, fp);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
}
/**
*
* Gestisce una richiesta di ricerca libera del searchtool "fornitore"
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doFreeSearchFornitore(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
TerzoBulk tb = new TerzoBulk();
tb.setAnagrafico(new AnagraficoBulk());
return freeSearch(context, bp.getFormField("fornitore"), tb);
}
/**
* Creo e apro una nuova nota di credito. Viene eseguito rollback prima di
* questa operazione per permettere il rilascio della fattura!
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doGeneraNotaDiCredito(ActionContext context) {
try {
fillModel(context);
return basicDoGeneraNotaDiCredito(context);
} catch (it.cnr.jada.bulk.FillException e) {
return handleException(context, e);
} catch (BusinessProcessException e) {
return handleException(context, e);
} catch (it.cnr.jada.comp.ComponentException e) {
return handleException(context, e);
}
}
/**
* Creo e apro una nuova nota di debito. Viene eseguito rollback prima di
* questa operazione per permettere il rilascio della fattura!
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doGeneraNotaDiDebito(ActionContext context) {
try {
fillModel(context);
return basicDoGeneraNotaDiDebito(context);
} catch (it.cnr.jada.bulk.FillException e) {
return handleException(context, e);
} catch (BusinessProcessException e) {
return handleException(context, e);
} catch (it.cnr.jada.comp.ComponentException e) {
return handleException(context, e);
}
}
/**
* Inventaria i dettagli
* Richiesta la quadratura tra dettagli e testata
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doInventariaDettagli(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
controllaQuadraturaConti(context, fattura);
java.util.List dettagliDaInventariare = getDettagliDaInventariare(context, bp.getDettaglio().getDetails().iterator());
if (dettagliDaInventariare != null && !dettagliDaInventariare.isEmpty())
//if (fattura.getCarichiInventarioHash() != null && !fattura.getCarichiInventarioHash().isEmpty())
//return openConfirm(context,"Alcuni dettagli sono già stati inventariati. Se si procede tutti i buoni carico/scarico già creati verranno persi. Continuare?",it.cnr.jada.util.action.OptionBP.CONFIRM_YES_NO,"doConfermaInventaria");
return basicDoInventariaDettagli(context);
else
bp.setMessage("Nessun dettaglio è inventariabile o tutti i dettagli inventariabili sono già stati caricati!");
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* Inventaria i dettagli per aumento di valore
* Richiesta la quadratura tra dettagli e testata
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doInventariaDettagliPerAumentoValore(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
controllaQuadraturaConti(context, (Fattura_passivaBulk) bp.getModel());
java.util.List dettagliDaInventariare = getDettagliDaInventariare(context, bp.getDettaglio().getDetails().iterator());
if (dettagliDaInventariare != null && !dettagliDaInventariare.isEmpty()) {
AssBeneFatturaBP ibp = (AssBeneFatturaBP) context.getUserInfo().createBusinessProcess(context, "AssBeneFatturaBP", new Object[]{"MRSWTh"});
Ass_inv_bene_fatturaBulk associa = new Ass_inv_bene_fatturaBulk();
associa.setLocal_transactionID(ibp.getLocalTransactionID(context.getUserContext(), true));
associa.completeFrom(dettagliDaInventariare);
associa.setPerAumentoValore(Boolean.TRUE);
//???????
// Crea ed inizializza il Buono di Carico
Buono_carico_scaricoBulk buonoC = new Buono_carico_scaricoBulk();
buonoC.setToBeCreated();
buonoC.setByFatturaPerAumentoValore(Boolean.TRUE);
buonoC.setTi_documento(Buono_carico_scaricoBulk.CARICO);
buonoC = (Buono_carico_scaricoBulk) ibp.createComponentSession().inizializzaBulkPerInserimento(context.getUserContext(), buonoC);
associa.setTest_buono(buonoC);
associa.setInventario(buonoC.getInventario());
try {
associa.getTest_buono().setPg_buono_c_s(((NumerazioneTempBuonoComponentSession) EJBCommonServices.createEJB(
"CNRINVENTARIO01_EJB_NumerazioneTempBuonoComponentSession",
NumerazioneTempBuonoComponentSession.class)).getNextTempPG(context.getUserContext(), associa.getTest_buono()));
} catch (Throwable e) {
throw new ComponentException(e);
}
//
ibp.setModel(context, associa);
ibp.setDirty(false);
ibp.setPerAumentoValore(Boolean.TRUE);
context.addHookForward("bringback", this, "doBringBackAssociaInventario");
HookForward hook = (HookForward) context.findForward("bringback");
hook.addParameter("dettagliDaInventariare", dettagliDaInventariare);
return context.addBusinessProcess(ibp);
}
bp.setMessage("Nessun dettaglio è inventariabile o tutti i dettagli inventariabili sono già stati caricati!");
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBeni_coll(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
try {
it.cnr.jada.util.RemoteIterator ri = ((FatturaPassivaComponentSession) bp.createComponentSession()).selectBeniFor(context.getUserContext(), fattura);
ri = it.cnr.jada.util.ejb.EJBCommonServices.openRemoteIterator(context, ri);
if (ri.countElements() == 0) {
it.cnr.jada.util.ejb.EJBCommonServices.closeRemoteIterator(context, ri);
throw new it.cnr.jada.comp.ApplicationException("Attenzione: Nessun dato disponibile.");
}
SelezionatoreListaBP nbp = (SelezionatoreListaBP) context.createBusinessProcess("Selezionatore");
nbp.setIterator(context, ri);
nbp.disableSelection();
nbp.setBulkInfo(it.cnr.jada.bulk.BulkInfo.getBulkInfo(V_ass_inv_bene_fatturaBulk.class));
HookForward hook = (HookForward) context.findForward("seleziona");
return context.addBusinessProcess(nbp);
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Richiede all'obbligazione di modificare in automatico la sua scadenza (quella
* selezionata) portando la stessa ad importo pari alla sommatoria degli importi
* di riga dei dettagli associati. Aggiorna la mappa dei saldi per le variazioni
* subite dall'obbligazione
*
* @param context L'ActionContext della richiesta
* @param prefix
* @return Il Forward alla pagina di risposta
*/
public Forward doModificaScadenzaInAutomatico(ActionContext context, String prefix) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
Fattura_passiva_IBulk fatturaPassiva = (Fattura_passiva_IBulk) bp.getModel();
controllaQuadraturaConti(context, fatturaPassiva);
Obbligazione_scadenzarioBulk scadenza = (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel();
if (scadenza == null)
throw new it.cnr.jada.comp.ApplicationException("Selezionare l'impegno da modificare in automatico!");
java.util.Vector righeAssociate = (java.util.Vector) fatturaPassiva.getFattura_passiva_obbligazioniHash().get(scadenza);
if (righeAssociate == null || righeAssociate.isEmpty())
throw new it.cnr.jada.comp.ApplicationException("Associare dei dettagli prima di aggiornare in automatico la scadenza impegno!");
if (bp.isDeleting() &&
!bp.isViewing() &&
!it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext()).equals(scadenza.getEsercizio()))
throw new it.cnr.jada.comp.ApplicationException("La scadenza selezionata appartiene all'esercizio " + scadenza.getEsercizio().intValue() + "! Operazione annullata.");
ObbligazioneAbstractComponentSession h = CRUDVirtualObbligazioneBP.getVirtualComponentSession(context, true);
try {
scadenza = (Obbligazione_scadenzarioBulk) h.modificaScadenzaInAutomatico(
context.getUserContext(),
scadenza,
getImportoPerAggiornamentoScadenzaInAutomatico(
context,
scadenza,
fatturaPassiva,
new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP)),
false);
bp.getDefferedUpdateSaldiParentBP().getDefferedUpdateSaldiBulk().addToDefferredSaldi(
scadenza.getObbligazione(),
scadenza.getObbligazione().getSaldiInfo());
} catch (it.cnr.jada.comp.ComponentException e) {
if (e.getDetail() instanceof it.cnr.contab.doccont00.comp.CheckDisponibilitaCassaFailed)
throw new it.cnr.jada.comp.ApplicationException(e.getDetail().getMessage());
if (e.getDetail() instanceof it.cnr.contab.doccont00.comp.SfondamentoPdGException)
throw new it.cnr.jada.comp.ApplicationException(e.getDetail().getMessage());
throw e;
}
Forward fwd = basicDoBringBackOpenObbligazioniWindow(context, scadenza);
bp.getObbligazioniController().getSelection().clear();
bp.getObbligazioniController().setModelIndex(context, -1);
bp.getObbligazioniController().setModelIndex(context, it.cnr.jada.bulk.BulkCollections.indexOfByPrimaryKey(bp.getObbligazioniController().getDetails(), scadenza));
bp.setDirty(true);
return fwd;
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* Gestisce la variazione manuale del valore del cambio e ricalcola tutti i totali
*/
public Forward doOnChangeModified(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fp = (Fattura_passivaBulk) bp.getModel();
it.cnr.jada.bulk.PrimaryKeyHashtable vecchiTotali = new it.cnr.jada.bulk.PrimaryKeyHashtable();
if (fp instanceof Fattura_passiva_IBulk) {
for (java.util.Iterator i = fp.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaIBulk dettaglio = (Fattura_passiva_rigaIBulk) i.next();
java.math.BigDecimal vecchioTotale = dettaglio.getIm_imponibile().add(dettaglio.getIm_iva());
vecchioTotale = vecchioTotale.add(dettaglio.getIm_totale_addebiti());
vecchiTotali.put(dettaglio, vecchioTotale);
}
}
java.math.BigDecimal vecchioCambio = fp.getCambio();
fillModel(context);
if (fp != null) {
java.math.BigDecimal cambioAttuale = fp.getCambio();
if (cambioAttuale == null)
fp.setCambio((cambioAttuale = new java.math.BigDecimal(0)));
cambioAttuale = cambioAttuale.setScale(4, java.math.BigDecimal.ROUND_HALF_UP);
fp.setCambio(cambioAttuale);
if (cambioAttuale.compareTo(new java.math.BigDecimal(0)) == 0) {
fp.setCambio(vecchioCambio);
throw new it.cnr.jada.comp.ApplicationException("Non è stato inserito un cambio valido (>0)");
}
if (fp.getObbligazioniHash() != null && !fp.getObbligazioniHash().isEmpty())
bp.setErrorMessage("Attenzione: si ricorda che modificando il valore del cambio è necessario riportare in quadratura le scadenze delle obbligazioni!");
if (fp.getAccertamentiHash() != null && !fp.getAccertamentiHash().isEmpty())
bp.setErrorMessage("Attenzione: si ricorda che modificando il valore del cambio è necessario riportare in quadratura le scadenze degli accertamenti!");
fp.aggiornaImportiTotali();
basicDoCalcolaTotaleFatturaFornitoreInEur(fp);
for (java.util.Iterator i = fp.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dettaglio = (Fattura_passiva_rigaBulk) i.next();
if (dettaglio instanceof Fattura_passiva_rigaIBulk) {
java.math.BigDecimal vecchioTotale = (java.math.BigDecimal) vecchiTotali.get(dettaglio);
if (vecchioTotale == null)
vecchioTotale = new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
basicCalcolaImportoDisponibileNC(context, (Fattura_passiva_rigaIBulk) dettaglio, vecchioTotale);
}
}
}
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
/**
* Gestisce l'eccezione CheckDisponibilitaCassaFailed generata dall'obbligazione
* mantenendo traccia della scelta di conferma o annullamento dell'operazione
* da parte dell'utente
*/
public Forward doOnCheckDisponibilitaCassaFailed(
ActionContext context,
int option) {
if (option == it.cnr.jada.util.action.OptionBP.OK_BUTTON) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
try {
boolean modified = fillModel(context);
OptionRequestParameter userConfirmation = new OptionRequestParameter();
userConfirmation.setCheckDisponibilitaDiCassaRequired(Boolean.FALSE);
bp.setUserConfirm(userConfirmation);
if (bp.isBringBack())
doConfermaRiporta(context, it.cnr.jada.util.action.OptionBP.OK_BUTTON);
else if (bp.isCarryingThrough())
doRiportaAvanti(context);
else
doSalva(context);
} catch (Throwable e) {
return handleException(context, e);
}
}
return context.findDefaultForward();
}
/**
* Metodo utilizzato per gestire la conferma dell'inserimento/modifica di una obbligazione che ha sfondato
* la disponibilità per il contratto
*
* @param context ActionContext in uso.
* @param option Esito della risposta alla richiesta di sfondamento
* @return Forward
* @throws RemoteException
*/
public Forward doOnCheckDisponibilitaContrattoFailed(ActionContext context, int option) {
if (option == it.cnr.jada.util.action.OptionBP.OK_BUTTON) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
try {
boolean modified = fillModel(context);
OptionRequestParameter userConfirmation = new OptionRequestParameter();
userConfirmation.setCheckDisponibilitaContrattoRequired(Boolean.FALSE);
bp.setUserConfirm(userConfirmation);
if (bp.isBringBack())
doConfermaRiporta(context, it.cnr.jada.util.action.OptionBP.OK_BUTTON);
else if (bp.isCarryingThrough())
doRiportaAvanti(context);
else
doSalva(context);
} catch (Throwable e) {
return handleException(context, e);
}
}
return context.findDefaultForward();
}
/**
* Gestisce il cambiamento della data competenza coge 'a'
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnDataCompetenzaACogeChange(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
java.sql.Timestamp competenzaABck = fattura.getDt_a_competenza_coge();
try {
fillModel(context);
java.sql.Timestamp competenzaDa = fattura.getDt_da_competenza_coge();
java.sql.Timestamp competenzaA = fattura.getDt_a_competenza_coge();
if (competenzaA != null) {
java.util.GregorianCalendar tsOdiernoGregorian = new GregorianCalendar();
tsOdiernoGregorian.setTime(new Date(competenzaA.getTime()));
Integer esercizioCompetenzaA = new Integer(tsOdiernoGregorian.get(java.util.GregorianCalendar.YEAR));
String cds = fattura.getCd_cds();
if (competenzaA != null && competenzaDa != null)
if (!competenzaDa.equals(competenzaA) && !competenzaDa.before(competenzaA))
throw new it.cnr.jada.comp.ApplicationException("La data \"competenza da\" deve essere precedente o uguale a \"competenza a\"!");
if (((FatturaPassivaComponentSession) bp.createComponentSession()).isEsercizioChiusoPerDataCompetenza(context.getUserContext(), esercizioCompetenzaA, cds) && !fattura.getStato_coge().equals("NON_PROCESSARE_IN_COGE"))
throw new it.cnr.jada.comp.ApplicationException("Le date \"Competenza da\" e \"Competenza a\" non possono appartenere ad un esercizio chiuso");
}
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (Throwable t) {
fattura.setDt_a_competenza_coge(competenzaABck);
try {
bp.setModel(context, fattura);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento della data competenza coge 'da' *
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnDataCompetenzaDaCogeChange(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
java.sql.Timestamp competenzaDaBck = fattura.getDt_da_competenza_coge();
try {
fillModel(context);
java.sql.Timestamp competenzaDa = fattura.getDt_da_competenza_coge();
java.sql.Timestamp competenzaA = fattura.getDt_a_competenza_coge();
if (competenzaDa != null) {
java.util.GregorianCalendar tsOdiernoGregorian = new GregorianCalendar();
tsOdiernoGregorian.setTime(new Date(competenzaDa.getTime()));
Integer esercizioCompetenzaDa = new Integer(tsOdiernoGregorian.get(java.util.GregorianCalendar.YEAR));
String cds = fattura.getCd_cds();
if (competenzaA != null && competenzaDa != null)
if (!competenzaDa.equals(competenzaA) && !competenzaDa.before(competenzaA))
throw new it.cnr.jada.comp.ApplicationException("La data \"competenza a\" deve essere successiva o uguale a \"competenza da\"!");
if (((FatturaPassivaComponentSession) bp.createComponentSession()).isEsercizioChiusoPerDataCompetenza(context.getUserContext(), esercizioCompetenzaDa, cds) && !fattura.getStato_coge().equals("NON_PROCESSARE_IN_COGE"))
throw new it.cnr.jada.comp.ApplicationException("Le date \"Competenza da\" e \"Competenza a\" non possono appartenere ad un esercizio chiuso");
}
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (Throwable t) {
fattura.setDt_da_competenza_coge(competenzaDaBck);
try {
bp.setModel(context, fattura);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag autofattura ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlAutofatturaChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String fattServizi = fattura.getTi_bene_servizio();
fillModel(context);
try {
if (!bp.isSearching()) {
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
}
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setTi_bene_servizio(fattServizi);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag bolla doganale
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlBollaDoganaleChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
Boolean liqDiff = fattura.getFl_liquidazione_differita();
fillModel(context);
try {
if (fattura.isGestione_doc_ele() &&
(fattura.getDt_fattura_fornitore() != null && !(fattura.getDt_fattura_fornitore().compareTo(fattura.getDataInizioFatturaElettronica()) < 0)) &&
!fattura.isElettronica() &&
!fattura.isEstera() &&
!fattura.isSanMarinoSenzaIVA() &&
!fattura.isSanMarinoConIVA() &&
!fattura.isBollaDoganale()) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new it.cnr.jada.comp.ApplicationException("Non è possibile registrare una fattura che non sia elettronica, che non sia estera e che abbia data di emissione uguale o successiva al " + sdf.format(fattura.getDataInizioFatturaElettronica()) + "!");
}
if (Boolean.TRUE.equals(fattura.getFl_bolla_doganale())) {
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.getStato_pagamento_fondo_eco());
//fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
fattura.setAutoFatturaNeeded(false);
fattura.setFl_liquidazione_differita(Boolean.FALSE);
if (fattura instanceof Fattura_passiva_IBulk)
doBlankSearchFatturaEstera(context, (Fattura_passiva_IBulk) fattura);
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
} else if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
fattura.setTi_bene_servizio(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
fattura.setFl_liquidazione_differita(liqDiff);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag Extra UE ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlExtraUEChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
Boolean liqDiff = fattura.getFl_liquidazione_differita();
fillModel(context);
try {
if (fattura.isGestione_doc_ele() &&
(fattura.getDt_fattura_fornitore() != null && !(fattura.getDt_fattura_fornitore().compareTo(fattura.getDataInizioFatturaElettronica()) < 0)) &&
!fattura.isElettronica() &&
!fattura.isEstera() &&
!fattura.isSanMarinoSenzaIVA() &&
!fattura.isSanMarinoConIVA() &&
!fattura.isBollaDoganale()) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new it.cnr.jada.comp.ApplicationException("Non è possibile registrare una fattura che non sia elettronica, che non sia estera e che abbia data di emissione uguale o successiva al " + sdf.format(fattura.getDataInizioFatturaElettronica()) + "!");
}
if (Boolean.TRUE.equals(fattura.getFl_extra_ue())) {
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
fattura.setFl_liquidazione_differita(Boolean.FALSE);
if (!fattura.isPromiscua())
fattura.setTi_bene_servizio(fattura.FATTURA_DI_BENI);
fattura.setFl_autofattura((fattura.isFatturaDiServizi()) ? Boolean.TRUE : Boolean.FALSE);
//fattura.setAutoFatturaNeeded(fattura.isFatturaDiServizi());
} else {
fattura.setTi_bene_servizio(null);
fattura.setFl_autofattura(Boolean.FALSE);
//fattura.setAutoFatturaNeeded(false);
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
}
if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
fattura.setFl_liquidazione_differita(liqDiff);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag Intra UE ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlIntraUEChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
Boolean liqDiff = fattura.getFl_liquidazione_differita();
fillModel(context);
try {
if (fattura.isGestione_doc_ele() &&
(fattura.getDt_fattura_fornitore() != null && !(fattura.getDt_fattura_fornitore().compareTo(fattura.getDataInizioFatturaElettronica()) < 0)) &&
!fattura.isElettronica() &&
!fattura.isEstera() &&
!fattura.isSanMarinoSenzaIVA() &&
!fattura.isSanMarinoConIVA() &&
!fattura.isBollaDoganale()) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new it.cnr.jada.comp.ApplicationException("Non è possibile registrare una fattura che non sia elettronica, che non sia estera e che abbia data di emissione uguale o successiva al " + sdf.format(fattura.getDataInizioFatturaElettronica()) + "!");
}
if (Boolean.TRUE.equals(fattura.getFl_intra_ue())) {
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setFl_liquidazione_differita(Boolean.FALSE);
if (!fattura.isPromiscua())
fattura.setTi_bene_servizio(fattura.FATTURA_DI_BENI);
if (fattura.isCommerciale()) {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setAutoFatturaNeeded(true);
}
} else {
fattura.setTi_bene_servizio(null);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setAutoFatturaNeeded(false);
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
}
if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
fattura.setFl_liquidazione_differita(liqDiff);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag San Marino con IVA UE ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlSanMarinoConIVAChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
Boolean liqDiff = fattura.getFl_liquidazione_differita();
fillModel(context);
try {
if (fattura.isGestione_doc_ele() &&
(fattura.getDt_fattura_fornitore() != null && !(fattura.getDt_fattura_fornitore().compareTo(fattura.getDataInizioFatturaElettronica()) < 0)) &&
!fattura.isElettronica() &&
!fattura.isEstera() &&
!fattura.isSanMarinoSenzaIVA() &&
!fattura.isSanMarinoConIVA() &&
!fattura.isBollaDoganale()) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new it.cnr.jada.comp.ApplicationException("Non è possibile registrare una fattura che non sia elettronica, che non sia estera e che abbia data di emissione uguale o successiva al " + sdf.format(fattura.getDataInizioFatturaElettronica()) + "!");
}
if (Boolean.TRUE.equals(fattura.getFl_san_marino_con_iva())) {
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setAutoFatturaNeeded(false);
fattura.setFl_liquidazione_differita(Boolean.FALSE);
}
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
fattura.setTi_bene_servizio(null);
if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
fattura.setFl_liquidazione_differita(liqDiff);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag San Marino senza IVA UE ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlSanMarinoSenzaIVAChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
Boolean liqDiff = fattura.getFl_liquidazione_differita();
fillModel(context);
try {
if (fattura.isGestione_doc_ele() &&
(fattura.getDt_fattura_fornitore() != null && !(fattura.getDt_fattura_fornitore().compareTo(fattura.getDataInizioFatturaElettronica()) < 0)) &&
!fattura.isElettronica() &&
!fattura.isEstera() &&
!fattura.isSanMarinoSenzaIVA() &&
!fattura.isSanMarinoConIVA() &&
!fattura.isBollaDoganale()) {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new it.cnr.jada.comp.ApplicationException("Non è possibile registrare una fattura che non sia elettronica, che non sia estera e che abbia data di emissione uguale o successiva al " + sdf.format(fattura.getDataInizioFatturaElettronica()) + "!");
}
if (Boolean.TRUE.equals(fattura.getFl_san_marino_senza_iva())) {
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setFl_liquidazione_differita(Boolean.FALSE);
if (!fattura.isPromiscua())
fattura.setTi_bene_servizio(fattura.FATTURA_DI_BENI);
if (fattura.isCommerciale()) {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setFl_split_payment(Boolean.FALSE);
//fattura.setAutoFatturaNeeded(true);
}
} else {
fattura.setTi_bene_servizio(null);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setAutoFatturaNeeded(false);
}
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
fattura.setFl_liquidazione_differita(liqDiff);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag spedizioniere ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlSpedizioniereChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
fillModel(context);
try {
if (Boolean.TRUE.equals(fattura.getFl_spedizioniere())) {
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.getStato_pagamento_fondo_eco());
//fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setAutoFatturaNeeded(false);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
if (fattura instanceof Fattura_passiva_IBulk)
doBlankSearchFatturaEstera(context, (Fattura_passiva_IBulk) fattura);
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
} else if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
fattura.setTi_bene_servizio(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del tipo sezionale ricaricandoli
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnIstituzionaleCommercialeChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
if (fattura.existARowInventoried())
throw new it.cnr.jada.comp.ApplicationException("Alcuni dettagli sono già stati associati all'inventario. Modifica non possibile!");
java.util.Collection sezionaliOld = fattura.getSezionali();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
Boolean liqDiff = fattura.getFl_liquidazione_differita();
fillModel(context);
try {
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setAutoFatturaNeeded(false);
fattura.setTi_bene_servizio(null);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
fattura.setFl_liquidazione_differita(Boolean.FALSE);
if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setSezionali(sezionaliOld);
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
fattura.setFl_liquidazione_differita(liqDiff);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento delle modalità di pagamento del fornitore
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnModalitaPagamentoChange(ActionContext context) {
try {
CRUDFatturaPassivaBP crudFattura = (CRUDFatturaPassivaBP) getBusinessProcess(context);
//Fattura_passivaBulk originale = (Fattura_passivaBulk)crudFattura.getBulkClone();
Fattura_passivaBulk originale = (Fattura_passivaBulk) crudFattura.getModel();
Rif_modalita_pagamentoBulk old_modalita = originale.getModalita_pagamento();
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
//se c'è almeno un dettaglio non faccio più modificare la modalità di pagamento
//commentato perchè per le fatture elettroniche hanno già i dettagli caricati
/*
if(fattura.getFattura_passiva_dettColl().size()>0)
{
if (old_modalita!=null)
fattura.setModalita_pagamento(old_modalita);
throw new it.cnr.jada.comp.ApplicationException("Esiste almeno un dettaglio e quindi la Modalità di pagamento deve essere cambiata sul dettaglio stesso.");
}
*/
if (fattura.getModalita_pagamento() != null) {
FatturaPassivaComponentSession fpcs = (FatturaPassivaComponentSession) bp.createComponentSession();
java.util.Collection coll = fpcs.findListabanche(context.getUserContext(), fattura);
fattura.setBanca((coll == null || coll.isEmpty()) ? null : (BancaBulk) new java.util.Vector(coll).firstElement());
fattura.setCessionario(fpcs.findCessionario(context.getUserContext(), fattura));
if ((getBusinessProcess(context).isInserting()) && (fattura.getFattura_passiva_dettColl().size() > 0)) {
for (Iterator i = fattura.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaIBulk fattura_riga = (Fattura_passiva_rigaIBulk) i.next();
fattura_riga.setModalita_pagamento(fattura.getModalita_pagamento());
fattura_riga.setBanca((coll == null || coll.isEmpty()) ? null : (BancaBulk) new java.util.Vector(coll).firstElement());
fattura_riga.setCessionario(fpcs.findCessionario(context.getUserContext(), fattura_riga));
}
}
} else {
fattura.setBanca(null);
fattura.setCessionario(null);
}
//se c'è un solo dettaglio non pagato cambio la modalità anche al dettaglio
/*
if(fattura.getFattura_passiva_dettColl().size()==1)
{
for (java.util.Iterator i = fattura.getFattura_passiva_dettColl().iterator(); i.hasNext();) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk)i.next();
riga.setModalita_pagamento(fattura.getModalita_pagamento());
doOnModalitaPagamentoDetChange(context);
}
}
*/
bp.setModel(context, fattura);
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
/**
* Gestisce il cambiamento della quantità del dettaglio
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnQuantitaChange(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) bp.getDettaglio().getModel();
java.math.BigDecimal qta = riga.getQuantita();
java.math.BigDecimal pu = riga.getPrezzo_unitario();
java.math.BigDecimal imiva = riga.getIm_iva();
Boolean flimiva = riga.getFl_iva_forzata();
java.math.BigDecimal impnc = riga.getIm_diponibile_nc();
try {
java.math.BigDecimal vecchioTotale = riga.getIm_imponibile().add(riga.getIm_iva());
if (riga instanceof Fattura_passiva_rigaIBulk)
vecchioTotale = vecchioTotale.add(((Fattura_passiva_rigaIBulk) riga).getIm_totale_addebiti());
fillModel(context);
basicDoCalcolaTotaliDiRiga(context, riga, vecchioTotale);
} catch (Throwable e) {
riga.setQuantita(qta);
riga.setPrezzo_unitario(pu);
riga.setIm_diponibile_nc(impnc);
riga.setIm_iva(imiva);
riga.setFl_iva_forzata(flimiva);
riga.calcolaCampiDiRiga();
return handleException(context, e);
}
riga.setInventariato(false);
return context.findDefaultForward();
}
/**
* Gestisce il cambiamento delle modalità di pagamento del fornitore
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnModalitaPagamentoDetChange(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passiva_rigaBulk fattura_riga = (Fattura_passiva_rigaBulk) bp.getDettaglio().getModel();
if (fattura_riga.getModalita_pagamento() != null) {
FatturaPassivaComponentSession fpcs = (FatturaPassivaComponentSession) bp.createComponentSession();
java.util.Collection coll = fpcs.findListabanchedett(context.getUserContext(), fattura_riga);
fattura_riga.setBanca((coll == null || coll.isEmpty()) ? null : (BancaBulk) new java.util.Vector(coll).firstElement());
fattura_riga.setCessionario(fpcs.findCessionario(context.getUserContext(), fattura_riga));
} else {
fattura_riga.setBanca(null);
fattura_riga.setCessionario(null);
}
bp.setModel(context, fattura_riga.getFattura_passiva());
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
/**
* Gestisce il cambiamento del sezionale
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnSezionaliFlagsChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
fillModel(context);
try {
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce il cambiamento del flag Intra UE ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnTiBeneServizioChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
fillModel(context);
try {
if (fattura.getFl_extra_ue() != null &&
fattura.getFl_extra_ue().booleanValue()) {
if (fattura.getTi_bene_servizio() != null &&
Bene_servizioBulk.SERVIZIO.equalsIgnoreCase(fattura.getTi_bene_servizio())) {
fattura.setFl_merce_intra_ue(Boolean.FALSE);
if (fattura.isCommerciale()) {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setAutoFatturaNeeded(false);
}
} else {
fattura.setFl_autofattura(Boolean.FALSE);
//fattura.setAutoFatturaNeeded(false);
}
}
if (fattura.isCommerciale() && fattura.getFl_intra_ue() != null &&
fattura.getFl_intra_ue().booleanValue()) {
if (fattura.isFatturaDiServizi()) {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setAutoFatturaNeeded(false);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
} else {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setAutoFatturaNeeded(true);
}
}
if (fattura.isCommerciale() && fattura.getFl_san_marino_senza_iva() != null &&
fattura.getFl_san_marino_senza_iva().booleanValue()) {
if (fattura.isFatturaDiServizi()) {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setAutoFatturaNeeded(false);
} else {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setAutoFatturaNeeded(true);
}
}
basicDoOnIstituzionaleCommercialeChange(context, fattura);
//bp.setModel(context,fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* richiede l'apertura del pannello dell'obbligazione per la modifica della
* scadenza selezionata
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOpenObbligazioniWindow(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
if (((Fattura_passivaBulk) bp.getModel()).isGenerataDaCompenso())
throw new it.cnr.jada.comp.ApplicationException("La fattura passiva è stata generata da un compenso. Obbligazione non presente!");
Obbligazione_scadenzarioBulk scadenza = (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel();
boolean viewMode = bp.isViewing();
if (scadenza == null)
throw new it.cnr.jada.comp.ApplicationException("Selezionare l'impegno da " + (viewMode ? "visualizzare" : "modificare") + " in manuale!");
if (bp.isDeleting() &&
!bp.isViewing() &&
!it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext()).equals(scadenza.getEsercizio()))
throw new it.cnr.jada.comp.ApplicationException("La scadenza selezionata appartiene all'esercizio " + scadenza.getEsercizio().intValue() + "! Operazione annullata.");
controllaQuadraturaConti(context, (Fattura_passivaBulk) bp.getModel());
if (!viewMode && bp instanceof IDocumentoAmministrativoBP) {
IDocumentoAmministrativoBP docAmmBP = (IDocumentoAmministrativoBP) bp;
viewMode = !docAmmBP.getDocumentoAmministrativoCorrente().isEditable();
//Nel caso di fp riportate con 1210...
if (viewMode && bp instanceof CRUDFatturaPassivaIBP)
viewMode = !((CRUDFatturaPassivaIBP) docAmmBP).isManualModify();
}
//Fattura_passivaBulk fat_pas = (Fattura_passivaBulk)bp.getModel();
//if ( fat_pas.getEsercizio().intValue() != fat_pas.getEsercizioInScrivania().intValue()){
//viewMode = true;
//}
String status = viewMode ? "V" : "M";
it.cnr.contab.doccont00.bp.CRUDVirtualObbligazioneBP nbp = it.cnr.contab.doccont00.bp.CRUDVirtualObbligazioneBP.getBusinessProcessFor(context, scadenza.getObbligazione(), status + "RSWTh");
nbp.edit(context, scadenza.getObbligazione());
((ObbligazioneBulk) nbp.getModel()).setFromDocAmm(true);
nbp.selezionaScadenza(scadenza, context);
context.addHookForward("bringback", this, "doBringBackOpenObbligazioniWindow");
HookForward hook = (HookForward) context.findForward("bringback");
return context.addBusinessProcess(nbp);
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* Risponde all'evento di fine cancellazione dei documentio amministrativi di tipo
* passivo
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doPostConfirmDelete(
ActionContext context,
Risultato_eliminazioneVBulk re)
throws BusinessProcessException {
it.cnr.jada.util.action.CRUDBP bp = getBusinessProcess(context);
Fattura_passivaBulk fp = (Fattura_passivaBulk) bp.getModel();
String msg = "Cancellazione effettuata!";
if (fp.isVoidable()) {
msg = "Annullamento effettuato!";
bp.edit(context, bp.getModel());
} else {
bp.reset(context);
}
if (!re.getDocumentiContabiliScollegati().isEmpty())
msg = msg + " Alcuni documenti contabili creati contestualmente al documento amministrativo sono rimasti inalterati.";
bp.setMessage(msg);
return context.findDefaultForward();
}
/**
* Gestisce il comando di aggiunta di un nuovo dettaglio su un CRUDController
* figlio del ricevente
*/
public Forward doRemoveFromCRUDMain_Dettaglio(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fp = (Fattura_passivaBulk) bp.getModel();
java.util.Vector dettagliInventariatiEliminati = new java.util.Vector();
for (it.cnr.jada.util.action.SelectionIterator i = bp.getDettaglio().getSelection().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dett = (Fattura_passiva_rigaBulk) bp.getDettaglio().getDetails().get(i.nextIndex());
if (Optional.ofNullable(dett)
.filter(fattura_passiva_rigaBulk -> fattura_passiva_rigaBulk.isInventariato())
.flatMap(fattura_passiva_rigaBulk-> Optional.ofNullable(fattura_passiva_rigaBulk.getBene_servizio()))
.map(bene_servizioBulk ->
Optional.ofNullable(bene_servizioBulk.getFl_gestione_inventario()).orElse(Boolean.FALSE) &&
Optional.ofNullable(bene_servizioBulk.getCrudStatus()).orElse(-1) != it.cnr.jada.bulk.OggettoBulk.UNDEFINED)
.orElse(Boolean.FALSE)) {
dettagliInventariatiEliminati.add(dett);
}
}
bp.getDettaglio().remove(context);
if (dettagliInventariatiEliminati.size() != 0) {
for (java.util.Iterator i = dettagliInventariatiEliminati.iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dett = (Fattura_passiva_rigaBulk) i.next();
AssociazioniInventarioTable associazioni = fp.getAssociazioniInventarioHash();
if (associazioni != null && !associazioni.isEmpty() && dett instanceof Fattura_passiva_rigaIBulk) {
Ass_inv_bene_fatturaBulk ass = fp.getAssociationWithInventarioFor(dett);
if (ass != null && !ass.isPerAumentoValore()) {
Fattura_passiva_rigaIBulk dettaglio = (Fattura_passiva_rigaIBulk) dett;
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
h.rimuoviDaAssociazioniInventario(
context.getUserContext(),
dettaglio,
ass);
fp.removeFromAssociazioniInventarioHash(ass, dettaglio);
} else if (ass != null && ass.isPerAumentoValore()) {
BuonoCaricoScaricoComponentSession buono_session = (BuonoCaricoScaricoComponentSession) bp.createComponentSession(
"CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",
BuonoCaricoScaricoComponentSession.class);
Buono_carico_scaricoBulk buono = ass.getTest_buono();
buono.setToBeDeleted();
buono_session.eliminaConBulk(context.getUserContext(), buono);
for (java.util.Iterator iter = fp.getFattura_passiva_dettColl().iterator(); iter.hasNext(); ) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) iter.next();
if (riga.isInventariato() && !fp.getHa_beniColl()) riga.setInventariato(false);
}
Fattura_passiva_rigaIBulk dettaglio = (Fattura_passiva_rigaIBulk) dett;
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
h.rimuoviDaAssociazioniInventario(
context.getUserContext(),
dettaglio,
ass);
fp.removeFromAssociazioniInventarioHash(ass, dettaglio);
}
} else if (associazioni != null && !associazioni.isEmpty() && dett instanceof Nota_di_credito_rigaBulk) {
Ass_inv_bene_fatturaBulk ass = fp.getAssociationWithInventarioFor(dett);
if (ass != null && !ass.isPerAumentoValore()) {
Nota_di_credito_rigaBulk dettaglio = (Nota_di_credito_rigaBulk) dett;
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
h.rimuoviDaAssociazioniInventario(
context.getUserContext(),
ass);
fp.removeFromAssociazioniInventarioHash(ass, dettaglio);
}
} else if (associazioni != null && !associazioni.isEmpty() && dett instanceof Nota_di_debito_rigaBulk) {
Ass_inv_bene_fatturaBulk ass = fp.getAssociationWithInventarioFor(dett);
if (ass != null && !ass.isPerAumentoValore()) {
Nota_di_debito_rigaBulk dettaglio = (Nota_di_debito_rigaBulk) dett;
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
h.rimuoviDaAssociazioniInventario(
context.getUserContext(),
ass);
fp.removeFromAssociazioniInventarioHash(ass, dettaglio);
} else if (ass != null && ass.isPerAumentoValore()) {
BuonoCaricoScaricoComponentSession buono_session = (BuonoCaricoScaricoComponentSession) bp.createComponentSession(
"CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",
BuonoCaricoScaricoComponentSession.class);
Buono_carico_scaricoBulk buono = ass.getTest_buono();
buono.setToBeDeleted();
buono_session.eliminaConBulk(context.getUserContext(), buono);
for (java.util.Iterator iter = fp.getFattura_passiva_dettColl().iterator(); iter.hasNext(); ) {
Nota_di_debito_rigaBulk riga = (Nota_di_debito_rigaBulk) iter.next();
if (riga.isInventariato() && !fp.getHa_beniColl()) riga.setInventariato(false);
}
Nota_di_debito_rigaBulk dettaglio = (Nota_di_debito_rigaBulk) dett;
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
h.rimuoviDaAssociazioniInventario(
context.getUserContext(),
ass);
fp.removeFromAssociazioniInventarioHash(ass, dettaglio);
}
} else {
CarichiInventarioTable carichi = fp.getCarichiInventarioHash();
if (carichi != null && !carichi.isEmpty()) {
BuonoCaricoScaricoComponentSession h = (BuonoCaricoScaricoComponentSession) bp.createComponentSession(
"CNRINVENTARIO01_EJB_BuonoCaricoScaricoComponentSession",
BuonoCaricoScaricoComponentSession.class);
for (java.util.Enumeration e = ((CarichiInventarioTable) carichi.clone()).keys(); e.hasMoreElements(); ) {
Buono_carico_scaricoBulk buono = (Buono_carico_scaricoBulk) e.nextElement();
buono.setToBeDeleted();
h.eliminaConBulk(context.getUserContext(), buono);
carichi.remove(buono);
}
for (java.util.Iterator iter = fp.getFattura_passiva_dettColl().iterator(); iter.hasNext(); ) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) iter.next();
if (riga.isInventariato() && !fp.getHa_beniColl()) riga.setInventariato(false);
}
} else
bp.getDettaglio().setInventoriedChildDeleted(true);
}
}
}
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doRemoveFromCRUDMain_Ordini(ActionContext context) throws ApplicationException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Selection selection = bp.getFattureRigaOrdiniController().getSelection();
Optional.ofNullable(selection)
.filter(selection1 -> !selection1.isEmpty())
.orElseThrow(() -> new ApplicationException("Selezionare le consegne che si desidera eliminare!"));
final List details = bp.getFattureRigaOrdiniController().getDetails();
final Iterator iterator = selection.iterator();
List bulksToRemove = new ArrayList();
iterator.forEachRemaining(index -> {
try {
final FatturaOrdineBulk fatturaOrdineBulk = details.get(index);
OrdineAcqConsegnaBulk ordineAcqConsegna = (OrdineAcqConsegnaBulk) bp.createComponentSession()
.findByPrimaryKey(context.getUserContext(), fatturaOrdineBulk.getOrdineAcqConsegna());
ordineAcqConsegna.setStatoFatt(OrdineAcqConsegnaBulk.STATO_FATT_NON_ASSOCIATA);
ordineAcqConsegna.setToBeUpdated();
bp.createComponentSession().modificaConBulk(
context.getUserContext(),
ordineAcqConsegna);
bulksToRemove.add(fatturaOrdineBulk);
} catch (ComponentException |RemoteException|BusinessProcessException e) {
throw new DetailedRuntimeException(e);
}
});
bulksToRemove.stream()
.forEach(fatturaOrdineBulk -> {
final Fattura_passiva_rigaBulk fattura_passiva_rigaBulk = fattura.getFatturaRigaOrdiniHash().getKey(fatturaOrdineBulk);
fatturaOrdineBulk.setToBeDeleted();
bp.getFattureRigaOrdiniController().getDetails().remove(fatturaOrdineBulk);
if (fattura.getFatturaRigaOrdiniHash().get(fattura_passiva_rigaBulk).isEmpty()) {
fattura_passiva_rigaBulk.setStato_cofi(Fattura_passiva_IBulk.STATO_INIZIALE);
}
});
bp.getFattureRigaOrdiniController().getSelection().clear();
return context.findDefaultForward();
}
/**
*
* Gestisce una richiesta di cancellazione dal controller "obbligazioni"
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doRemoveFromCRUDMain_Obbligazioni(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
it.cnr.jada.util.action.Selection selection = bp.getObbligazioniController().getSelection();
try {
if (selection.isEmpty())
throw new it.cnr.jada.comp.ApplicationException("Selezionare le scadenze che si desidera eliminare!");
} catch (it.cnr.jada.comp.ApplicationException e) {
return handleException(context, e);
}
java.util.List obbligazioni = bp.getObbligazioniController().getDetails();
for (it.cnr.jada.util.action.SelectionIterator i = selection.iterator(); i.hasNext(); ) {
Obbligazione_scadenzarioBulk obbligazione = (Obbligazione_scadenzarioBulk) obbligazioni.get(i.nextIndex());
java.util.Vector models = (java.util.Vector) ((Fattura_passivaBulk) bp.getModel()).getFattura_passiva_obbligazioniHash().get(obbligazione);
try {
if (models != null && models.isEmpty()) {
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
fattura.getFattura_passiva_obbligazioniHash().remove(obbligazione);
fattura.addToDocumentiContabiliCancellati(obbligazione);
} else {
for (java.util.Iterator it = models.iterator(); it.hasNext(); ) {
Fattura_passiva_rigaBulk fpr = (Fattura_passiva_rigaBulk) it.next();
if (fpr.getTi_associato_manrev() != null && fpr.ASSOCIATO_A_MANDATO.equalsIgnoreCase(fpr.getTi_associato_manrev()))
throw new it.cnr.jada.comp.ApplicationException("Impossibile scollegare l'impegno \"" +
+obbligazione.getEsercizio_originale().intValue()
+ "/" + obbligazione.getPg_obbligazione().longValue() +
"\" perchè il dettaglio collegato \"" +
((fpr.getDs_riga_fattura() != null) ?
fpr.getDs_riga_fattura() :
String.valueOf(fpr.getProgressivo_riga().longValue())) +
"\" è associato a mandato.");
}
scollegaDettagliDaObbligazione(context, (java.util.List) models.clone());
}
} catch (it.cnr.jada.comp.ComponentException e) {
return handleException(context, e);
}
doCalcolaTotalePerObbligazione(context, null);
Fattura_passiva_IBulk fattura = (Fattura_passiva_IBulk) bp.getModel();
setAndVerifyStatusFor(context, fattura);
bp.getObbligazioniController().getSelection().clear();
bp.getObbligazioniController().setModelIndex(context, -1);
bp.setDirty(true);
}
return context.findDefaultForward();
}
/**
*
* Gestisce una richiesta di cancellazione dal controller "obbligazioni_DettaglioObbligazioni"
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doRemoveFromCRUDMain_Obbligazioni_DettaglioObbligazioni(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
try {
it.cnr.jada.util.action.Selection selection = bp.getDettaglioObbligazioneController().getSelection();
if (selection.isEmpty())
throw new it.cnr.jada.comp.ApplicationException("Selezionare i dettagli che si desidera scollegare!");
java.util.List models = selection.select(bp.getDettaglioObbligazioneController().getDetails());
for (java.util.Iterator i = models.iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk fpr = (Fattura_passiva_rigaBulk) i.next();
if (fpr.getTi_associato_manrev() != null && fpr.ASSOCIATO_A_MANDATO.equalsIgnoreCase(fpr.getTi_associato_manrev()))
throw new it.cnr.jada.comp.ApplicationException("Impossibile scollegare il dettaglio \"" +
((fpr.getDs_riga_fattura() != null) ?
fpr.getDs_riga_fattura() :
String.valueOf(fpr.getProgressivo_riga().longValue())) +
"\" perchè associato a mandato.");
}
scollegaDettagliDaObbligazione(context, models);
} catch (it.cnr.jada.comp.ComponentException e) {
return handleException(context, e);
}
doCalcolaTotalePerObbligazione(context, (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel());
Fattura_passiva_IBulk fattura = (Fattura_passiva_IBulk) bp.getModel();
setAndVerifyStatusFor(context, fattura);
bp.getDettaglioObbligazioneController().getSelection().clear();
bp.getDettaglioObbligazioneController().setModelIndex(context, -1);
java.util.List dettagli = bp.getDettaglioObbligazioneController().getDetails();
if (dettagli == null || dettagli.isEmpty()) {
bp.getObbligazioniController().getSelection().clear();
bp.getObbligazioniController().setModelIndex(context, -1);
}
bp.setDirty(true);
return context.findDefaultForward();
}
public Forward doRicercaObbligazione(ActionContext context) {
return doRicercaObbligazione(context, true);
}
/**
* Ricerca un'obbligazione valida da associare al doc amm
* richeide la validità delle selezioni effettuate
*/
public Forward doRicercaObbligazione(ActionContext context, boolean manually) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
Optional models = Optional.ofNullable(bp.getDettaglio().getSelectedModels(context))
.map(list -> {
final int focus = bp.getDettaglio().getSelection().getFocus();
if (list.isEmpty() && Optional.ofNullable(fatturaPassiva.getFlDaOrdini())
.filter(isDaOrdini -> isDaOrdini.equals(Boolean.TRUE)).isPresent() && focus != -1) {
list.add(bp.getDettaglio().getDetails().get(focus));
}
return list;
})
.filter(list -> !list.isEmpty());
if (!models.isPresent()) {
bp.setErrorMessage("Per procedere, selezionare i dettagli da contabilizzare!");
return context.findDefaultForward();
}
final Boolean isDaOrdini = Optional.ofNullable(fatturaPassiva.getFlDaOrdini())
.filter(daOrdini -> daOrdini.equals(Boolean.TRUE))
.orElse(false);
if (fatturaPassiva.isGestione_doc_ele() && fatturaPassiva.isGenerataDaCompenso())
throw new it.cnr.jada.comp.ApplicationException("La fattura deve essere associata a compenso, la contabilizzazione verrà fatta direttamente nel compenso!");
if (fatturaPassiva.getFornitore() == null || fatturaPassiva.getFornitore().getCrudStatus() == it.cnr.jada.bulk.OggettoBulk.UNDEFINED)
throw new it.cnr.jada.comp.ApplicationException("Per eseguire questa operazione è necessario impostare un fornitore!");
if (!isDaOrdini) {
controllaSelezionePerContabilizzazione(context, models.get().iterator());
try {
controllaSelezionePerTitoloCapitoloLista(context, models.get().iterator());
} catch (ApplicationException e) {
throw new it.cnr.jada.comp.ApplicationException(e.getMessage());
}
}
if (isDaOrdini)
return basicDoRicercaEvasioneOrdine(context, fatturaPassiva, models.get(), manually);
else
return basicDoRicercaObbligazione(context, fatturaPassiva, models.get());
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Ricerca un'obbligazione valida da associare al doc amm
* richeide la validità delle selezioni effettuate
*/
public Forward doContabilzzaRighePerOrdini(ActionContext context) {
return doRicercaObbligazione(context, false);
}
public Forward doRiportaAvanti(ActionContext context) throws java.rmi.RemoteException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
try {
fillModel(context);
bp.salvaRiportandoAvanti(context);
bp.getObbligazioniController().setModelIndex(context, -1);
return context.findDefaultForward();
} catch (ValidationException e) {
bp.setErrorMessage(e.getMessage());
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doRiportaIndietro(ActionContext context) throws java.rmi.RemoteException {
try {
fillModel(context);
((CRUDFatturaPassivaBP) getBusinessProcess(context)).riportaIndietro(context);
return context.findDefaultForward();
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Apre il doc amm selezionato.
* Nel caso di apertura da spesa per fondo economale, viene riportato l'elemento
* nel fondo
*/
public Forward doRiportaSelezione(ActionContext context) throws java.rmi.RemoteException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
if (bp instanceof IDocumentoAmministrativoSpesaBP && ((IDocumentoAmministrativoSpesaBP) bp).isSpesaBP()) {
HookForward caller = (HookForward) context.getCaller();
it.cnr.jada.bulk.OggettoBulk selezione = (it.cnr.jada.bulk.OggettoBulk) caller.getParameter("focusedElement");
return basicDoRiportaSelezione(context, selezione);
}
return super.doRiportaSelezione(context);
}
/**
* Gestisce una richiesta di salvataggio. Rimplementato
*/
public Forward doSalva(ActionContext context) throws java.rmi.RemoteException {
Forward fwd = super.doSalva(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
//Azzero la selezione del controller obbligazioni per forzare il calcolo dei dettagli
//associati all'obbligazione selezionata
bp.getObbligazioniController().setModelIndex(context, -1);
return fwd;
}
/**
* Ricerca le banche valide
*/
public Forward doSearchListabanche(ActionContext context) {
Fattura_passivaBulk fattura = (Fattura_passivaBulk) getBusinessProcess(context).getModel();
if (getBusinessProcess(context).isInserting())
return search(context, getFormField(context, "main.listabanche"), fattura.getModalita_pagamento().getTiPagamentoColumnSet());
else {
getBusinessProcess(context).setMessage("Esiste almeno un dettaglio e quindi la Modalità di pagamento deve essere cambiata sul dettaglio stesso.");
return context.findDefaultForward();
}
}
public Forward doSearchListabanchedett(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passiva_rigaBulk fatturaRiga = (Fattura_passiva_rigaBulk) bp.getDettaglio().getModel();
return search(context, getFormField(context, "main.Dettaglio.listabanchedett"), fatturaRiga.getModalita_pagamento().getTiPagamentoColumnSet());
}
/**
* Ricerca i sospesi validi per associazione a lettera di pagamento
*/
public Forward doSearchSospeso(ActionContext context) {
Fattura_passivaBulk fattura = (Fattura_passivaBulk) getBusinessProcess(context).getModel();
if (fattura != null && fattura.getLettera_pagamento_estero() != null) {
Lettera_pagam_esteroBulk lettera = fattura.getLettera_pagamento_estero();
if (lettera.getSospeso() == null)
try {
doBlankSearchSospeso(context, fattura);
} catch (Exception e) {
return handleException(context, e);
}
return search(context, getFormField(context, "main.sospeso"), null);
}
return null;
}
/**
*
* Gestisce una richiesta di selezione dal controller "obbligazioni"
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doSelectObbligazioni(ActionContext context) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
try {
bp.getObbligazioniController().setSelection(context);
} catch (Throwable e) {
return handleException(context, e);
}
doCalcolaTotalePerObbligazione(context, (Obbligazione_scadenzarioBulk) bp.getObbligazioniController().getModel());
return context.findDefaultForward();
}
/**
* Viene richiamato nel momento in cui si seleziona una valuta dal combo Valuta nella
* testata della fattura.
* Viene ricercato il cambio valido, vengono ricalcolati i totali e ricalcolato il
* totale in eur
*/
public Forward doSelezionaValuta(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
DivisaBulk divisa = fattura.getValuta();
it.cnr.jada.bulk.PrimaryKeyHashtable vecchiTotali = new it.cnr.jada.bulk.PrimaryKeyHashtable();
if (fattura instanceof Fattura_passiva_IBulk) {
for (java.util.Iterator i = fattura.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaIBulk dettaglio = (Fattura_passiva_rigaIBulk) i.next();
java.math.BigDecimal vecchioTotale = dettaglio.getIm_imponibile().add(dettaglio.getIm_iva());
vecchioTotale = vecchioTotale.add(dettaglio.getIm_totale_addebiti());
vecchiTotali.put(dettaglio, vecchioTotale);
}
}
fillModel(context);
try {
if (!bp.isSearching()) {
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
fattura = h.cercaCambio(context.getUserContext(), fattura);
basicDoCalcolaTotaleFatturaFornitoreInEur(fattura);
for (java.util.Iterator i = fattura.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dettaglio = (Fattura_passiva_rigaBulk) i.next();
if (dettaglio instanceof Fattura_passiva_rigaIBulk) {
java.math.BigDecimal vecchioTotale = (java.math.BigDecimal) vecchiTotali.get(dettaglio);
if (vecchioTotale == null)
vecchioTotale = new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP);
basicCalcolaImportoDisponibileNC(context, (Fattura_passiva_rigaIBulk) dettaglio, vecchioTotale);
}
}
bp.setModel(context, fattura);
if (fattura.getObbligazioniHash() != null && !fattura.getObbligazioniHash().isEmpty())
bp.setErrorMessage("Attenzione: si ricorda che modificando il valore del cambio è necessario riportare in quadratura le scadenze delle obbligazioni!");
if (fattura.getAccertamentiHash() != null && !fattura.getAccertamentiHash().isEmpty())
bp.setErrorMessage("Attenzione: si ricorda che modificando il valore del cambio è necessario riportare in quadratura le scadenze degli accertamenti!");
}
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setValuta(divisa);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Seleziona la valuta di default
*/
public Fattura_passivaBulk doSelezionaValutaDefault(ActionContext context, Fattura_passivaBulk fattura)
throws ComponentException {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
fattura = h.selezionaValutaDiDefault(context.getUserContext(), fattura);
basicDoCalcolaTotaleFatturaFornitoreInEur(fattura);
if (fattura.getObbligazioniHash() != null && !fattura.getObbligazioniHash().isEmpty())
bp.setErrorMessage("Attenzione: si ricorda che modificando il valore del cambio è necessario riportare in quadratura le scadenze delle obbligazioni!");
if (fattura.getAccertamentiHash() != null && !fattura.getAccertamentiHash().isEmpty())
bp.setErrorMessage("Attenzione: si ricorda che modificando il valore del cambio è necessario riportare in quadratura le scadenze degli accertamenti!");
return fattura;
} catch (BusinessProcessException e) {
throw new ComponentException(e);
} catch (java.rmi.RemoteException e) {
throw new ComponentException(e);
}
}
/**
* Gestisce un cambiamento di pagina su un controllo tabbed {@link it.cnr.jada.util.jsp.JSPUtils.tabbed}
*/
public Forward doTab(ActionContext context, String tabName, String pageName) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
try {
if ("tabFatturaPassiva".equalsIgnoreCase(bp.getTab(tabName))) {
fillModel(context);
// try {
if (!bp.isSearching() && !bp.isViewing() && !fattura.isRODateCompetenzaCOGE()){
fattura.validaDateCompetenza();
}
if (!bp.isSearching() && !bp.isViewing()){
if ((((FatturaPassivaComponentSession) bp.createComponentSession()).estraeSezionali(context.getUserContext(), fattura)!= null) && ! (((FatturaPassivaComponentSession) bp.createComponentSession()).estraeSezionali(context.getUserContext(), fattura).isEmpty())){
boolean trovato=false;
for (java.util.Iterator i = ((FatturaPassivaComponentSession) bp.createComponentSession()).estraeSezionali(context.getUserContext(), fattura).iterator(); i.hasNext(); ) {
Tipo_sezionaleBulk tipo=(Tipo_sezionaleBulk)i.next();
if (tipo.getCd_tipo_sezionale().compareTo(fattura.getCd_tipo_sezionale())==0)
trovato=true;
}
if(!trovato)
throw new it.cnr.jada.comp.ApplicationException("Attenzione: verificare il sezionale selezionato.");
}
}
//} catch (ValidationException e) {
//bp.setErrorMessage(e.getMessage());
//}
}
if ("tabFatturaPassivaDettaglio".equalsIgnoreCase(bp.getTab(tabName))) {
fillModel(context);
bp.getDettaglio().validate(context);
try {
if (!bp.isSearching())
controllaQuadraturaConti(context, fattura);
} catch (it.cnr.jada.comp.ApplicationException e) {
bp.setErrorMessage(e.getMessage());
}
}
if ("tabFatturaPassivaObbligazioni".equalsIgnoreCase(bp.getTab(tabName))) {
try {
fillModel(context);
if (!bp.isSearching())
controllaQuadraturaObbligazioni(context, fattura);
} catch (it.cnr.jada.comp.ApplicationException e) {
bp.setErrorMessage(e.getMessage());
}
}
if ("tabFatturaPassivaIntrastat".equalsIgnoreCase(bp.getTab(tabName))) {
fillModel(context);
bp.getDettaglioIntrastatController().validate(context);
}
if (pageName.equalsIgnoreCase("tabFatturaPassivaConsuntivo")) {
fillModel(context);
FatturaPassivaComponentSession h = (FatturaPassivaComponentSession) bp.createComponentSession();
fattura = (Fattura_passivaBulk) h.calcoloConsuntivi(context.getUserContext(), fattura);
bp.setModel(context, fattura);
}
return super.doTab(context, tabName, pageName);
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* ricerca le note di credito per la fattura passiva aperta
*/
private it.cnr.jada.util.RemoteIterator findNoteDiCreditoFor(
ActionContext context,
Fattura_passiva_IBulk fatt) throws it.cnr.jada.comp.ComponentException {
try {
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
return ((FatturaPassivaComponentSession) bp.createComponentSession()).findNotaDiCreditoFor(context.getUserContext(), fatt);
} catch (java.rmi.RemoteException e) {
throw new it.cnr.jada.comp.ComponentException(e);
} catch (BusinessProcessException e) {
throw new it.cnr.jada.comp.ComponentException(e);
}
}
/**
* ricerca le note di debito per la fattura passiva aperta
*/
private it.cnr.jada.util.RemoteIterator findNoteDiDebitoFor(
ActionContext context,
Fattura_passiva_IBulk fatt) throws it.cnr.jada.comp.ComponentException {
try {
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
return ((FatturaPassivaComponentSession) bp.createComponentSession()).findNotaDiDebitoFor(context.getUserContext(), fatt);
} catch (java.rmi.RemoteException e) {
throw new it.cnr.jada.comp.ComponentException(e);
} catch (BusinessProcessException e) {
throw new it.cnr.jada.comp.ComponentException(e);
}
}
/**
* Restituisce un vettore di dettagli ancora da inventariare
*
* @param context L'ActionContext della richiesta
* @param dettagli
* @return
*/
protected java.util.List getDettagliDaInventariare(
ActionContext context,
java.util.Iterator dettagli) {
java.util.Vector coll = new java.util.Vector();
if (dettagli != null) {
while (dettagli.hasNext()) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) dettagli.next();
if (riga.getBene_servizio() != null && riga.getBene_servizio().getCd_bene_servizio() != null &&
riga.getBene_servizio().getFl_gestione_inventario() != null &&
riga.getBene_servizio().getFl_gestione_inventario().booleanValue() &&
!riga.isInventariato())
coll.add(riga);
}
}
return coll;
}
/**
* Restituisce tra i dettagli passati in argomento quelli che sono in uno degli
* stati specificati in statiDettaglio
*
* @param context L'ActionContext della richiesta
* @param dettagli
* @param statiDettaglio
* @return
*/
protected java.util.List getDettagliInStato(
ActionContext context,
java.util.Iterator dettagli,
String[] statiDettaglio) {
java.util.Vector coll = new java.util.Vector();
if (dettagli != null) {
while (dettagli.hasNext()) {
Nota_di_credito_rigaBulk rigaNdC = (Nota_di_credito_rigaBulk) dettagli.next();
for (int cont = 0; cont < statiDettaglio.length; cont++) {
String statoDettaglio = statiDettaglio[cont];
if (statoDettaglio.equals(rigaNdC.getRiga_fattura_origine().getStato_cofi()))
if (!coll.contains(rigaNdC))
coll.add(rigaNdC);
}
}
}
return coll;
}
/**
* Restituisce l'importo che deve assumere la scadenza nel caso di modifica automatica
*
* @param context L'ActionContext della richiesta
* @param scadenza
* @param fatturaPassiva
* @param delta
* @return
*/
protected java.math.BigDecimal getImportoPerAggiornamentoScadenzaInAutomatico(
ActionContext context,
Obbligazione_scadenzarioBulk scadenza,
Fattura_passivaBulk fatturaPassiva,
java.math.BigDecimal delta) {
//if (fatturaPassiva instanceof Fattura_passiva_IBulk) {
//Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk)fatturaPassiva;
//if (fp.isDoc1210Associato()) {
//java.math.BigDecimal impLettera = fp.getLettera_pagamento_estero().getIm_pagamento();
//return (fp.quadraturaInDeroga1210()) ? impLettera.add(fp.getIm_totale_iva()) : impLettera;
//}
//}
return fatturaPassiva.getImportoTotalePerObbligazione();
}
/**
* Restituisce tra i dettagli passati in argomento quelli che sono in uno degli
* stati specificati in statiDettaglio
*
* @param context L'ActionContext della richiesta
* @param dettagli
* @param statiDettaglio
* @return
*/
protected it.cnr.jada.util.action.Selection getIndexSelectionOn(
it.cnr.jada.util.action.Selection selection,
java.util.List dett,
String property) {
int jindex = 0;
int position = 0;
it.cnr.jada.util.action.Selection newSelection = new it.cnr.jada.util.action.Selection();
for (it.cnr.jada.util.action.SelectionIterator i = selection.iterator(); i.hasNext(); ) {
int index = i.nextIndex();
do {
Object obj = null;
do {
obj = dett.get(jindex++);
} while (it.cnr.jada.util.Introspector.getBoolean(obj, property, true));
} while (position++ != index);
newSelection.addToSelection(jindex - 1);
}
return newSelection;
}
protected Forward handleException(ActionContext context, Throwable ex) {
try {
throw ex;
} catch (it.cnr.contab.doccont00.comp.CheckDisponibilitaCassaFailed e) {
Fattura_passivaBulk doc = (Fattura_passivaBulk) ((CRUDFatturaPassivaBP) context.getBusinessProcess()).getModel();
if (doc instanceof Fattura_passiva_IBulk) {
Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) doc;
if (fp.isDoc1210Associato()) {
String msg = "L'importo della lettera di pagamento 1210 supera la disponiblità di cassa relativa al capitolo! Operazione interrotta.";
return super.handleException(context, new it.cnr.jada.comp.ApplicationException(msg));
}
}
return super.handleException(context, e);
} catch (Throwable e) {
return super.handleException(context, e);
}
}
/**
* Ricerca un boolean 'true' se tra i dettagli 'models' ne esiste qualcuno con
* associati storni o addebiti
*/
private boolean hasRangeDetailWithDocAmmAssociated(ActionContext context, java.util.List models) {
if (models != null) {
for (java.util.Iterator i = models.iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dettaglio = (Fattura_passiva_rigaBulk) i.next();
if (dettaglio instanceof Fattura_passiva_rigaIBulk) {
Fattura_passiva_rigaIBulk rigaFP = (Fattura_passiva_rigaIBulk) dettaglio;
if (rigaFP.hasStorni() || rigaFP.hasAddebiti())
return true;
}
}
}
return false;
}
/**
* Restituisce un boolean 'true' se tra i dettagli 'details' esiste un dettaglio
* con chiave primaria uguale a quella di 'rigaNdC'
*/
private boolean isRigaContainedInDetails(Nota_di_credito_rigaBulk rigaNdC, java.util.List details) {
if (details == null || details.isEmpty() || rigaNdC == null)
return false;
for (java.util.Iterator i = details.iterator(); i.hasNext(); ) {
Nota_di_credito_rigaBulk dettaglio = (Nota_di_credito_rigaBulk) i.next();
if (dettaglio.getRiga_fattura_origine().equalsByPrimaryKey(rigaNdC.getRiga_fattura_origine()))
return true;
}
return false;
}
/**
* Restituisce un boolean 'true' se tra i dettagli 'details' esiste un dettaglio
* con chiave primaria uguale a quella di 'rigaNdD'
*/
private boolean isRigaContainedInDetails(Nota_di_debito_rigaBulk rigaNdD, java.util.List details) {
if (details == null || details.isEmpty() || rigaNdD == null)
return false;
for (java.util.Iterator i = details.iterator(); i.hasNext(); ) {
Nota_di_debito_rigaBulk dettaglio = (Nota_di_debito_rigaBulk) i.next();
if (dettaglio.getRiga_fattura_origine().equalsByPrimaryKey(rigaNdD.getRiga_fattura_origine()))
return true;
}
return false;
}
/**
* Risincronizza la collezione delle obbligazioni (richiamato dopo la modifica di
* una scadenza associata al doc amm).
* Se questa collezione contiene in chiave la oldObblig (scadenza vecchia), essa
* viene eliminata e i dettagli ad essa associati vengono ricontabilizzati sulla
* newObblig (scadenza modificata dall'utente); se non ha ancora dettagli associati
* viene semplicemente eliminata
* ('scollegaDettagliDaObbligazione')
*/
private void resyncObbligazione(
ActionContext context,
Obbligazione_scadenzarioBulk oldObblig,
Obbligazione_scadenzarioBulk newObblig)
throws it.cnr.jada.comp.ComponentException {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
java.util.Vector models = ((java.util.Vector) fatturaPassiva.getFattura_passiva_obbligazioniHash().get(oldObblig));
java.util.Vector clone = (java.util.Vector) models.clone();
if (!clone.isEmpty())
scollegaDettagliDaObbligazione(context, clone);
else
fatturaPassiva.getFattura_passiva_obbligazioniHash().remove(oldObblig);
basicDoContabilizza(context, newObblig, clone);
}
/**
* Risincronizza la collezione delle obbligazioni (richiamato dopo la modifica di
* una scadenza associata al doc amm).
* Se questa collezione contiene in chiave la oldObblig (scadenza vecchia), essa
* viene eliminata e i dettagli ad essa associati vengono ricontabilizzati sulla
* newObblig (scadenza modificata dall'utente); se non ha ancora dettagli associati
* viene semplicemente eliminata
* Se uno dei dettagli ha un'associazione con note di credito/debito e se non
* sono in fase di cancellazione della fattura passiva, l'operazione viene interrotta
*/
private void scollegaDettagliDaObbligazione(ActionContext context, java.util.List models)
throws it.cnr.jada.comp.ComponentException {
if (models != null) {
try {
// if (!((CRUDFatturaPassivaBP)getBusinessProcess(context)).isDeleting() &&
// hasRangeDetailWithDocAmmAssociated(context, models))
// throw new it.cnr.jada.comp.ApplicationException("Uno o più dettagli hanno storni o addebiti collegati! Impossibile scollegare.");
for (java.util.Iterator i = models.iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk dettaglio = (Fattura_passiva_rigaBulk) i.next();
if (!dettaglio.STATO_CONTABILIZZATO.equals(dettaglio.getStato_cofi()))
throw new it.cnr.jada.comp.ApplicationException("Non è possibile scollegare il dettaglio \"" + dettaglio.getDs_riga_fattura() + "\". Questa operazione è permessa solo per dettagli in stato \"" + dettaglio.STATO.get(dettaglio.STATO_CONTABILIZZATO) + "\".");
dettaglio.getFattura_passiva().removeFromFattura_passiva_obbligazioniHash(dettaglio);
dettaglio.setStato_cofi(dettaglio.STATO_INIZIALE);
dettaglio.setObbligazione_scadenziario(null);
dettaglio.setToBeUpdated();
}
} catch (it.cnr.jada.comp.ApplicationException e) {
try {
CRUDVirtualObbligazioneBP.rollbackToSafePoint(context);
} catch (Throwable t) {
throw new ComponentException(t);
}
throw e;
}
}
}
/**
* Gestisce una richiesta di ricerca su un searchtool
*/
public Forward search(ActionContext context, FormField field, String columnSet) {
try {
if (field != null && "fornitore".equals(field.getField().getName())) {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) context.getBusinessProcess();
Fattura_passivaBulk fatturaPassiva = (Fattura_passivaBulk) bp.getModel();
if (!bp.isSearching() && fatturaPassiva != null && fatturaPassiva.getDt_fattura_fornitore() == null)
throw new it.cnr.jada.comp.ApplicationException("Impostare la data di emissione del documento del fornitore");
}
return super.search(context, field, columnSet);
} catch (Exception e) {
return handleException(context, e);
}
}
/**
* Verifica o imposta lo stato della fattura
*/
protected void setAndVerifyStatusFor(ActionContext context, Fattura_passivaBulk fatturaPassiva) {
if (fatturaPassiva != null)
fatturaPassiva.setAndVerifyStatus();
}
/**
* Gestisce il cambiamento del flag Extra UE ricaricando i sezionali
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doOnFlMerceExtraUEChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
fillModel(context);
try {
if (Boolean.TRUE.equals(fattura.getFl_merce_extra_ue())) {
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_merce_intra_ue(Boolean.FALSE);
if (!fattura.isPromiscua())
fattura.setTi_bene_servizio(fattura.FATTURA_DI_BENI);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setAutoFatturaNeeded(true);
} else {
fattura.setTi_bene_servizio(null);
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setAutoFatturaNeeded(false);
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
}
if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
public Forward doOnLiquidazioneDifferitaChange(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
if (fattura.getPg_fattura_passiva() != null) {
it.cnr.jada.util.RemoteIterator ric = findNoteDiCreditoFor(context, (Fattura_passiva_IBulk) bp.getModel());
ric = it.cnr.jada.util.ejb.EJBCommonServices.openRemoteIterator(context, ric);
if (ric != null && ric.countElements() != 0) {
it.cnr.jada.util.ejb.EJBCommonServices.closeRemoteIterator(context, ric);
fattura.setFl_liquidazione_differita((fattura.getFl_liquidazione_differita()) ? Boolean.FALSE : Boolean.TRUE);
bp.setModel(context, fattura);
throw new it.cnr.jada.comp.ApplicationException("Non è possibile effettuare tale modifica poichè esistono note di credito collegate per questa fattura!");
//bp.setMessage("Non è possibile effettuare tale modifica poichè esistono note di credito collegate per questa fattura!");
}
it.cnr.jada.util.RemoteIterator rid = findNoteDiDebitoFor(context, (Fattura_passiva_IBulk) bp.getModel());
rid = it.cnr.jada.util.ejb.EJBCommonServices.openRemoteIterator(context, rid);
if (rid != null && rid.countElements() != 0) {
it.cnr.jada.util.ejb.EJBCommonServices.closeRemoteIterator(context, rid);
fattura.setFl_liquidazione_differita((fattura.getFl_liquidazione_differita()) ? Boolean.FALSE : Boolean.TRUE);
bp.setModel(context, fattura);
throw new it.cnr.jada.comp.ApplicationException("Non è possibile effettuare tale modifica poichè esistono note di debito collegate per questa fattura!");
//bp.setMessage("Non è possibile effettuare tale modifica poichè esistono note di debito collegate per questa fattura!");
}
}
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
public Forward doOnStatoFondoEconChange(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
if (!fattura.getStato_pagamento_fondo_eco().equals(fattura.NO_FONDO_ECO)
&& Boolean.TRUE.equals(fattura.getFl_liquidazione_differita()))
fattura.setFl_liquidazione_differita(Boolean.FALSE);
bp.setModel(context, fattura);
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
public Forward doOnFlMerceIntraUEChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean intraUE = fattura.getFl_intra_ue();
Boolean extraUE = fattura.getFl_extra_ue();
Boolean sanMarinoCI = fattura.getFl_san_marino_con_iva();
Boolean sanMarinoSI = fattura.getFl_san_marino_senza_iva();
Boolean spedizioniere = fattura.getFl_spedizioniere();
Boolean bollaDoganale = fattura.getFl_bolla_doganale();
String spesa = fattura.getStato_pagamento_fondo_eco();
Boolean autof = fattura.getFl_autofattura();
String fattServizi = fattura.getTi_bene_servizio();
Boolean merceextraUE = fattura.getFl_merce_extra_ue();
Boolean merceintraUE = fattura.getFl_merce_intra_ue();
fillModel(context);
try {
if (Boolean.TRUE.equals(fattura.getFl_merce_intra_ue())) {
fattura.setFl_san_marino_con_iva(Boolean.FALSE);
fattura.setFl_san_marino_senza_iva(Boolean.FALSE);
fattura.setFl_bolla_doganale(Boolean.FALSE);
fattura.setFl_spedizioniere(Boolean.FALSE);
fattura.setStato_pagamento_fondo_eco(fattura.NO_FONDO_ECO);
fattura.setFl_intra_ue(Boolean.FALSE);
fattura.setFl_merce_extra_ue(Boolean.FALSE);
if (!fattura.isPromiscua())
fattura.setTi_bene_servizio(fattura.FATTURA_DI_BENI);
if (fattura.isCommerciale()) {
fattura.setFl_autofattura(Boolean.TRUE);
fattura.setAutoFatturaNeeded(true);
}
} else {
fattura.setTi_bene_servizio(null);
fattura.setFl_extra_ue(Boolean.FALSE);
fattura.setFl_autofattura(Boolean.FALSE);
fattura.setAutoFatturaNeeded(false);
if (!fattura.isDefaultValuta())
fattura = doSelezionaValutaDefault(context, fattura);
}
if (fattura instanceof Fattura_passiva_IBulk)
((Fattura_passiva_IBulk) fattura).setFattura_estera(null);
basicDoOnIstituzionaleCommercialeChange(context, fattura);
bp.setModel(context, fattura);
return context.findDefaultForward();
} catch (it.cnr.jada.comp.ComponentException e) {
fattura.setFl_intra_ue(intraUE);
fattura.setFl_extra_ue(extraUE);
fattura.setFl_san_marino_con_iva(sanMarinoCI);
fattura.setFl_san_marino_senza_iva(sanMarinoSI);
fattura.setFl_bolla_doganale(bollaDoganale);
fattura.setFl_spedizioniere(spedizioniere);
fattura.setStato_pagamento_fondo_eco(spesa);
fattura.setFl_autofattura(autof);
fattura.setTi_bene_servizio(fattServizi);
fattura.setFl_merce_extra_ue(merceextraUE);
fattura.setFl_merce_intra_ue(merceintraUE);
bp.setModel(context, fattura);
throw e;
}
} catch (Throwable t) {
return handleException(context, t);
}
}
/**
* Gestisce lo sdoppiamento della riga di dettaglio
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doSdoppiaDettaglio(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
Fattura_passiva_rigaIBulk riga = (Fattura_passiva_rigaIBulk) bp.getDettaglio().getModel();
Forward forward = context.findDefaultForward();
if (riga == null)
bp.setErrorMessage("Per procedere, selezionare il dettaglio da sdoppiare!");
else {
riga.setIm_riga_sdoppia(Utility.ZERO);
bp.setDetailDoubling(true);
}
return forward;
} catch (Throwable e) {
return handleException(context, e);
}
}
/**
* Gestisce lo sdoppiamento della riga di dettaglio
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
public Forward doConfirmSdoppiaDettaglio(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
fillModel(context);
bp.sdoppiaDettaglioInAutomatico(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
if (fattura != null) {
for (Iterator s = fattura.getFattura_passiva_dettColl().iterator(); s.hasNext(); ) {
Fattura_passiva_rigaIBulk riga = (Fattura_passiva_rigaIBulk) s.next();
if ((riga.isToBeCreated() || riga.isToBeUpdated()) && riga.getObbligazione_scadenziario() != null)
basicDoBringBackOpenObbligazioniWindow(context, riga.getObbligazione_scadenziario());
}
}
bp.setDirty(true);
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchListabanchedett(ActionContext context, Fattura_passiva_rigaBulk riga, BancaBulk banca) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
FatturaPassivaComponentSession fpcs = (FatturaPassivaComponentSession) bp.createComponentSession();
if (banca != null) {
riga.setBanca(banca);
if (banca.getCd_terzo_delegato() != null)
riga.setCessionario(fpcs.findCessionario(context.getUserContext(), riga));
}
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchListabanche(ActionContext context, Fattura_passivaBulk fattura, BancaBulk banca) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
FatturaPassivaComponentSession fpcs = (FatturaPassivaComponentSession) bp.createComponentSession();
if (banca != null) {
fattura.setBanca(banca);
if (banca.getCd_terzo_delegato() != null)
fattura.setCessionario(fpcs.findCessionario(context.getUserContext(), fattura));
}
if ((getBusinessProcess(context).isInserting()) && (fattura.getFattura_passiva_dettColl().size() > 0)) {
for (Iterator i = fattura.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaIBulk fattura_riga = (Fattura_passiva_rigaIBulk) i.next();
fattura_riga.setBanca(banca);
fattura_riga.setCessionario(fpcs.findCessionario(context.getUserContext(), fattura_riga));
}
}
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doBlankSearchFind_trovato(ActionContext context, TrovatoBulk trovato) {
if (trovato != null) {
TrovatoBulk newt = new TrovatoBulk();
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) bp.getDettaglio().getModel();
riga.setTrovato(newt);
riga.setPg_trovato(null);
}
return context.findDefaultForward();
}
public Forward doOnStatoLiquidazioneChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
String oldCausale = fattura.getCausale();
fillModel(context);
if (fattura.getStato_liquidazione() != null && fattura.getStato_liquidazione().equals(fattura.LIQ)) {
if (fattura.getCausale() != null) {
fattura.setCausale(null);
}
} else if (fattura.getStato_liquidazione() != null && fattura.getStato_liquidazione().equals(fattura.SOSP)) {
fattura.setCausale(fattura.ATTLIQ);
} else if (fattura.getStato_liquidazione() != null && fattura.getStato_liquidazione().equals(fattura.NOLIQ)) {
if (fattura.getCausale() != null && fattura.getCausale().equals(fattura.ATTLIQ)) {
if (oldCausale != null && !oldCausale.equals(fattura.ATTLIQ))
fattura.setCausale(oldCausale);
else
fattura.setCausale(null);
throw new ApplicationException("Causale non valida, per lo stato della Liquidazione");
}
}
bp.setModel(context, fattura);
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
public Forward doOnCausaleChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
String oldCausale = fattura.getCausale();
fillModel(context);
if (fattura.getStato_liquidazione() != null && fattura.getStato_liquidazione().equals(fattura.LIQ)) {
if (fattura.getCausale() != null) {
fattura.setCausale(null);
throw new ApplicationException("Causale non valida, per lo stato della Liquidazione");
}
} else if (fattura.getStato_liquidazione() != null && fattura.getStato_liquidazione().equals(fattura.NOLIQ)) {
if (fattura.getCausale() != null && fattura.getCausale().equals(fattura.ATTLIQ)) {
if (oldCausale != null && !oldCausale.equals(fattura.ATTLIQ))
fattura.setCausale(oldCausale);
else
fattura.setCausale(null);
throw new ApplicationException("Causale non valida, per lo stato della Liquidazione");
}
} else if (fattura.getStato_liquidazione() != null && fattura.getStato_liquidazione().equals(fattura.SOSP)) {
if (fattura.getCausale() != null && !fattura.getCausale().equals(fattura.ATTLIQ)) {
if (oldCausale != null)
fattura.setCausale(oldCausale);
else
fattura.setCausale(null);
throw new ApplicationException("Causale non valida, per lo stato della Liquidazione");
}
}
bp.setModel(context, fattura);
} catch (Throwable t) {
return handleException(context, t);
}
return context.findDefaultForward();
}
protected java.util.List controllaSelezionePerTitoloCapitoloLista(ActionContext context, java.util.Iterator selectedModels)
throws ComponentException, PersistencyException, IntrospectionException, RemoteException, BusinessProcessException {
if (selectedModels != null) {
java.util.Vector soggettiAInventario = new java.util.Vector();
java.util.List titoliCapitoli = null;
java.util.Vector categorieGruppo = new java.util.Vector();
int count = 0;
while (selectedModels.hasNext()) {
count += 1;
Fattura_passiva_rigaBulk rigaSelected = (Fattura_passiva_rigaBulk) selectedModels.next();
Bene_servizioBulk beneServizio = rigaSelected.getBene_servizio();
if (beneServizio == null)
throw new it.cnr.jada.comp.ApplicationException("Valorizzare il bene/servizio per il dettaglio " + ((rigaSelected.getDs_riga_fattura() == null) ? "" : "\"" + rigaSelected.getDs_riga_fattura() + "\"") + "! Operazione interrotta.");
if (beneServizio.getFl_gestione_inventario() != null && beneServizio.getFl_gestione_inventario().booleanValue()) {
soggettiAInventario.add(rigaSelected);
if (beneServizio.getCategoria_gruppo() == null)
throw new it.cnr.jada.comp.ApplicationException("Il bene/servizio \"" + beneServizio.getDs_bene_servizio() + "\" non ha definito alcuna categoria di appartenenza! Operazione interrotta.");
else if (categorieGruppo.isEmpty())
categorieGruppo.add(beneServizio.getCategoria_gruppo());
else
for (java.util.Iterator i = ((java.util.Vector) categorieGruppo.clone()).iterator(); i.hasNext(); ) {
Categoria_gruppo_inventBulk cat = (Categoria_gruppo_inventBulk) i.next();
if (!it.cnr.jada.bulk.BulkCollections.containsByPrimaryKey(categorieGruppo, beneServizio.getCategoria_gruppo()))
categorieGruppo.add(beneServizio.getCategoria_gruppo());
}
CategoriaGruppoInventComponentSession h = (CategoriaGruppoInventComponentSession)
context.getBusinessProcess().createComponentSession(
"CNRDOCAMM00_EJB_CategoriaGruppoInventComponentSession",
CategoriaGruppoInventComponentSession.class);
titoliCapitoli = h.findAssVoceFList(context.getUserContext(), beneServizio.getCategoria_gruppo());
if (titoliCapitoli == null)
throw new it.cnr.jada.comp.ApplicationException("Selezione non omogenea: il bene/servizio \"" + beneServizio.getDs_bene_servizio() + "\" non è stato attribuito ad alcuna categoria gruppo per l'inventario!");
}
}
int size = soggettiAInventario.size();
if (size != 0) {
if (size != count)
throw new it.cnr.jada.comp.ApplicationException("Selezione non omogenea: selezionare solo dettagli non inventariabili o solo dettagli inventariabili");
else if (categorieGruppo.size() != 1)
throw new it.cnr.jada.comp.ApplicationException("Selezione non omogenea: selezionare solo dettagli inventariabili con stesso titolo capitolo!");
}
if (titoliCapitoli != null && !titoliCapitoli.isEmpty())
return titoliCapitoli;
}
return null;
}
public Forward doCreaCompenso(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
Integer esercizioScrivania = it.cnr.contab.utenze00.bp.CNRUserContext.getEsercizio(context.getUserContext());
//java.math.BigDecimal quotaEsente = new java.math.BigDecimal(0);
//java.math.BigDecimal quotaEsenteNonImpo = new java.math.BigDecimal(0);
java.math.BigDecimal imBollo = new java.math.BigDecimal(0);
Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) bp.getModel();
if (fp.getCompenso() != null)
throw new it.cnr.jada.comp.ApplicationException("Esiste già un compenso associato alla fattura!");
bp.validaFatturaPerCompenso(context);
V_terzo_per_compensoBulk v_terzo = new V_terzo_per_compensoBulk(fp.getFornitore().getCd_terzo(), new String("A"));
v_terzo.setTerzo(fp.getFornitore());
v_terzo.setAnagrafico(fp.getFornitore().getAnagrafico());
v_terzo.setRagione_sociale(fp.getFornitore().getAnagrafico().getRagione_sociale());
v_terzo.setCognome(fp.getFornitore().getAnagrafico().getCognome());
v_terzo.setNome(fp.getFornitore().getAnagrafico().getNome());
v_terzo.setCodice_fiscale(fp.getFornitore().getAnagrafico().getCodice_fiscale());
v_terzo.setPartita_iva(fp.getFornitore().getAnagrafico().getPartita_iva());
context.addHookForward("bringback", this, "doBringBackCompenso");
// context.addHookForward("close",this,"doBringBackCompenso");
CRUDCompensoBP compensoBP = (CRUDCompensoBP) creaCompensoBP(context, true);
try {
compensoBP.reset(context);
CompensoBulk compenso = (CompensoBulk) compensoBP.getModel();
compenso.setV_terzo(v_terzo);
if (fp.getDocumentoEleTestata() != null && fp.isElettronica()) {
//quotaEsente = fp.getDocumentoEleTestata().calcolaImQuotaEsente(fp.getDocumentoEleTestata());
//quotaEsenteNonImpo = fp.getDocumentoEleTestata().calcolaImQuotaEsenteNonImpo(fp.getDocumentoEleTestata());
if (fp.getDocumentoEleTestata().getImportoBollo() != null)
imBollo = fp.getDocumentoEleTestata().getImportoBollo();
compenso.setIm_lordo_percipiente(fp.getDocumentoEleTestata().calcolaImLordoPercipiente(fp.getDocumentoEleTestata()));
compenso.setQuota_esente(imBollo);
compenso.setQuota_esente_no_iva(imBollo);
/*
compenso.setIm_lordo_percipiente(fp.getDocumentoEleTestata().calcolaImLordoPercipiente(fp.getDocumentoEleTestata()).add(quotaEsente).add(quotaEsenteNonImpo).add(imBollo));
compenso.setQuota_esente(quotaEsenteNonImpo.add(imBollo));
compenso.setQuota_esente_no_iva(quotaEsente.add(quotaEsenteNonImpo).add(imBollo));
*/
}
it.cnr.contab.compensi00.ejb.CompensoComponentSession component = (it.cnr.contab.compensi00.ejb.CompensoComponentSession) bp.createComponentSession("CNRCOMPENSI00_EJB_CompensoComponentSession", it.cnr.contab.compensi00.ejb.CompensoComponentSession.class);
compenso = component.inizializzaCompensoPerFattura(
context.getUserContext(),
compenso,
fp);
compensoBP.setModel(context, compenso);
} catch (Throwable t) {
compensoBP.rollbackToSavePoint(context, bp.SAVE_POINT_NAME);
throw t;
}
return context.addBusinessProcess(compensoBP);
} catch (Throwable e) {
return handleException(context, e);
}
}
private Forward creaCompensoBP(ActionContext context, boolean setSafePoint)
throws BusinessProcessException {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fp = (Fattura_passivaBulk) bp.getModel();
if (fp.getDocumentiContabiliCancellati() != null &&
!fp.getDocumentiContabiliCancellati().isEmpty()) {
OptionRequestParameter userConfirmation = new OptionRequestParameter();
userConfirmation.setCheckDisponibilitaContrattoRequired(Boolean.FALSE);
userConfirmation.setCheckDisponibilitaDiCassaRequired(Boolean.FALSE);
((FatturaPassivaComponentSession) bp.createComponentSession()).
aggiornaObblSuCancPerCompenso(context.getUserContext(),
fp,
fp.getDocumentiContabiliCancellati(),
userConfirmation);
fp.getDocumentiContabiliCancellati().removeAllElements();
//aggiornaObbligazioni(context.getUserContext(), (Fattura_passivaBulk) bp.getModel(), userConfirmation);
}
} catch (RemoteException e) {
return handleException(context, e);
} catch (ComponentException e) {
return handleException(context, e);
} catch (Throwable e) {
return handleException(context, e);
}
CRUDCompensoBP compensoBP = (CRUDCompensoBP) context.getUserInfo().createBusinessProcess(
context,
"CRUDCompensoBP",
new Object[]{"MRSWTh"}
);
if (setSafePoint)
compensoBP.setSavePoint(context, CRUDFatturaPassivaIBP.SAVE_POINT_NAME);
return compensoBP;
}
/**
* Al ritorno della creazione di un compenso, associo alle rate selezionate questo documento
*/
public Forward doBringBackCompenso(ActionContext context) {
HookForward caller = (HookForward) context.getCaller();
CompensoBulk compenso = (CompensoBulk) caller.getParameter("bringback");
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) getBusinessProcess(context);
if (compenso == null) {
try {
((CRUDCompensoBP) creaCompensoBP(context, false)).rollbackToSavePoint(context, bp.SAVE_POINT_NAME);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
return context.findDefaultForward();
}
try {
Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) bp.getModel();
fp.setFl_fattura_compenso(true);
fp.setStato_cofi(fp.STATO_CONTABILIZZATO);
fp.setStato_coge(fp.NON_PROCESSARE_IN_COGE);
fp.setStato_coan(fp.NON_PROCESSARE_IN_COAN);
//fp.setStato_liquidazione(fp.LIQ);
//fp.setCausale(null);
fp.setStato_pagamento_fondo_eco(fp.NO_FONDO_ECO);
fp.setCompenso(compenso);
for (java.util.Iterator i = fp.getFattura_passiva_dettColl().iterator(); i.hasNext(); ) {
Fattura_passiva_rigaBulk riga = (Fattura_passiva_rigaBulk) i.next();
riga.setStato_cofi(fp.STATO_CONTABILIZZATO);
}
bp.setModel(context, fp);
bp.setDirty(true);
bp.setMessage("Associazione terminata con successo.");
return context.findDefaultForward();
} catch (Throwable t) {
try {
((CRUDCompensoBP) creaCompensoBP(context, false)).rollbackToSavePoint(context, bp.SAVE_POINT_NAME);
} catch (BusinessProcessException e) {
return handleException(context, e);
}
return handleException(context, t);
}
}
public Forward doApriCompenso(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaIBP bp = (CRUDFatturaPassivaIBP) context.getBusinessProcess();
Fattura_passiva_IBulk fp = (Fattura_passiva_IBulk) bp.getModel();
if (fp == null || fp.getCompenso() == null)
throw new it.cnr.jada.comp.ApplicationException("Non esiste alcun Compenso da visualizzare!");
context.addHookForward("bringback", this, "doBringBackApriCompenso");
CRUDCompensoBP compensoBP = (CRUDCompensoBP) context.createBusinessProcess(
"CRUDCompensoBP",
new Object[]{"VRSWTh"});
compensoBP.setSavePoint(context, bp.SAVE_POINT_NAME);
try {
compensoBP.edit(context, fp.getCompenso());
} catch (Throwable t) {
compensoBP.rollbackToSavePoint(context, bp.SAVE_POINT_NAME);
throw t;
}
return context.addBusinessProcess(compensoBP);
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doBringBackApriCompenso(ActionContext context) {
try {
((CRUDCompensoBP) creaCompensoBP(context, false)).rollbackToSavePoint(
context,
CRUDFatturaPassivaIBP.SAVE_POINT_NAME);
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doOnFlFatturaCompensoChange(ActionContext context) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
Boolean fatcomp = fattura.getFl_fattura_compenso();
fillModel(context);
if (Boolean.TRUE.equals(fatcomp) && fattura.getCompenso() != null) {
fattura.setFl_fattura_compenso(fatcomp);
bp.setModel(context, fattura);
throw new it.cnr.jada.comp.ApplicationException("Non è possibile modificare questa informazione poichè esiste già un compenso collegato!");
}
if (Boolean.FALSE.equals(fatcomp) && fattura.hasDettagliContabilizzati()) {
fattura.setFl_fattura_compenso(fatcomp);
bp.setModel(context, fattura);
throw new it.cnr.jada.comp.ApplicationException("Non è possibile modificare questa informazione poichè risultano già contabilizzati i dettagli della fattura!");
}
return context.findDefaultForward();
} catch (Throwable t) {
return handleException(context, t);
}
}
public Forward doConfirmDtScadenza(ActionContext context, it.cnr.jada.util.action.OptionBP option) {
try {
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
if (option.getOption() == it.cnr.jada.util.action.OptionBP.NO_BUTTON) {
fattura.setDt_scadenza(null);
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doDisassociaLettera(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk model = (Fattura_passivaBulk) bp.getModel();
CNRUserInfo ui = (CNRUserInfo) context.getUserInfo();
UtenteBulk utente = ui.getUtente();
if (utente.isSupervisore()) {
if (model != null) {
if (model.getLettera_pagamento_estero() != null) {
model = ((FatturaPassivaComponentSession) bp.createComponentSession()).eliminaLetteraPagamentoEstero(context.getUserContext(), model, false);
bp.setModel(context, model);
}
}
} else throw new it.cnr.jada.comp.ApplicationException("Utente non abilitato!");
return context.findDefaultForward();
} catch (Throwable e) {
return handleException(context, e);
}
}
public Forward doOnFlSplitPaymentChange(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP) getBusinessProcess(context);
Fattura_passivaBulk fattura = (Fattura_passivaBulk) bp.getModel();
if (fattura.getFl_split_payment() != null && fattura.getFl_split_payment() && !fattura.isGestioneSplitPayment() && fattura.getDt_fattura_fornitore() != null) {
fattura.setFl_split_payment(Boolean.FALSE);
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
throw new ValidationException("Non è possibile registrare una fattura di tipo Split Payment che abbia data di emissione inferiore al " + sdf.format(fattura.getDataInizioSplitPayment()) + "!");
}
basicDoOnIstituzionaleCommercialeChange(context, fattura);
return context.findDefaultForward();
} catch (Throwable t) {
return handleException(context, t);
}
}
public Forward doOnFlDaOrdiniChange(ActionContext context) {
try {
fillModel(context);
/**
* TODO Nascondere la tab di contabilizzaione dell'impegno e mostare la tab ordini
*/
return context.findDefaultForward();
} catch (Throwable t) {
return handleException(context, t);
}
}
public Forward doRettificaConsegna(ActionContext context) {
try {
fillModel(context);
CRUDFatturaPassivaBP bp = Optional.ofNullable(getBusinessProcess(context))
.filter(CRUDFatturaPassivaBP.class::isInstance)
.map(CRUDFatturaPassivaBP.class::cast)
.orElseThrow(() -> new DetailedRuntimeException("Business Process non valido"));
final List details = bp.getFattureRigaOrdiniController().getDetails();
details.stream().forEach(fatturaOrdineBulk -> fatturaOrdineBulk.calcolaRettifiche());
return context.findDefaultForward();
} catch (Throwable t) {
return handleException(context, t);
}
}
public Forward doBringBackSearchVoceIva(ActionContext context,
FatturaOrdineBulk fatturaOrdineBulk,
Voce_ivaBulk voceIva) {
CRUDFatturaPassivaBP bp = Optional.ofNullable(getBusinessProcess(context))
.filter(CRUDFatturaPassivaBP.class::isInstance)
.map(CRUDFatturaPassivaBP.class::cast)
.orElseThrow(() -> new DetailedRuntimeException("Business Process non valido"));
Optional.ofNullable(voceIva)
.ifPresent(voce_ivaBulk -> {
fatturaOrdineBulk.setVoceIva(voce_ivaBulk);
bp.setDirty(true);
});
return doRettificaConsegna(context);
}
public Forward doBlankSearchVoceIva(ActionContext context,
FatturaOrdineBulk fatturaOrdineBulk) {
CRUDFatturaPassivaBP bp = Optional.ofNullable(getBusinessProcess(context))
.filter(CRUDFatturaPassivaBP.class::isInstance)
.map(CRUDFatturaPassivaBP.class::cast)
.orElseThrow(() -> new DetailedRuntimeException("Business Process non valido"));
fatturaOrdineBulk.setVoceIva(new Voce_ivaBulk());
fatturaOrdineBulk.calcolaRettifiche();
bp.setDirty(true);
return context.findDefaultForward();
}
public Forward doToggleOrdiniRettifiche(ActionContext context) {
CRUDFatturaPassivaBP bp = Optional.ofNullable(getBusinessProcess(context))
.filter(CRUDFatturaPassivaBP.class::isInstance)
.map(CRUDFatturaPassivaBP.class::cast)
.orElseThrow(() -> new DetailedRuntimeException("Business Process non valido"));
Optional.ofNullable(bp.getFattureRigaOrdiniController())
.ifPresent(ordiniCRUDController -> ordiniCRUDController.setRettificheCollapse(!ordiniCRUDController.isRettificheCollapse()));
return context.findDefaultForward();
}
public Forward doBringBackCRUDCrea_cig(ActionContext context, Obbligazione_scadenzarioBulk obbl, CigBulk cig)
{
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP)getBusinessProcess(context);
try
{
if (cig != null )
{
obbl.setCig(cig);
}
return context.findDefaultForward();
}
catch(it.cnr.jada.action.MessageToUser e)
{
getBusinessProcess(context).setErrorMessage(e.getMessage());
return context.findDefaultForward();
}
catch(Throwable e) {return handleException(context,e);}
}
public Forward doBlankSearchCig(ActionContext context, Obbligazione_scadenzarioBulk obbl) {
if (obbl!=null){
CRUDFatturaPassivaBP bp = (CRUDFatturaPassivaBP)getBusinessProcess(context);
obbl.setCig(null);
bp.setDirty(true);
}
return context.findDefaultForward();
}
}