Patch level : 10.0 276
Files correlati : pa0.exe Ricompilazione Demo : [ ] Commento : Corretto il totale riga con lo sconto, l'aliquota di default per le righe ela codifica della natura del codice IVA git-svn-id: svn://10.65.10.50/branches/R_10_00@23211 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									24ed90d54e
								
							
						
					
					
						commit
						0b44cc293a
					
				@ -22,6 +22,7 @@
 | 
			
		||||
#include <cfven.h>
 | 
			
		||||
#include <nditte.h>
 | 
			
		||||
#include <unloc.h>
 | 
			
		||||
#include <causali.h>
 | 
			
		||||
#include "../cg/cfban.h"
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
@ -670,7 +671,9 @@ protected:
 | 
			
		||||
 | 
			
		||||
  void log(int severity, const char* msg);
 | 
			
		||||
  bool show_log();
 | 
			
		||||
  void set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const;
 | 
			
		||||
	const char * natura(const TString& tipo, const int tipo_acquisti, const int regspiva) const;
 | 
			
		||||
	void set_IVA(const TString& codiva, const int regspiva, TPaf_record& paf) const;
 | 
			
		||||
  void set_IVA(const TRiga_documento& rdoc, const int regspiva, TPaf_record& paf) const;
 | 
			
		||||
 | 
			
		||||
  bool elabora(TDocumentoEsteso& doc);
 | 
			
		||||
  bool elabora(const TRectype& rec);
 | 
			
		||||
@ -878,18 +881,65 @@ bool TDoc2Paf::show_log()
 | 
			
		||||
  return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TDoc2Paf::set_IVA(const TRiga_documento& rdoc, TPaf_record& paf) const
 | 
			
		||||
 | 
			
		||||
const char * TDoc2Paf::natura(const TString& tipo, const int tipo_acquisti, const int regspiva) const
 | 
			
		||||
{
 | 
			
		||||
  const TRectype& ai = cache().get("%IVA", rdoc.get(RDOC_CODIVA));
 | 
			
		||||
	TString & natura = get_tmp_string(4);
 | 
			
		||||
	
 | 
			
		||||
// N1 escluse ex art 15
 | 
			
		||||
	if (tipo_acquisti == 5)
 | 
			
		||||
		natura = "N5";							// regime del margine
 | 
			
		||||
	else
 | 
			
		||||
		if (regspiva >12 && regspiva < 52)
 | 
			
		||||
			natura = "N6";            // Inversione contabile (REVERSE CHARGE)
 | 
			
		||||
	else
 | 
			
		||||
		if (tipo == "NS")
 | 
			
		||||
			natura = "N2";            // Non soggetto
 | 
			
		||||
		else
 | 
			
		||||
			if (tipo == "NI")
 | 
			
		||||
				natura = "N3";          // Non imponibile
 | 
			
		||||
			else
 | 
			
		||||
				if (tipo == "ES")
 | 
			
		||||
					natura = "N4";        // Esente
 | 
			
		||||
	return natura;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TDoc2Paf::set_IVA(const TString& codiva, const int regspiva, TPaf_record& paf) const
 | 
			
		||||
{
 | 
			
		||||
  const TRectype& ai = cache().get("%IVA", codiva);
 | 
			
		||||
  const real aliquota = ai.get("R0");
 | 
			
		||||
  paf.set("PI_ALIQUOTAIVA", aliquota);
 | 
			
		||||
	if (codiva.full())
 | 
			
		||||
  {
 | 
			
		||||
		if (aliquota.is_zero())
 | 
			
		||||
		{
 | 
			
		||||
			const TString& tipo = ai.get("S1");
 | 
			
		||||
    const char* natura = "N2";             // Non soggetto
 | 
			
		||||
    if (tipo == "NI") natura = "N3"; else  // Non imponibile
 | 
			
		||||
    if (tipo == "ES") natura = "N4";       // Esente
 | 
			
		||||
    paf.set("PI_NATURA", natura);
 | 
			
		||||
			const int tipo_acquisti = ai.get_int("S8");
 | 
			
		||||
 | 
			
		||||
			paf.set("PI_NATURA", natura(tipo, tipo_acquisti, regspiva));
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
			paf.set("PI_NATURA", "");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TDoc2Paf::set_IVA(const TRiga_documento& rdoc, const int regspiva, TPaf_record& paf) const
 | 
			
		||||
{
 | 
			
		||||
	const TString8 codiva(rdoc.get(RDOC_CODIVA));
 | 
			
		||||
  const TRectype& ai = cache().get("%IVA", codiva);
 | 
			
		||||
  const real aliquota = ai.get("R0");
 | 
			
		||||
  paf.set("PI_ALIQUOTAIVA", aliquota);
 | 
			
		||||
	if (codiva.full())
 | 
			
		||||
  {
 | 
			
		||||
		if (aliquota.is_zero())
 | 
			
		||||
		{
 | 
			
		||||
			const TString& tipo = ai.get("S1");
 | 
			
		||||
			const int tipo_acquisti = ai.get_int("S8");
 | 
			
		||||
 | 
			
		||||
			paf.set("PI_NATURA", natura(tipo, tipo_acquisti, regspiva));
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
			paf.set("PI_NATURA", "");
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -904,6 +954,8 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
			
		||||
 | 
			
		||||
  const TFirm& firm = prefix().firm();
 | 
			
		||||
  const char* const paese = "IT";
 | 
			
		||||
	TCausale caus = TCausale(doc.tipo().causale(), doc.anno());
 | 
			
		||||
	const int regspiva = caus.regime_speciale();
 | 
			
		||||
 | 
			
		||||
  // <DatiTrassmissione>
 | 
			
		||||
  TPaf_record paf0100f("PAF0100F");
 | 
			
		||||
@ -1206,6 +1258,15 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
			
		||||
  paf2000f.remove(); // Cancella tutti gli sconti di riga
 | 
			
		||||
 | 
			
		||||
  long riga = 0;
 | 
			
		||||
	TString16 codivadefault;
 | 
			
		||||
	{
 | 
			
		||||
		FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc) 
 | 
			
		||||
		{
 | 
			
		||||
			codivadefault = rdoc->get(RDOC_CODIVA);
 | 
			
		||||
			if (codivadefault.full())
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
  FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc) 
 | 
			
		||||
  {
 | 
			
		||||
    paf1800f.reset();
 | 
			
		||||
@ -1213,7 +1274,11 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
			
		||||
    paf1800f.set("PI_KEYBODYFATT",   bfatt);
 | 
			
		||||
    paf1800f.set("PI_NUMEROLINEA",   ++riga);
 | 
			
		||||
    paf1800f.set("PI_DESCRIZIONE",   descrizione(*rdoc));
 | 
			
		||||
    paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
 | 
			
		||||
//    paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
    set_IVA(codivadefault, regspiva, paf1800f);
 | 
			
		||||
 | 
			
		||||
    if (rdoc->is_merce())
 | 
			
		||||
    {
 | 
			
		||||
      paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA)); 
 | 
			
		||||
@ -1231,10 +1296,10 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
			
		||||
	    else
 | 
			
		||||
		  {
 | 
			
		||||
	      paf1800f.set("PI_QUANTITA",    -qta);
 | 
			
		||||
        paf1800f.set("PI_PREZZOUNIT",  -rdoc->prezzo(false, false));
 | 
			
		||||
				paf1800f.set("PI_PREZZOUNIT",  -rdoc->prezzo(true, false));
 | 
			
		||||
      }
 | 
			
		||||
      paf1800f.set("PI_PRZTOTALE",   rdoc->importo(false, false));
 | 
			
		||||
      set_IVA(*rdoc, paf1800f);
 | 
			
		||||
      paf1800f.set("PI_PRZTOTALE",   rdoc->importo(true, false));
 | 
			
		||||
      set_IVA(*rdoc, regspiva, paf1800f);
 | 
			
		||||
 | 
			
		||||
      /*
 | 
			
		||||
      const TDate data = doc.get(DOC_DATADOC);
 | 
			
		||||
@ -1333,7 +1398,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
			
		||||
      }
 | 
			
		||||
      paf1800f.set("PI_PREZZOUNIT",  prz);
 | 
			
		||||
      paf1800f.set("PI_PRZTOTALE",   imp);
 | 
			
		||||
      set_IVA(*rdoc, paf1800f);
 | 
			
		||||
      set_IVA(*rdoc, regspiva, paf1800f);
 | 
			
		||||
    } else
 | 
			
		||||
    if (rdoc->is_prestazione())
 | 
			
		||||
    {
 | 
			
		||||
@ -1342,7 +1407,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
			
		||||
      paf1800f.set("PI_QUANTITA",    qta);
 | 
			
		||||
      paf1800f.set("PI_PREZZOUNIT",  rdoc->prezzo(false, false));
 | 
			
		||||
      paf1800f.set("PI_PRZTOTALE",   rdoc->importo(true, false));
 | 
			
		||||
      set_IVA(*rdoc, paf1800f);
 | 
			
		||||
      set_IVA(*rdoc, regspiva, paf1800f);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    paf1800f.set("PI_GESTIONE", "D");
 | 
			
		||||
@ -1373,10 +1438,10 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
			
		||||
    if (aliquota.is_zero())
 | 
			
		||||
    {
 | 
			
		||||
      const TString& tipo = riva.cod_iva().tipo();
 | 
			
		||||
      const char* natura = "N2";            // Non soggetto
 | 
			
		||||
      if (tipo == "NI") natura = "N3"; else // Non imponibile
 | 
			
		||||
      if (tipo == "ES") natura = "N4";      // Esente
 | 
			
		||||
      paf2200f.set("PL_NATURA", natura);
 | 
			
		||||
			const int tipo_acquisti = riva.cod_iva().get_int("S8");
 | 
			
		||||
    
 | 
			
		||||
      paf2200f.set("PL_NATURA", natura(tipo, tipo_acquisti, regspiva));
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    paf2200f.set("PL_IMPONIBILE",   riva.imponibile());
 | 
			
		||||
    paf2200f.set("PL_IMPOSTA",      riva.imposta());
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user