it.cnr.contab.ordmag.ordini.action.CRUDOrdineAcqAction 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.ordmag.ordini.action;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.persistence.PersistenceException;
import it.cnr.contab.anagraf00.core.bulk.AnagraficoBulk;
import it.cnr.contab.anagraf00.core.bulk.TerzoBulk;
import it.cnr.contab.config00.bp.CRUDConfigAnagContrattoBP;
import it.cnr.contab.config00.contratto.bulk.ContrattoBulk;
import it.cnr.contab.config00.pdcfin.bulk.Elemento_voceBulk;
import it.cnr.contab.config00.sto.bulk.Unita_organizzativaBulk;
import it.cnr.contab.docamm00.bp.IDocumentoAmministrativoBP;
import it.cnr.contab.docamm00.bp.TitoloDiCreditoDebitoBP;
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.ObbligazioniTable;
import it.cnr.contab.docamm00.ejb.CategoriaGruppoInventComponentSession;
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.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.ejb.ObbligazioneAbstractComponentSession;
import it.cnr.contab.ordmag.anag00.LuogoConsegnaMagBulk;
import it.cnr.contab.ordmag.anag00.MagazzinoBulk;
import it.cnr.contab.ordmag.anag00.NumerazioneOrdBulk;
import it.cnr.contab.ordmag.anag00.UnitaMisuraBulk;
import it.cnr.contab.ordmag.anag00.UnitaOperativaOrdBulk;
import it.cnr.contab.ordmag.ordini.bp.CRUDOrdineAcqBP;
import it.cnr.contab.ordmag.ordini.bulk.OrdineAcqBulk;
import it.cnr.contab.ordmag.ordini.bulk.OrdineAcqConsegnaBulk;
import it.cnr.contab.ordmag.ordini.bulk.OrdineAcqRigaBulk;
import it.cnr.contab.ordmag.ordini.ejb.OrdineAcqComponentSession;
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.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.util.action.BulkBP;
import it.cnr.jada.util.action.CRUDBP;
public class CRUDOrdineAcqAction extends it.cnr.jada.util.action.CRUDAction {
public CRUDOrdineAcqAction() {
super();
}
///**
// * Gestisce una richiesta di ricerca del searchtool "sospeso"
// *
// * @param context L'ActionContext della richiesta
// * @param doc 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 doBringBackSearchFindUnitaMisura(ActionContext context,
OrdineAcqRigaBulk riga,
UnitaMisuraBulk unitaMisura)
throws java.rmi.RemoteException {
riga.setUnitaMisura(unitaMisura);
((CRUDBP)context.getBusinessProcess()).setDirty(true);
try{
if (unitaMisura!=null && riga.getBeneServizio() != null && riga.getBeneServizio().getUnitaMisura() != null && unitaMisura.getCdUnitaMisura().equals(riga.getBeneServizio().getUnitaMisura().getCdUnitaMisura())) {
riga.setCoefConv(BigDecimal.ONE);
} else {
riga.setCoefConv(null);
}
return context.findDefaultForward();
} catch(Exception e) {
return handleException(context,e);
}
}
public Forward doBringBackSearchFindNumerazioneOrd(ActionContext context,
OrdineAcqBulk ordine,
NumerazioneOrdBulk num)
throws java.rmi.RemoteException {
ordine.setNumerazioneOrd(num);
((CRUDBP)context.getBusinessProcess()).setDirty(true);
try{
if (num!=null) {
ordine.setTiAttivita(num.getTi_istituz_commerc());
ordine.setPercProrata(num.getPercProrata());
}
return context.findDefaultForward();
} catch(Exception e) {
return handleException(context,e);
}
}
public Forward doBlankSearchFind_contratto(ActionContext context, OrdineAcqBulk ordine) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
ordine.setContratto(new ContrattoBulk());
ordine.setResponsabileProcPers(null);
ordine.setCup(null);
ordine.setCig(null);
ordine.setDirettorePers(null);
ordine.setFirmatarioPers(null);
ordine.setProcedureAmministrative(null);
ordine.setTerzoCdr(null);
ordine.setReferenteEsterno(null);
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchFind_contratto(ActionContext context,
OrdineAcqBulk ordine,
ContrattoBulk contratto)
throws java.rmi.RemoteException {
ordine.setContratto(contratto);
((CRUDBP)context.getBusinessProcess()).setDirty(true);
if (contratto != null){
ordine.setResponsabileProcPers(contratto.getResponsabile());
ordine.setCup(contratto.getCup());
ordine.setCig(contratto.getCig());
ordine.setDirettorePers(contratto.getDirettore());
ordine.setFirmatarioPers(contratto.getFirmatario());
ordine.setProcedureAmministrative(contratto.getProcedura_amministrativa());
ordine.setTerzoCdr(contratto.getFigura_giuridica_interna());
ordine.setReferenteEsterno(contratto.getResp_esterno());
if(ordine.getFornitore() == null ||(ordine.getFornitore() != null && ordine.getFornitore().getCd_terzo()==null))
ordine.setFornitore(contratto.getFigura_giuridica_esterna());
doBringBackSearchFindFornitore(context, ordine, contratto.getFigura_giuridica_esterna());
}
return context.findDefaultForward();
}
public Forward doBlankSearchFindBeneServizio(ActionContext context, OrdineAcqRigaBulk riga) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
riga.setBeneServizio(new Bene_servizioBulk());
riga.setUnitaMisura(null);
riga.setCoefConv(null);
riga.setDspTipoConsegna(null);
riga.setTipoConsegnaDefault(null);
riga.setVoceIva(null);
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchFindBeneServizio(ActionContext context,
OrdineAcqRigaBulk riga,
Bene_servizioBulk bene)
throws java.rmi.RemoteException {
riga.setBeneServizio(bene);
((CRUDBP)context.getBusinessProcess()).setDirty(true);
if (bene != null){
riga.setDsBeneServizio(bene.getDs_bene_servizio());
riga.setCdBeneServizio(bene.getCd_bene_servizio());
if (bene.getUnitaMisura() != null){
riga.setUnitaMisura(bene.getUnitaMisura());
riga.setCoefConv(BigDecimal.ONE);
}
if (bene.getTipoGestione() != null){
riga.setDspTipoConsegna(bene.getTipoGestione());
riga.setTipoConsegnaDefault(bene.getTipoGestione());
}
if (bene.getVoce_iva() != null){
riga.setVoceIva(bene.getVoce_iva());
}
}
return context.findDefaultForward();
}
public Forward doBlankSearchFindObbligazioneScadenzario(ActionContext context, OrdineAcqConsegnaBulk cons) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
if (cons.getObbligazioneScadenzario() != null && cons.getObbligazioneScadenzario().getPg_obbligazione() != null ) {
ordine.removeFromOrdineObbligazioniHash(cons);
cons.setObbligazioneScadenzario(new Obbligazione_scadenzarioBulk());
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchFindObbligazioneScadenzario(ActionContext context,
OrdineAcqConsegnaBulk cons,
Obbligazione_scadenzarioBulk obblScad)
throws java.rmi.RemoteException {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
cons.setObbligazioneScadenzario(obblScad);
((CRUDBP)context.getBusinessProcess()).setDirty(true);
if (obblScad != null){
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
ordine.addToOrdineObbligazioniHash(obblScad, cons);
cons.setObbligazioneInseritaSuConsegna(true);
}
return context.findDefaultForward();
}
public Forward doBringBackSearchFindMagazzino(ActionContext context,
OrdineAcqRigaBulk riga,
MagazzinoBulk magazzino)
throws java.rmi.RemoteException {
riga.setDspMagazzino(magazzino);
gestioneConsegnaNonPresente(riga);
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setMagazzino(riga.getDspMagazzino());
consegna.setToBeUpdated();
}
((CRUDBP)context.getBusinessProcess()).setDirty(true);
if (magazzino != null){
riga.setDspLuogoConsegna(magazzino.getLuogoConsegnaMag());
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setLuogoConsegnaMag(riga.getDspLuogoConsegna());
consegna.setToBeUpdated();
}
}
return context.findDefaultForward();
}
public Forward doBringBackSearchFindMagazzino(ActionContext context,
OrdineAcqConsegnaBulk cons,
MagazzinoBulk magazzino)
throws java.rmi.RemoteException {
cons.setMagazzino(magazzino);
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
riga.setDspMagazzino(cons.getMagazzino());
}
((CRUDBP)context.getBusinessProcess()).setDirty(true);
if (magazzino != null){
cons.setLuogoConsegnaMag(magazzino.getLuogoConsegnaMag());
if (riga.getRigheConsegnaColl().size() == 1){
riga.setDspLuogoConsegna(cons.getLuogoConsegnaMag());
}
}
return context.findDefaultForward();
}
public Forward doBlankSearchFindMagazzino(ActionContext context, OrdineAcqRigaBulk riga) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
riga.setDspMagazzino(new MagazzinoBulk());
riga.setDspLuogoConsegna(new LuogoConsegnaMagBulk());
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setMagazzino(riga.getDspMagazzino());
consegna.setLuogoConsegnaMag(riga.getDspLuogoConsegna());
consegna.setToBeUpdated();
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBlankSearchFindMagazzino(ActionContext context, OrdineAcqConsegnaBulk cons) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
cons.setMagazzino(new MagazzinoBulk());
cons.setLuogoConsegnaMag(new LuogoConsegnaMagBulk());
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
riga.setDspMagazzino(cons.getMagazzino());
riga.setDspLuogoConsegna(cons.getLuogoConsegnaMag());
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchFindUnitaOperativaOrdDest(ActionContext context,
OrdineAcqRigaBulk riga,
UnitaOperativaOrdBulk uop)
throws java.rmi.RemoteException {
riga.setDspUopDest(uop);
gestioneConsegnaNonPresente(riga);
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setUnitaOperativaOrd(riga.getDspUopDest());
consegna.setToBeUpdated();
}
((CRUDBP)context.getBusinessProcess()).setDirty(true);
return context.findDefaultForward();
}
public Forward doBringBackSearchFindUnitaOperativaOrdDest(ActionContext context,
OrdineAcqConsegnaBulk cons,
UnitaOperativaOrdBulk uop)
throws java.rmi.RemoteException {
cons.setUnitaOperativaOrd(uop);
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
riga.setDspUopDest(cons.getUnitaOperativaOrd());
}
((CRUDBP)context.getBusinessProcess()).setDirty(true);
return context.findDefaultForward();
}
public Forward doBlankSearchFindUnitaOperativaOrdDest(ActionContext context, OrdineAcqRigaBulk riga) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
riga.setDspUopDest(new UnitaOperativaOrdBulk());
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setUnitaOperativaOrd(riga.getDspUopDest());
consegna.setToBeUpdated();
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBlankSearchFindUnitaOperativaOrdDest(ActionContext context, OrdineAcqConsegnaBulk cons) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
cons.setUnitaOperativaOrd(new UnitaOperativaOrdBulk());
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
riga.setDspUopDest(cons.getUnitaOperativaOrd());
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchFindLuogoConsegnaMag(ActionContext context,
OrdineAcqRigaBulk riga,
LuogoConsegnaMagBulk luogo)
throws java.rmi.RemoteException {
riga.setDspLuogoConsegna(luogo);
gestioneConsegnaNonPresente(riga);
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setLuogoConsegnaMag(riga.getDspLuogoConsegna());
consegna.setToBeUpdated();
}
((CRUDBP)context.getBusinessProcess()).setDirty(true);
return context.findDefaultForward();
}
public Forward doBringBackSearchFindLuogoConsegnaMag(ActionContext context,
OrdineAcqConsegnaBulk cons,
LuogoConsegnaMagBulk luogo)
throws java.rmi.RemoteException {
cons.setLuogoConsegnaMag(luogo);
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
riga.setDspLuogoConsegna(cons.getLuogoConsegnaMag());
}
((CRUDBP)context.getBusinessProcess()).setDirty(true);
return context.findDefaultForward();
}
public Forward doBlankSearchFindLuogoConsegnaMag(ActionContext context, OrdineAcqRigaBulk riga) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
riga.setDspLuogoConsegna(new LuogoConsegnaMagBulk());
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setLuogoConsegnaMag(riga.getDspLuogoConsegna());
consegna.setToBeUpdated();
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBlankSearchFindLuogoConsegnaMag(ActionContext context, OrdineAcqConsegnaBulk cons) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
cons.setLuogoConsegnaMag(new LuogoConsegnaMagBulk());
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
riga.setDspLuogoConsegna(cons.getLuogoConsegnaMag());
}
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBlankSearchFindUnitaOperativaOrd(ActionContext context, OrdineAcqBulk ordine) throws java.rmi.RemoteException {
try {
//imposta i valori di default per il tariffario
ordine.setUnitaOperativaOrd(new UnitaOperativaOrdBulk());
ordine.setNumerazioneOrd(new NumerazioneOrdBulk());
ordine.setTiAttivita(null);
ordine.setPercProrata(null);
return context.findDefaultForward();
} catch (Exception e) {
return handleException(context, e);
}
}
public Forward doBringBackSearchFindUnitaOperativaOrd(ActionContext context,
OrdineAcqBulk ordine,
UnitaOperativaOrdBulk uop)
throws java.rmi.RemoteException {
ordine.setUnitaOperativaOrd(uop);
((CRUDBP)context.getBusinessProcess()).setDirty(true);
if (uop != null){
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
try {
OrdineAcqComponentSession h = (OrdineAcqComponentSession)bp.createComponentSession();
h.completaOrdine(context.getUserContext(), ordine);
try {
bp.setModel(context,ordine);
} catch (BusinessProcessException e) {
}
} catch (BusinessProcessException e) {
return handleException(context,e);
} catch (java.rmi.RemoteException e) {
return handleException(context,e);
} catch (PersistenceException e) {
return handleException(context,e);
} catch (PersistencyException e) {
return handleException(context,e);
} catch (ComponentException e) {
return handleException(context,e);
}
}
// try{
// if (riga.getUnitaMisura()!=null && riga.getUnitaMisura().getCdUnitaMisura()!=null && riga.getBeneServizio() != null && riga.getBeneServizio().getUnitaMisura() != null && riga.getUnitaMisura().getCdUnitaMisura().equals(riga.getBeneServizio().getUnitaMisura().getCdUnitaMisura())) {
// riga.setCoefConv(BigDecimal.ONE);
// } else {
// riga.setCoefConv(null);
// }
// return context.findDefaultForward();
//
// } catch(Exception e) {
// return handleException(context,e);
// }
return context.findDefaultForward();
}
public Forward doTab(ActionContext context,String tabName,String pageName)
{
try
{
fillModel( context );
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
if(ordine == null)
return super.doTab( context, tabName, pageName );
if( bp.isEditable() && !bp.isSearching() && bp.getTab( tabName ).equalsIgnoreCase("tabOrdineAcq"))
{
}
if ("tabOrdineAllegati".equalsIgnoreCase(bp.getTab(tabName))) {
fillModel( context );
}
if ("tabOrdineObbligazioni".equalsIgnoreCase(bp.getTab(tabName))) {
try {
fillModel( context );
if (!bp.isSearching())
controllaQuadraturaObbligazioni(context, ordine);
} catch (it.cnr.jada.comp.ApplicationException e) {
bp.setErrorMessage(e.getMessage());
}
}
return super.doTab( context, tabName, pageName );
}
catch(Throwable e)
{
return handleException(context,e);
}
}
private void controllaQuadraturaObbligazioni(ActionContext context, OrdineAcqBulk ordine)
throws it.cnr.jada.comp.ComponentException {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
try {
OrdineAcqComponentSession h = (OrdineAcqComponentSession)bp.createComponentSession();
h.controllaQuadraturaObbligazioni(context.getUserContext(), ordine);
} catch (PersistencyException e) {
bp.handleException(e);
} catch (java.rmi.RemoteException e) {
bp.handleException(e);
} catch (BusinessProcessException e) {
bp.handleException(e);
}
}
@Override
public Forward doSalva(ActionContext actioncontext) throws RemoteException {
try
{
fillModel(actioncontext);
gestioneSalvataggio(actioncontext);
return actioncontext.findDefaultForward();
}
catch(ValidationException validationexception)
{
getBusinessProcess(actioncontext).setErrorMessage(validationexception.getMessage());
}
catch(Throwable throwable)
{
return handleException(actioncontext, throwable);
}
return actioncontext.findDefaultForward();
}
private void gestioneSalvataggio(ActionContext actioncontext) throws ValidationException, BusinessProcessException {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)actioncontext.getBusinessProcess();
bp.getObbligazioniController().setModelIndex(actioncontext, -1);
getBusinessProcess(actioncontext).save(actioncontext);
postSalvataggio(actioncontext);
}
public Forward doSalvaDefinitivo(ActionContext actioncontext) throws RemoteException {
try
{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(actioncontext);
fillModel(actioncontext);
OrdineAcqBulk ordine = (OrdineAcqBulk) bp.getModel();
if (ordine.isStatoDefinitivo()){
ordine.setStato(OrdineAcqBulk.STATO_DEFINITIVO);
}
if (ordine.isStatoInserito()){
try {
OrdineAcqComponentSession h = (OrdineAcqComponentSession)bp.createComponentSession();
if (h.isUtenteAbilitatoValidazioneOrdine(actioncontext.getUserContext(), ordine)){
// ordine.setStato(OrdineAcqBulk.STATO_INVIATA_ORDINE);
} else {
ordine.setStato(OrdineAcqBulk.STATO_DEFINITIVO);
}
try {
bp.setModel(actioncontext,ordine);
} catch (BusinessProcessException e) {
}
} catch (java.rmi.RemoteException e) {
return handleException(actioncontext,e);
} catch (PersistenceException e) {
return handleException(actioncontext,e);
}
}
gestioneSalvataggio(actioncontext);
return actioncontext.findDefaultForward();
}
catch(ValidationException validationexception)
{
getBusinessProcess(actioncontext).setErrorMessage(validationexception.getMessage());
}
catch(Throwable throwable)
{
return handleException(actioncontext, throwable);
}
return actioncontext.findDefaultForward();
}
protected void postSalvataggio(ActionContext context) throws BusinessProcessException {
CRUDOrdineAcqBP bp= (CRUDOrdineAcqBP) getBusinessProcess(context);
bp.gestionePostSalvataggio(context);
}
public Forward doBringBackSearchFindFornitore(ActionContext context,
OrdineAcqBulk ordine,
TerzoBulk fornitoreTrovato)
throws java.rmi.RemoteException {
try{
if (fornitoreTrovato != null){
ordine.setFornitore(fornitoreTrovato);
ordine.setNome(fornitoreTrovato.getAnagrafico().getNome());
ordine.setCognome(fornitoreTrovato.getAnagrafico().getCognome());
ordine.setRagioneSociale(fornitoreTrovato.getAnagrafico().getRagione_sociale());
ordine.setCodiceFiscale(fornitoreTrovato.getAnagrafico().getCodice_fiscale());
ordine.setPartitaIva(fornitoreTrovato.getAnagrafico().getPartita_iva());
}
return context.findDefaultForward();
} catch(Exception e) {
return handleException(context,e);
}
}
public Forward doFreeSearchFindFornitore(ActionContext context) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
TerzoBulk tb = new TerzoBulk();
tb.setAnagrafico(new AnagraficoBulk());
return freeSearch(context,bp.getFormField("fornitore"),tb);
}
public Forward doBlankSearchFindFornitore(ActionContext context,
OrdineAcqBulk ordine)
throws java.rmi.RemoteException {
try{
TerzoBulk tb = new TerzoBulk();
tb.setAnagrafico(new AnagraficoBulk());
ordine.setFornitore(tb);
ordine.setNome(null);
ordine.setCognome(null);
ordine.setRagioneSociale(null);
ordine.setCodiceFiscale(null);
ordine.setPartitaIva(null);
if (ordine.getContratto() != null && ordine.getContratto().getPg_contratto() != null){
ordine.setContratto(new ContrattoBulk());
doBlankSearchFind_contratto(context, ordine);
}
return context.findDefaultForward();
} catch(Exception e) {
return handleException(context,e);
}
}
public Forward doRicercaObbligazione(ActionContext context) {
try {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
java.util.List models = bp.getRighe().getSelectedModels(context);
Forward forward = context.findDefaultForward();
if (models == null || models.isEmpty())
bp.setErrorMessage("Per procedere, selezionare i dettagli da associare agli impegni!");
else {
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
if (ordine.getFornitore() == null || ordine.getFornitore().getCrudStatus() == it.cnr.jada.bulk.OggettoBulk.UNDEFINED)
throw new it.cnr.jada.comp.ApplicationException("Per eseguire questa operazione è necessario impostare un fornitore!");
controllaSelezionePerContabilizzazione(context, models.iterator());
try{
List lista = recuperoListaCapitoli(context, models.iterator());
forward = basicDoRicercaObbligazione(context, ordine, models, lista);
} catch(ApplicationException e) {
throw new it.cnr.jada.comp.ApplicationException(e.getMessage());
}
}
return forward;
} catch(Throwable e) {
return handleException(context,e);
}
}
protected void controllaSelezionePerContabilizzazione(ActionContext context, java.util.Iterator selectedModels)
throws it.cnr.jada.comp.ApplicationException {
if (selectedModels != null) {
while(selectedModels.hasNext()) {
OrdineAcqRigaBulk rigaSelected = (OrdineAcqRigaBulk)selectedModels.next();
if (rigaSelected.getDspObbligazioneScadenzario() != null && rigaSelected.getDspObbligazioneScadenzario().getEsercizio_originale() != null){
throw new it.cnr.jada.comp.ApplicationException("Il dettaglio \"" + rigaSelected.getRiga() + "\" è già stato associato ad impegno! Modificare la selezione.");
}
if (rigaSelected.getRigheConsegnaColl() != null && !rigaSelected.getRigheConsegnaColl().isEmpty()){
for (Object bulk : rigaSelected.getRigheConsegnaColl()){
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)bulk;
if (cons.getObbligazioneScadenzario() != null && cons.getObbligazioneScadenzario().getEsercizio_originale() != null){
throw new it.cnr.jada.comp.ApplicationException("Il dettaglio \"" + rigaSelected.getRiga() + "\" è già stato associato ad impegno! Modificare la selezione.");
}
}
}
}
}
}
protected java.util.List recuperoListaCapitoli(ActionContext context, java.util.Iterator selectedModels)
throws ComponentException, PersistencyException, IntrospectionException, RemoteException, BusinessProcessException {
if (selectedModels != null) {
java.util.List titoliCapitoli=new ArrayList<>();
java.util.Vector categorieGruppo = new java.util.Vector();
int count = 0;
while(selectedModels.hasNext()) {
count += 1;
OrdineAcqRigaBulk rigaSelected = (OrdineAcqRigaBulk)selectedModels.next();
Bene_servizioBulk beneServizio = rigaSelected.getBeneServizio();
if (beneServizio == null)
throw new it.cnr.jada.comp.ApplicationException("Valorizzare il bene/servizio per il dettaglio " + ((rigaSelected.getRiga() == null) ? "" : "\"" + rigaSelected.getRiga() + "\"") + "! Operazione interrotta.");
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);
for (java.util.Iterator i = ((java.util.Vector)categorieGruppo.clone()).iterator(); i.hasNext();) {
Categoria_gruppo_inventBulk cat = (Categoria_gruppo_inventBulk)i.next();
java.util.List titoliCapitoliCatGrp = h.findAssVoceFList(context.getUserContext(), cat);
if (titoliCapitoliCatGrp == null)
throw new it.cnr.jada.comp.ApplicationException("Alla categoria " + cat.getCd_categoria_gruppo() + "\" non è stato attribuita l'associazione al capitolo di spesa");
if (titoliCapitoli.isEmpty()){
for (java.util.Iterator k = titoliCapitoliCatGrp.iterator(); k.hasNext();) {
Categoria_gruppo_voceBulk assVoce = (Categoria_gruppo_voceBulk)k.next();
titoliCapitoli.add(assVoce.getElemento_voce());
}
}
else
for (java.util.Iterator k = titoliCapitoliCatGrp.iterator(); k.hasNext();) {
Categoria_gruppo_voceBulk assVoce = (Categoria_gruppo_voceBulk)k.next();
if (!it.cnr.jada.bulk.BulkCollections.containsByPrimaryKey(titoliCapitoli, assVoce.getElemento_voce()))
titoliCapitoli.add(assVoce.getElemento_voce());
}
}
if (titoliCapitoli !=null && !titoliCapitoli.isEmpty())
return titoliCapitoli;
}
return null;
}
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;
OrdineAcqRigaBulk rigaSelected = (OrdineAcqRigaBulk)i.next();
java.math.BigDecimal imTotale = (escludiIVA) ?
rigaSelected.getImImponibile() :
rigaSelected.getImTotaleRiga();
importo = importo.add(imTotale);
}
}
importo = importo.setScale(2, java.math.BigDecimal.ROUND_HALF_UP );
return importo;
}
protected java.math.BigDecimal calcolaTotaleObbligazioniAssociate(
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;
OrdineAcqConsegnaBulk consSelected = (OrdineAcqConsegnaBulk)i.next();
java.math.BigDecimal imTotale = (escludiIVA) ?
consSelected.getImImponibile() :
consSelected.getImTotaleConsegna();
importo = importo.add(imTotale);
}
}
importo = importo.setScale(2, java.math.BigDecimal.ROUND_HALF_UP );
return importo;
}
private Forward basicDoRicercaObbligazione(
ActionContext context,
OrdineAcqBulk ordine,
java.util.List models,
java.util.List listaCapitoli) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
try {
Unita_organizzativaBulk uoImpegno = null;
Iterator righeSelezionate = models.iterator();
if (righeSelezionate != null) {
while(righeSelezionate.hasNext()) {
OrdineAcqRigaBulk rigaSelected = (OrdineAcqRigaBulk)righeSelezionate.next();
for (Object consegna : rigaSelected.getRigheConsegnaColl()){
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)consegna;
OrdineAcqComponentSession h = (OrdineAcqComponentSession)bp.createComponentSession();
Unita_organizzativaBulk uo = h.recuperoUoPerImpegno(context.getUserContext(), cons);
if (uoImpegno == null){
uoImpegno = uo;
} else if (!uoImpegno.equalsByPrimaryKey(uo)){
throw new it.cnr.jada.comp.ApplicationException("Selezione non valida. Esistono diverse unità organizzative collegate alle righe selezionate, correggere la selezione.");
}
}
if (uoImpegno == null){
throw new it.cnr.jada.comp.ApplicationException("Selezionare righe con un'unità organizzativa.");
}
}
}
Filtro_ricerca_obbligazioniVBulk filtro = new Filtro_ricerca_obbligazioniVBulk();
filtro.setFornitore(ordine.getFornitore());
filtro.setDs_obbligazione("Ordine");
filtro.setIm_importo(calcolaTotaleSelezionati(models, false));
filtro.setListaVociSelezionabili(listaCapitoli);
filtro.setContratto(ordine.getContratto());
filtro.setCd_unita_organizzativa(uoImpegno.getCd_unita_organizzativa());
if (filtro.getData_scadenziario() == null)
filtro.setFl_data_scadenziario(Boolean.FALSE);
if (models == null || models.isEmpty())
filtro.setFl_importo(Boolean.FALSE);
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);
}
}
protected Forward basicDoBringBackOpenObbligazioniWindow(
ActionContext context,
Obbligazione_scadenzarioBulk newObblig) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
List righeModel = new ArrayList<>();
try {
TerzoBulk creditore = newObblig.getObbligazione().getCreditore();
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
if (!ordine.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 dell'ordine!");
/* Rospuc 15/01/2015 Controllo SOSPESO compatibilità dell'obbligazione con il titolo capitolo selezionato
SOSPESO PER ESERCIZIO 2015 */
java.util.List dettagliDaContabilizzare = (java.util.List)ordine.getObbligazioniHash().get(newObblig);
if (dettagliDaContabilizzare != null && !dettagliDaContabilizzare.isEmpty()) {
for (java.util.Iterator i = dettagliDaContabilizzare.iterator(); i.hasNext();) {
Object rigaObj = i.next();
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)rigaObj;
righeModel.add(cons.getOrdineAcqRiga());
}
List titoloCapitoloValidolist = recuperoListaCapitoli(context, righeModel.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));){
Elemento_voceBulk bulk=(Elemento_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 {
basicDoContabilizzaRiga(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();
}
private void basicDoContabilizzaRiga(
ActionContext context,
Obbligazione_scadenzarioBulk obbligazione,
java.util.List selectedModels)
throws it.cnr.jada.comp.ComponentException {
if (obbligazione != null && selectedModels != null) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
java.util.Vector dettagliDaContabilizzare = new java.util.Vector();
List consegneDaContabilizzare = new ArrayList<>();
if (selectedModels != null && !selectedModels.isEmpty()) {
for (java.util.Iterator i = selectedModels.iterator(); i.hasNext();) {
Object rigaObj = i.next();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)rigaObj;
for (Object bulk : riga.getRigheConsegnaColl()){
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)bulk;
dettagliDaContabilizzare.add(cons);
}
}
}
ObbligazioniTable obbs = ((OrdineAcqBulk)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();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)rigaObj;
if (!titoloCapitoloObbligazione.getFl_inv_beni_patr().equals(riga.getBeneServizio().getFl_gestione_inventario())) {
if (riga.getBeneServizio().getFl_gestione_inventario().booleanValue())
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 = recuperoListaCapitoli(context, selectedModels.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));){
Elemento_voceBulk bulk=(Elemento_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);
}
//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 {
OrdineAcqComponentSession h = (OrdineAcqComponentSession)bp.createComponentSession();
OrdineAcqBulk ordine = h.contabilizzaDettagliSelezionati(
context.getUserContext(),
(OrdineAcqBulk)bp.getModel(),
selectedModels,
obbligazione);
try {
bp.setModel(context,ordine);
bp.setDirty(true);
} catch (BusinessProcessException e) {
}
} catch (java.rmi.RemoteException e) {
bp.handleException(e);
} catch (BusinessProcessException e) {
bp.handleException(e);
}
doCalcolaTotalePerObbligazione(context, obbligazione);
}
}
private void basicDoContabilizzaConsegne(
ActionContext context,
Obbligazione_scadenzarioBulk obbligazione,
java.util.List selectedModels)
throws it.cnr.jada.comp.ComponentException {
java.util.List righeModel = new ArrayList<>();
if (obbligazione != null && selectedModels != null) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
java.util.Vector dettagliDaContabilizzare = new java.util.Vector();
dettagliDaContabilizzare.addAll(selectedModels);
ObbligazioniTable obbs = ((OrdineAcqBulk)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();
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)rigaObj;
righeModel.add(cons.getOrdineAcqRiga());
if (!titoloCapitoloObbligazione.getFl_inv_beni_patr().equals(cons.getOrdineAcqRiga().getBeneServizio().getFl_gestione_inventario())) {
if (cons.getOrdineAcqRiga().getBeneServizio().getFl_gestione_inventario().booleanValue())
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 = recuperoListaCapitoli(context, righeModel.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));){
Elemento_voceBulk bulk=(Elemento_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);
}
//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 {
OrdineAcqComponentSession h = (OrdineAcqComponentSession)bp.createComponentSession();
OrdineAcqBulk ordine = h.contabilizzaConsegneSelezionate(
context.getUserContext(),
(OrdineAcqBulk)bp.getModel(),
selectedModels,
obbligazione);
try {
bp.setModel(context,ordine);
bp.setDirty(true);
} catch (BusinessProcessException e) {
}
} catch (java.rmi.RemoteException e) {
bp.handleException(e);
} catch (BusinessProcessException e) {
bp.handleException(e);
}
doCalcolaTotalePerObbligazione(context, obbligazione);
}
}
public Forward doAddToCRUDMain_Obbligazioni(ActionContext context) {
try {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
bp.getRighe().getSelection().clearSelection();
fillModel(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
if (ordine.getFornitore() == null || ordine.getFornitore().getCrudStatus() == it.cnr.jada.bulk.OggettoBulk.UNDEFINED)
throw new it.cnr.jada.comp.ApplicationException("Per eseguire questa operazione è necessario selezionare un fornitore!");
recuperoListaCapitoli(context, ordine.getRigheOrdineColl().iterator());
return basicDoRicercaObbligazione(context, ordine, null, 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 {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
bp.getRighe().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.getRighe().getElements(); e.hasMoreElements();) {
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)e.nextElement();
if (riga.getDspObbligazioneScadenzario() != null && riga.getDspObbligazioneScadenzario().getEsercizio_originale() != null )
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(OrdineAcqRigaBulk.class),
"righiSet",
"doBringBackAddToCRUDMain_Obbligazioni_DettaglioObbligazioni");
slbp.setMultiSelection(true);
return slbp;
} catch(Throwable e) {
return handleException(context,e);
}
}
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()) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
Obbligazione_scadenzarioBulk obbligazione = (Obbligazione_scadenzarioBulk)bp.getObbligazioniController().getModel();
if (obbligazione != null) {
basicDoContabilizzaRiga(context, obbligazione, selectedModels);
bp.setDirty(true);
}
doCalcolaTotalePerObbligazione(context, obbligazione);
}
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context,e);
}
}
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);
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
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();
}
public Forward doCalcolaTotalePerObbligazione(ActionContext context, Obbligazione_scadenzarioBulk obbligazione) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
if (ordine.getOrdineObbligazioniHash() != null && obbligazione != null) {
try {
ordine.setImportoTotalePerObbligazione(
calcolaTotaleObbligazioniAssociate(
(java.util.List)ordine.getOrdineObbligazioniHash().get(obbligazione),
false));
} catch (it.cnr.jada.comp.ApplicationException e) {
ordine.setImportoTotalePerObbligazione(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP ));
}
} else
ordine.setImportoTotalePerObbligazione(new java.math.BigDecimal(0).setScale(2, java.math.BigDecimal.ROUND_HALF_UP ));
return context.findDefaultForward();
}
public Forward doContabilizza(ActionContext context) {
HookForward caller = (HookForward)context.getCaller();
Obbligazione_scadenzarioBulk obblig = (Obbligazione_scadenzarioBulk)caller.getParameter("obbligazioneSelezionata");
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
java.util.List selectedModels = null;
java.util.List selectedModelsCons = new ArrayList<>();
try {
selectedModels = bp.getRighe().getSelectedModels(context);
bp.getRighe().getSelection().clearSelection();
} catch (Throwable e) {
}
if (selectedModels != null){
for (Object oggetto : selectedModels){
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)oggetto;
for (Object oggettoCons : riga.getRigheConsegnaColl()){
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)oggettoCons;
selectedModelsCons.add(cons);
}
}
}
if (obblig != null) {
try {
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
TerzoBulk creditore = obblig.getObbligazione().getCreditore();
if (!ordine.getFornitore().equalsByPrimaryKey(creditore) &&
!AnagraficoBulk.DIVERSI.equalsIgnoreCase(creditore.getAnagrafico().getTi_entita())) {
((IDocumentoAmministrativoBulk)ordine).addToDocumentiContabiliCancellati(obblig);
throw new it.cnr.jada.comp.ApplicationException("La scadenza selezionata deve appartenere ad un'obbligazione che ha come creditore il fornitore dell'ordine!");
}
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)ordine).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 = ordine.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(selectedModelsCons);
basicDoContabilizzaConsegne(context, obblig, clone);
} else {
obbHash.remove(obbligazione);
basicDoContabilizzaConsegne(context, obblig, selectedModelsCons);
}
} else {
basicDoContabilizzaConsegne(context, obblig, selectedModelsCons);
}
} 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 (!"tabOrdineAcqObbligazioni".equals(bp.getTab("tab")))
bp.setTab("tab", "tabOrdineAcqObbligazioni");
}
return context.findDefaultForward();
}
/**
* 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 {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
fillModel(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
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)ordine.getOrdineObbligazioniHash().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,
ordine.getImportoTotalePerObbligazione(),
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 {
// CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
// OrdineAcqBulk ordine = (OrdineAcqBulk)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 = ordine.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();
//}
/**
* 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
*
* @exception RemoteException
*
*/
public Forward doOnCheckDisponibilitaContrattoFailed( ActionContext context, int option) {
if (option == it.cnr.jada.util.action.OptionBP.OK_BUTTON){
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
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
doSalva(context);
}
catch(Throwable e){
return handleException(context,e);
}
}
return context.findDefaultForward();
}
/**
* 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 {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
fillModel(context);
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.");
if (!viewMode && bp instanceof IDocumentoAmministrativoBP) {
IDocumentoAmministrativoBP docAmmBP = (IDocumentoAmministrativoBP)bp;
viewMode = !docAmmBP.getDocumentoAmministrativoCorrente().isEditable();
viewMode = !((CRUDOrdineAcqBP)docAmmBP).isManualModify();
}
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);
}
}
/**
*
* 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) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)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)((OrdineAcqBulk)bp.getModel()).getOrdineObbligazioniHash().get(obbligazione);
try {
if (models != null && models.isEmpty()) {
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
ordine.getOrdineObbligazioniHash().remove(obbligazione);
ordine.addToDocumentiContabiliCancellati(obbligazione);
} else {
for (java.util.Iterator it = models.iterator(); it.hasNext();) {
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)it.next();
if (cons.getStato() != null && cons.getStato().equals(OrdineAcqConsegnaBulk.STATO_EVASA)){
throw new it.cnr.jada.comp.ApplicationException("Impossibile scollegare l'impegno \"" +
+ obbligazione.getEsercizio_originale().intValue()
+ "/" + obbligazione.getPg_obbligazione().longValue() +
"\" perchè il dettaglio collegato \"" +
cons.getRiga() + "/" + cons.getConsegna() +
"\" è già stato evaso.");
}
}
scollegaDettagliDaObbligazione(context, (java.util.List)models.clone());
}
} catch (it.cnr.jada.comp.ComponentException e) {
return handleException(context, e);
}
doCalcolaTotalePerObbligazione(context, null);
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) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)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();) {
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)i.next();
if (cons.getStato() != null && cons.getStato().equals(OrdineAcqConsegnaBulk.STATO_EVASA)){
throw new it.cnr.jada.comp.ApplicationException("Impossibile scollegare il dettaglio \"" +
cons.getRiga() + "/" + cons.getConsegna() +
"\" perchè esiste una consegna evasa.");
}
}
scollegaDettagliDaObbligazione(context, models);
} catch (it.cnr.jada.comp.ComponentException e) {
return handleException(context, e);
}
doCalcolaTotalePerObbligazione(context, (Obbligazione_scadenzarioBulk)bp.getObbligazioniController().getModel());
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
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();
}
/**
*
* Gestisce una richiesta di selezione dal controller "obbligazioni"
*
* @param context L'ActionContext della richiesta
* @return Il Forward alla pagina di risposta
*/
/**
* 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);
// }
//}
//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);
// }
// }
/**
* 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 {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
java.util.Vector models = ((java.util.Vector)ordine.getOrdineObbligazioniHash().get(oldObblig));
java.util.Vector clone = (java.util.Vector)models.clone();
if (!clone.isEmpty())
scollegaDettagliDaObbligazione(context, clone);
else
ordine.getOrdineObbligazioniHash().remove(oldObblig);
basicDoContabilizzaConsegne(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) {
for (java.util.Iterator i = models.iterator(); i.hasNext();) {
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)i.next();
// if (riga.isConsegnaEvasa())
// 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) + "\".");
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
ordine.removeFromOrdineObbligazioniHash(cons);
cons.getOrdineAcqRiga().setDspObbligazioneScadenzario(null);
cons.getOrdineAcqRiga().setToBeUpdated();
cons.setObbligazioneScadenzario(null);
cons.setToBeUpdated();
}
// } catch (it.cnr.jada.comp.ApplicationException e) {
// try {
// CRUDVirtualObbligazioneBP.rollbackToSafePoint(context);
// } catch (Throwable t) {
// throw new ComponentException(t);
// }
// throw e;
// }
}
}
public Forward doOnImportoChange(ActionContext context) {
try{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
calcolaTotaleOrdine(context, ordine);
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context, e);
}
}
private void calcolaTotaleOrdine(ActionContext context, OrdineAcqBulk ordine)
throws BusinessProcessException, RemoteException, PersistencyException {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
OrdineAcqComponentSession h = (OrdineAcqComponentSession)bp.createComponentSession();
try {
OrdineAcqBulk ordineAggiornato = h.calcolaImportoOrdine(context.getUserContext(), ordine);
ordine.setImImponibile(ordine.getImImponibile());
ordine.setImIva(ordine.getImIva());
ordine.setImIvaD(ordine.getImIvaD());
ordine.setImTotaleOrdine(ordine.getImTotaleOrdine());
for (java.util.Iterator i = ordine.getRigheOrdineColl().iterator(); i.hasNext();) {
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)i.next();
for (java.util.Iterator k = ordineAggiornato.getRigheOrdineColl().iterator(); k.hasNext();) {
OrdineAcqRigaBulk rigaAggiornata = (OrdineAcqRigaBulk)k.next();
if (riga.equalsByPrimaryKey(rigaAggiornata)){
riga.setImImponibile(rigaAggiornata.getImImponibile());
riga.setImImponibileDivisa(rigaAggiornata.getImImponibileDivisa());
riga.setImIva(rigaAggiornata.getImIva());
riga.setImIvaD(rigaAggiornata.getImIvaD());
riga.setImIvaDivisa(rigaAggiornata.getImIvaDivisa());
riga.setImIvaNd(rigaAggiornata.getImIvaNd());
riga.setImTotaleRiga(rigaAggiornata.getImTotaleRiga());
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
for (java.util.Iterator x = rigaAggiornata.getRigheConsegnaColl().iterator(); x.hasNext();) {
OrdineAcqConsegnaBulk consegnaAggiornata = (OrdineAcqConsegnaBulk)x.next();
if (consegna.equalsByPrimaryKey(consegnaAggiornata)){
consegna.setImImponibile(consegnaAggiornata.getImImponibile());
consegna.setImImponibileDivisa(consegnaAggiornata.getImImponibileDivisa());
consegna.setImIva(consegnaAggiornata.getImIva());
consegna.setImIvaD(consegnaAggiornata.getImIvaD());
consegna.setImIvaDivisa(consegnaAggiornata.getImIvaDivisa());
consegna.setImIvaNd(consegnaAggiornata.getImIvaNd());
consegna.setImTotaleConsegna(consegnaAggiornata.getImTotaleConsegna());
break;
}
}
}
break;
}
}
}
aggiornaObbligazioni(context);
} catch (ComponentException e) {
}
}
public Forward doOnDspQuantitaChange(ActionContext context) {
try{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
gestioneConsegnaNonPresente(riga);
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setQuantita(riga.getDspQuantita());
consegna.setToBeUpdated();
}
calcolaTotaleOrdine(context, ordine);
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context, e);
}
}
private OrdineAcqRigaBulk gestioneConsegnaNonPresente(OrdineAcqRigaBulk riga) {
if (riga.getRigheConsegnaColl() == null || riga.getRigheConsegnaColl().isEmpty()){
OrdineAcqConsegnaBulk consegna = new OrdineAcqConsegnaBulk();
consegna.inizializzaConsegnaNuovaRiga();
consegna.setRiga(riga.getRiga());
consegna.setTipoConsegna(riga.getDspTipoConsegna());
consegna.setDtPrevConsegna(riga.getDspDtPrevConsegna());
riga.addToRigheConsegnaColl(consegna);
}
return riga;
}
public Forward doOnDspTipoConsegnaChange(ActionContext context) {
try{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
gestioneConsegnaNonPresente(riga);
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setTipoConsegna(riga.getDspTipoConsegna());
consegna.setToBeUpdated();
}
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context, e);
}
}
public Forward doOnDspDtPrevConsegnaChange(ActionContext context) {
try{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
gestioneConsegnaNonPresente(riga);
for (java.util.Iterator j = riga.getRigheConsegnaColl().iterator(); j.hasNext();) {
OrdineAcqConsegnaBulk consegna = (OrdineAcqConsegnaBulk)j.next();
consegna.setDtPrevConsegna(riga.getDspDtPrevConsegna());
consegna.setToBeUpdated();
}
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context, e);
}
}
public Forward doOnQuantitaChange(ActionContext context) {
try{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)bp.getConsegne().getModel();
riga.setDspQuantita(cons.getQuantita());
riga.setToBeUpdated();
}
calcolaTotaleOrdine(context, ordine);
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context, e);
}
}
public Forward doOnTipoConsegnaChange(ActionContext context) {
try{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)bp.getConsegne().getModel();
riga.setDspTipoConsegna(cons.getTipoConsegna());
riga.setToBeUpdated();
}
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context, e);
}
}
public Forward doOnDtPrevConsegnaChange(ActionContext context) {
try{
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)getBusinessProcess(context);
fillModel(context);
OrdineAcqRigaBulk riga = (OrdineAcqRigaBulk)bp.getRighe().getModel();
if (riga.getRigheConsegnaColl().size() == 1){
OrdineAcqConsegnaBulk cons = (OrdineAcqConsegnaBulk)bp.getConsegne().getModel();
riga.setDspDtPrevConsegna(cons.getDtPrevConsegna());
riga.setToBeUpdated();
}
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context, e);
}
}
public Forward aggiornaObbligazioni(ActionContext context) {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
try {
bp.getObbligazioniController().setSelection(context);
} catch (Throwable e) {
return handleException(context, e);
}
doCalcolaTotalePerObbligazione(context, (Obbligazione_scadenzarioBulk)bp.getObbligazioniController().getModel());
return context.findDefaultForward();
}
public Forward doRemoveFromCRUDMain_Righe(ActionContext context) {
try {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
bp.getRighe().remove(context);
calcolaTotaleOrdine(context, ordine);
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doRemoveFromCRUDMain_Righe_Consegne(ActionContext context) {
try {
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
bp.getConsegne().remove(context);
calcolaTotaleOrdine(context, ordine);
return context.findDefaultForward();
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doVisualizzaContratto(ActionContext context) {
try {
fillModel(context);
CRUDOrdineAcqBP bp = (CRUDOrdineAcqBP)context.getBusinessProcess();
OrdineAcqBulk ordine = (OrdineAcqBulk)bp.getModel();
if (ordine == null || ordine.getContratto() == null || ordine.getContratto().getPg_contratto() == null)
throw new it.cnr.jada.comp.ApplicationException("Non esiste alcun Contratto da visualizzare!");
context.addHookForward("bringback",this,"doBringBackVisualizzaContratto");
CRUDConfigAnagContrattoBP contrattoBP = (CRUDConfigAnagContrattoBP)context.createBusinessProcess(
"CRUDConfigAnagContrattoBP",
new Object[] { "V" , ordine.getContratto(), "V" });
try {
contrattoBP.setEditable(false);
} catch (Throwable t) {
throw t;
}
return context.addBusinessProcess(contrattoBP);
} catch(Throwable e) {
return handleException(context,e);
}
}
public Forward doBringBackVisualizzaContratto(ActionContext context) {
return context.findDefaultForward();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy