package it.acxent.contab.iva; import it.acxent.anag.Iva; import it.acxent.anag.IvaInterface; import it.acxent.contab.RigaDocumentoInterface; import it.acxent.db.ApplParmFull; import java.util.Enumeration; import java.util.Hashtable; public class RiepilogoIva { private Hashtable ri; private Hashtable riConPI; private Hashtable riSenzaPI; private ApplParmFull ap; private Iva ivaEsente; private Iva ivaStdVendite; private void addFatturaConPi(IvaInterface l_iva, double imponibile, double imposta, double costo, boolean isSplit) { addFattura(l_iva, imponibile, imposta, costo, 0.0D, 0.0D, getRiConPI(), isSplit); } private void addFatturaConPi(Iva l_iva, double imponibile, double imposta, double costo, double speseAccessorie, double arrotondamento, boolean isSplit) { addFattura(l_iva, imponibile, imposta, costo, speseAccessorie, arrotondamento, getRiConPI(), isSplit); } private void addNotaDiCreditoConPI(IvaInterface l_iva, double imponibile, double imposta, double costo, boolean isSplit) { addFattura(l_iva, -imponibile, -imposta, costo, 0.0D, 0.0D, getRiConPI(), isSplit); } private void addNotaDiCreditoConPI(Iva l_iva, double imponibile, double imposta, double costo, double speseAccessorie, double arrotondamento, boolean isSplit) { addFattura(l_iva, -imponibile, -imposta, costo, speseAccessorie, arrotondamento, getRiConPI(), isSplit); } public Enumeration elements() { return getRi().elements(); } public Enumeration elementsSenzaPI() { return getRiSenzaPI().elements(); } public Enumeration elementsConPI() { return getRiConPI().elements(); } public RiepilogoIva() {} public RiepilogoIva(ApplParmFull theAp) { setAp(theAp); } private Hashtable getRi() { if (this.ri == null) this.ri = new Hashtable<>(); return this.ri; } private Hashtable getRiConPI() { if (this.riConPI == null) this.riConPI = new Hashtable<>(); return this.riConPI; } private Hashtable getRiSenzaPI() { if (this.riSenzaPI == null) this.riSenzaPI = new Hashtable<>(); return this.riSenzaPI; } private void addFattura(IvaInterface l_iva, double imponibile, double imposta, double costo, boolean isSplit) { addFattura(l_iva, imponibile, imposta, costo, 0.0D, 0.0D, isSplit); } private void addFattura(IvaInterface l_iva, double imponibile, double imposta, double costo, double speseAccessorie, double arrotondamento, boolean isSplit) { addFattura(l_iva, imponibile, imposta, costo, speseAccessorie, arrotondamento, getRi(), isSplit); } private void addFattura(IvaInterface l_iva, double imponibile, double imposta, double costo, double speseAccessorie, double arrotondamento, Hashtable RI, boolean isSplit) { RiepilogoIvaItem rii; String theKey = String.valueOf(l_iva.getId_iva()); if (RI.containsKey(theKey)) { rii = RI.get(theKey); } else { rii = new RiepilogoIvaItem(l_iva); } rii.addImporto(imponibile, imposta, isSplit); RI.put(theKey, rii); } private void addNotaDiCredito(IvaInterface l_iva, double imponibile, double imposta, double costo, boolean isSplit) { addFattura(l_iva, -imponibile, -imposta, costo, 0.0D, 0.0D, getRi(), isSplit); } private void addNotaDiCredito(Iva l_iva, double imponibile, double imposta, double costo, double speseAccessorie, double arrotondamento, boolean isSplit) { addFattura(l_iva, -imponibile, -imposta, costo, speseAccessorie, arrotondamento, getRi(), isSplit); } private void addFatturaSenzaPi(IvaInterface l_iva, double imponibile, double imposta, double costo, boolean isSplit) { addFattura(l_iva, imponibile, imposta, costo, 0.0D, 0.0D, getRiSenzaPI(), isSplit); } private void addFatturaSenzaPi(Iva l_iva, double imponibile, double imposta, double costo, double speseAccessorie, double arrotondamento, boolean isSplit) { addFattura(l_iva, imponibile, imposta, costo, speseAccessorie, arrotondamento, getRiSenzaPI(), isSplit); } private void addNotaDiCreditoSenzaPI(IvaInterface l_iva, double imponibile, double imposta, double costo, boolean isSplit) { addFattura(l_iva, -imponibile, -imposta, costo, 0.0D, 0.0D, getRiSenzaPI(), isSplit); } private void addNotaDiCreditoSenzaPI(Iva l_iva, double imponibile, double imposta, double costo, double speseAccessorie, double arrotondamento, boolean isSplit) { addFattura(l_iva, -imponibile, -imposta, costo, speseAccessorie, arrotondamento, getRiSenzaPI(), isSplit); } public void addRigaDocumento(IvaInterface l_iva, double imponibile, double imposta, boolean isNotaDiCredito, boolean isPartitaIva, boolean isSplit) { if (!isNotaDiCredito) { addFattura(l_iva, imponibile, imposta, 0.0D, isSplit); } else { addNotaDiCredito(l_iva, imponibile, imposta, 0.0D, isSplit); } if (!isPartitaIva) { if (!isNotaDiCredito) { addFatturaSenzaPi(l_iva, imponibile, imposta, 0.0D, isSplit); } else { addNotaDiCreditoSenzaPI(l_iva, imponibile, imposta, 0.0D, isSplit); } } else if (!isNotaDiCredito) { addFatturaConPi(l_iva, imponibile, imposta, 0.0D, isSplit); } else { addNotaDiCreditoConPI(l_iva, imponibile, imposta, 0.0D, isSplit); } } public void addRigaRegistroIvaItem(RigaRegistroIvaItem rrii, boolean isNotaDiCredito, boolean isPartitaIva, boolean isSplit) { addRigaDocumento(rrii.getIva(), rrii.getImponibile(), rrii.getImportoIva(), isNotaDiCredito, isPartitaIva, isSplit); } private void addRigaDocumento(RigaDocumentoInterface rigaDocumento, boolean isSplit) { double imponibile, iva; if (!rigaDocumento.getIva().isRegimeMargine()) { imponibile = rigaDocumento.getRDITotImponibile(); iva = rigaDocumento.getRDITotImposta(); } else { imponibile = rigaDocumento.getRDITotImponibileRM(); iva = 0.0D; } String codIva = rigaDocumento.getIva().getDescrizione(); if (!rigaDocumento.isRDINotaCredito()) { addFattura(rigaDocumento.getIva(), imponibile, iva, rigaDocumento.getRDITotCosto(), isSplit); } else { addNotaDiCredito(rigaDocumento.getIva(), imponibile, iva, rigaDocumento.getRDITotCosto(), isSplit); } if (!rigaDocumento.isRDIPIva()) { if (!rigaDocumento.isRDINotaCredito()) { addFatturaSenzaPi(rigaDocumento.getIva(), imponibile, iva, rigaDocumento.getRDITotCosto(), isSplit); } else { addNotaDiCreditoSenzaPI(rigaDocumento.getIva(), imponibile, iva, rigaDocumento.getRDITotCosto(), isSplit); } } else if (!rigaDocumento.isRDINotaCredito()) { addFatturaConPi(rigaDocumento.getIva(), imponibile, iva, rigaDocumento.getRDITotCosto(), isSplit); } else { addNotaDiCreditoConPI(rigaDocumento.getIva(), imponibile, iva, rigaDocumento.getRDITotCosto(), isSplit); } } private ApplParmFull getApFull() { return this.ap; } private Iva getIvaEsente() { if (this.ivaEsente == null) { this.ivaEsente = new Iva(getApFull()); this.ivaEsente.findByPrimaryKey(getApFull().getParm("CODICE_IVA_ESENTE").getNumeroLong()); } return this.ivaEsente; } private Iva getIvaStdVendite() { if (this.ivaStdVendite == null) { this.ivaStdVendite = new Iva(getApFull()); this.ivaStdVendite.findByPrimaryKey(getApFull().getParm("CODICE_IVA_STD_VEND").getNumeroLong()); } return this.ivaStdVendite; } private void setAp(ApplParmFull ap) { this.ap = ap; } }