193 lines
7.6 KiB
Java
193 lines
7.6 KiB
Java
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<String, RiepilogoIvaItem> ri;
|
|
|
|
private Hashtable<String, RiepilogoIvaItem> riConPI;
|
|
|
|
private Hashtable<String, RiepilogoIvaItem> 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<RiepilogoIvaItem> elements() {
|
|
return getRi().elements();
|
|
}
|
|
|
|
public Enumeration<RiepilogoIvaItem> elementsSenzaPI() {
|
|
return getRiSenzaPI().elements();
|
|
}
|
|
|
|
public Enumeration<RiepilogoIvaItem> elementsConPI() {
|
|
return getRiConPI().elements();
|
|
}
|
|
|
|
public RiepilogoIva() {}
|
|
|
|
public RiepilogoIva(ApplParmFull theAp) {
|
|
setAp(theAp);
|
|
}
|
|
|
|
private Hashtable<String, RiepilogoIvaItem> getRi() {
|
|
if (this.ri == null)
|
|
this.ri = new Hashtable<>();
|
|
return this.ri;
|
|
}
|
|
|
|
private Hashtable<String, RiepilogoIvaItem> getRiConPI() {
|
|
if (this.riConPI == null)
|
|
this.riConPI = new Hashtable<>();
|
|
return this.riConPI;
|
|
}
|
|
|
|
private Hashtable<String, RiepilogoIvaItem> 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<String, RiepilogoIvaItem> 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;
|
|
}
|
|
}
|