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
					
				
							
								
								
									
										113
									
								
								pa/pa0100.cpp
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								pa/pa0100.cpp
									
									
									
									
									
								
							@ -22,6 +22,7 @@
 | 
				
			|||||||
#include <cfven.h>
 | 
					#include <cfven.h>
 | 
				
			||||||
#include <nditte.h>
 | 
					#include <nditte.h>
 | 
				
			||||||
#include <unloc.h>
 | 
					#include <unloc.h>
 | 
				
			||||||
 | 
					#include <causali.h>
 | 
				
			||||||
#include "../cg/cfban.h"
 | 
					#include "../cg/cfban.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/////////////////////////////////////////////////////////////////////////////////////
 | 
					/////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
@ -670,7 +671,9 @@ protected:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  void log(int severity, const char* msg);
 | 
					  void log(int severity, const char* msg);
 | 
				
			||||||
  bool show_log();
 | 
					  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(TDocumentoEsteso& doc);
 | 
				
			||||||
  bool elabora(const TRectype& rec);
 | 
					  bool elabora(const TRectype& rec);
 | 
				
			||||||
@ -878,19 +881,66 @@ bool TDoc2Paf::show_log()
 | 
				
			|||||||
  return ok;
 | 
					  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");
 | 
					  const real aliquota = ai.get("R0");
 | 
				
			||||||
  paf.set("PI_ALIQUOTAIVA", aliquota);
 | 
					  paf.set("PI_ALIQUOTAIVA", aliquota);
 | 
				
			||||||
  if (aliquota.is_zero())
 | 
						if (codiva.full())
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    const TString& tipo = ai.get("S1");
 | 
							if (aliquota.is_zero())
 | 
				
			||||||
    const char* natura = "N2";             // Non soggetto
 | 
							{
 | 
				
			||||||
    if (tipo == "NI") natura = "N3"; else  // Non imponibile
 | 
								const TString& tipo = ai.get("S1");
 | 
				
			||||||
    if (tipo == "ES") natura = "N4";       // Esente
 | 
								const int tipo_acquisti = ai.get_int("S8");
 | 
				
			||||||
    paf.set("PI_NATURA", natura);
 | 
					
 | 
				
			||||||
  }
 | 
								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 TFirm& firm = prefix().firm();
 | 
				
			||||||
  const char* const paese = "IT";
 | 
					  const char* const paese = "IT";
 | 
				
			||||||
 | 
						TCausale caus = TCausale(doc.tipo().causale(), doc.anno());
 | 
				
			||||||
 | 
						const int regspiva = caus.regime_speciale();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // <DatiTrassmissione>
 | 
					  // <DatiTrassmissione>
 | 
				
			||||||
  TPaf_record paf0100f("PAF0100F");
 | 
					  TPaf_record paf0100f("PAF0100F");
 | 
				
			||||||
@ -1206,6 +1258,15 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
				
			|||||||
  paf2000f.remove(); // Cancella tutti gli sconti di riga
 | 
					  paf2000f.remove(); // Cancella tutti gli sconti di riga
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  long riga = 0;
 | 
					  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) 
 | 
					  FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc) 
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    paf1800f.reset();
 | 
					    paf1800f.reset();
 | 
				
			||||||
@ -1213,10 +1274,14 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
				
			|||||||
    paf1800f.set("PI_KEYBODYFATT",   bfatt);
 | 
					    paf1800f.set("PI_KEYBODYFATT",   bfatt);
 | 
				
			||||||
    paf1800f.set("PI_NUMEROLINEA",   ++riga);
 | 
					    paf1800f.set("PI_NUMEROLINEA",   ++riga);
 | 
				
			||||||
    paf1800f.set("PI_DESCRIZIONE",   descrizione(*rdoc));
 | 
					    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())
 | 
					    if (rdoc->is_merce())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
 | 
					      paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA)); 
 | 
				
			||||||
      const real qta = rdoc->get(RDOC_QTA);
 | 
					      const real qta = rdoc->get(RDOC_QTA);
 | 
				
			||||||
      if (qta.is_zero())
 | 
					      if (qta.is_zero())
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -1228,13 +1293,13 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
				
			|||||||
        paf1800f.set("PI_QUANTITA",    qta);
 | 
					        paf1800f.set("PI_QUANTITA",    qta);
 | 
				
			||||||
        paf1800f.set("PI_PREZZOUNIT",  rdoc->prezzo(false, false));
 | 
					        paf1800f.set("PI_PREZZOUNIT",  rdoc->prezzo(false, false));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
						    else
 | 
				
			||||||
      {
 | 
							  {
 | 
				
			||||||
        paf1800f.set("PI_QUANTITA",    -qta);
 | 
						      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));
 | 
					      paf1800f.set("PI_PRZTOTALE",   rdoc->importo(true, false));
 | 
				
			||||||
      set_IVA(*rdoc, paf1800f);
 | 
					      set_IVA(*rdoc, regspiva, paf1800f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /*
 | 
					      /*
 | 
				
			||||||
      const TDate data = doc.get(DOC_DATADOC);
 | 
					      const TDate data = doc.get(DOC_DATADOC);
 | 
				
			||||||
@ -1333,7 +1398,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      paf1800f.set("PI_PREZZOUNIT",  prz);
 | 
					      paf1800f.set("PI_PREZZOUNIT",  prz);
 | 
				
			||||||
      paf1800f.set("PI_PRZTOTALE",   imp);
 | 
					      paf1800f.set("PI_PRZTOTALE",   imp);
 | 
				
			||||||
      set_IVA(*rdoc, paf1800f);
 | 
					      set_IVA(*rdoc, regspiva, paf1800f);
 | 
				
			||||||
    } else
 | 
					    } else
 | 
				
			||||||
    if (rdoc->is_prestazione())
 | 
					    if (rdoc->is_prestazione())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -1342,7 +1407,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
				
			|||||||
      paf1800f.set("PI_QUANTITA",    qta);
 | 
					      paf1800f.set("PI_QUANTITA",    qta);
 | 
				
			||||||
      paf1800f.set("PI_PREZZOUNIT",  rdoc->prezzo(false, false));
 | 
					      paf1800f.set("PI_PREZZOUNIT",  rdoc->prezzo(false, false));
 | 
				
			||||||
      paf1800f.set("PI_PRZTOTALE",   rdoc->importo(true, false));
 | 
					      paf1800f.set("PI_PRZTOTALE",   rdoc->importo(true, false));
 | 
				
			||||||
      set_IVA(*rdoc, paf1800f);
 | 
					      set_IVA(*rdoc, regspiva, paf1800f);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    paf1800f.set("PI_GESTIONE", "D");
 | 
					    paf1800f.set("PI_GESTIONE", "D");
 | 
				
			||||||
@ -1373,10 +1438,10 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
 | 
				
			|||||||
    if (aliquota.is_zero())
 | 
					    if (aliquota.is_zero())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      const TString& tipo = riva.cod_iva().tipo();
 | 
					      const TString& tipo = riva.cod_iva().tipo();
 | 
				
			||||||
      const char* natura = "N2";            // Non soggetto
 | 
								const int tipo_acquisti = riva.cod_iva().get_int("S8");
 | 
				
			||||||
      if (tipo == "NI") natura = "N3"; else // Non imponibile
 | 
					    
 | 
				
			||||||
      if (tipo == "ES") natura = "N4";      // Esente
 | 
					      paf2200f.set("PL_NATURA", natura(tipo, tipo_acquisti, regspiva));
 | 
				
			||||||
      paf2200f.set("PL_NATURA", natura);
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    paf2200f.set("PL_IMPONIBILE",   riva.imponibile());
 | 
					    paf2200f.set("PL_IMPONIBILE",   riva.imponibile());
 | 
				
			||||||
    paf2200f.set("PL_IMPOSTA",      riva.imposta());
 | 
					    paf2200f.set("PL_IMPOSTA",      riva.imposta());
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user