Correzione in liquidazione IVA relativa allo scorporo corretto
(sia in annuale che nel periodo). git-svn-id: svn://10.65.10.50/trunk@4139 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									2d4a8bddba
								
							
						
					
					
						commit
						cafd3fcd50
					
				@ -570,16 +570,16 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  for (; _cur->pos() < items; ++(*_cur))
 | 
					  for (; _cur->pos() < items; ++(*_cur))
 | 
				
			||||||
  {                               
 | 
					  {                               
 | 
				
			||||||
#ifdef DBG
 | 
					    if ((_cur->pos() & 0x7F) == 0)
 | 
				
			||||||
    if (_cur->pos() % 100 == 0L)
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					#ifdef DBG
 | 
				
			||||||
      msgdbg.format("Ricalcolo attivita': P=%ld/%ld",_cur->pos(),items);
 | 
					      msgdbg.format("Ricalcolo attivita': P=%ld/%ld",_cur->pos(),items);
 | 
				
			||||||
      freespace = GetFreeSpace(0);
 | 
					      freespace = GetFreeSpace(0);
 | 
				
			||||||
      msgdbg << " Memoria libera(1): " << freespace/1024 << " Kbytes.";
 | 
					      msgdbg << " Memoria libera(1): " << freespace/1024 << " Kbytes.";
 | 
				
			||||||
      xvt_statbar_set(msgdbg);
 | 
					      xvt_statbar_set(msgdbg);
 | 
				
			||||||
 | 
					#endif  
 | 
				
			||||||
      do_events();
 | 
					      do_events();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif  
 | 
					 | 
				
			||||||
    TDate date(_mov->get("DATAREG"));
 | 
					    TDate date(_mov->get("DATAREG"));
 | 
				
			||||||
    TString16 reg     = _mov->get("REG");
 | 
					    TString16 reg     = _mov->get("REG");
 | 
				
			||||||
    bool isreg        = look_reg(_mov->get("REG"));
 | 
					    bool isreg        = look_reg(_mov->get("REG"));
 | 
				
			||||||
@ -985,6 +985,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
				
			|||||||
      real imp = _pim->get_real("R0"); // imponibile
 | 
					      real imp = _pim->get_real("R0"); // imponibile
 | 
				
			||||||
      real ivp = _pim->get_real("R1"); // IVA su imp.
 | 
					      real ivp = _pim->get_real("R1"); // IVA su imp.
 | 
				
			||||||
      real lor = _pim->get_real("R2"); // lordo  
 | 
					      real lor = _pim->get_real("R2"); // lordo  
 | 
				
			||||||
 | 
					      real lorcor = _pim->get_real("R3"); // lordo corrispettivi (da non ventilare)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      /*
 | 
					      /*
 | 
				
			||||||
       * le maledette fatture con scontrino sono sul registro dei
 | 
					       * le maledette fatture con scontrino sono sul registro dei
 | 
				
			||||||
@ -1103,6 +1104,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
				
			|||||||
          {
 | 
					          {
 | 
				
			||||||
            real perc = _iva->get_real("R0")/CENTO;
 | 
					            real perc = _iva->get_real("R0")/CENTO;
 | 
				
			||||||
            lor += imponibile + imposta;   
 | 
					            lor += imponibile + imposta;   
 | 
				
			||||||
 | 
					            lorcor += imponibile+imposta;
 | 
				
			||||||
            real tot = imponibile+imposta;   
 | 
					            real tot = imponibile+imposta;   
 | 
				
			||||||
            if (liq) add_corrisp(month, reg, tot, perc, tipodet, codiva, codatt);
 | 
					            if (liq) add_corrisp(month, reg, tot, perc, tipodet, codiva, codatt);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
@ -1196,6 +1198,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
				
			|||||||
          _pim->put("R0",imp);
 | 
					          _pim->put("R0",imp);
 | 
				
			||||||
          _pim->put("R1",ivp);
 | 
					          _pim->put("R1",ivp);
 | 
				
			||||||
          _pim->put("R2",lor);   
 | 
					          _pim->put("R2",lor);   
 | 
				
			||||||
 | 
					          _pim->put("R3",lorcor);   // Corrispettivi, non inclusi quelli da ventilare
 | 
				
			||||||
          _pim->put("R5",ifs);   
 | 
					          _pim->put("R5",ifs);   
 | 
				
			||||||
          _pim->put("R6",vfs);   
 | 
					          _pim->put("R6",vfs);   
 | 
				
			||||||
          _pim->put("R7",adf);   
 | 
					          _pim->put("R7",adf);   
 | 
				
			||||||
@ -1772,6 +1775,10 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
 | 
				
			|||||||
  _BolgArray b_arr;
 | 
					  _BolgArray b_arr;
 | 
				
			||||||
  const bool is_key = _iva11_arr.is_key(codatt);
 | 
					  const bool is_key = _iva11_arr.is_key(codatt);
 | 
				
			||||||
  _BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
 | 
					  _BolgArray& array = is_key ? (_BolgArray&)_iva11_arr.find(codatt) : b_arr;
 | 
				
			||||||
 | 
					  // Scorporo corretto dei corrispettivi in R3
 | 
				
			||||||
 | 
					  TAssoc_array corr_ann;
 | 
				
			||||||
 | 
					  _CorrItem cx,*cc;
 | 
				
			||||||
 | 
					  bool is_present;
 | 
				
			||||||
             
 | 
					             
 | 
				
			||||||
  for (_pim->first(); !_pim->eof();  _pim->next())
 | 
					  for (_pim->first(); !_pim->eof();  _pim->next())
 | 
				
			||||||
  {           
 | 
					  {           
 | 
				
			||||||
@ -1878,6 +1885,16 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if ((_isagricolo && tagr==2) || !_isagricolo)
 | 
					      if ((_isagricolo && tagr==2) || !_isagricolo)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
 | 
					        // Accumula i corrispettivi da scorporare per codice iva
 | 
				
			||||||
 | 
					        is_present =  corr_ann.is_key(codiva);
 | 
				
			||||||
 | 
					        cx._totale = 0;
 | 
				
			||||||
 | 
					        _CorrItem& ca = is_present ? (_CorrItem&) corr_ann[codiva] : cx;
 | 
				
			||||||
 | 
					        ca._totale += _pim->get_real("R3");
 | 
				
			||||||
 | 
					        if (!is_present) // se non c'e' lo aggiunge
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          ca._aliquota = _iva->get_real("R0"); // Se e' nuovo setta l'aliquota
 | 
				
			||||||
 | 
					          corr_ann.add(codiva,ca);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        tt = _pim->get("S0");
 | 
					        tt = _pim->get("S0");
 | 
				
			||||||
        a13i = tt.get(0);
 | 
					        a13i = tt.get(0);
 | 
				
			||||||
        a13v = tt.get(1);
 | 
					        a13v = tt.get(1);
 | 
				
			||||||
@ -1957,6 +1974,44 @@ void TLiquidazione_app::iva11_set_arr_pim(const TString& codatt)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  // Scorre i corrispettivi lordi accumulati, li scorpora ed aggiorna i righi relativi
 | 
				
			||||||
 | 
					  for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    lordo2netto(cc->_totale,imp,iva,cc->_aliquota/CENTO);
 | 
				
			||||||
 | 
					    vtot += imp; ivav += iva;
 | 
				
			||||||
 | 
					    if (cc->_aliquota == 4.00)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      array.add(imp,TAB11_EC101);
 | 
				
			||||||
 | 
					      array.add(iva,TAB11_EC201);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (cc->_aliquota == 9.00)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      array.add(imp,TAB11_EC102); 
 | 
				
			||||||
 | 
					      array.add(iva,TAB11_EC202); 
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (cc->_aliquota == 10.00)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      array.add(imp,TAB11_EC103); 
 | 
				
			||||||
 | 
					      array.add(iva,TAB11_EC203); 
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (cc->_aliquota == 13.00)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      array.add(imp,TAB11_EC104); 
 | 
				
			||||||
 | 
					      array.add(iva,TAB11_EC204); 
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (cc->_aliquota == 16.00)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      array.add(imp,TAB11_EC105); 
 | 
				
			||||||
 | 
					      array.add(iva,TAB11_EC205); 
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else if (cc->_aliquota == 19.00)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      array.add(imp,TAB11_EC106); 
 | 
				
			||||||
 | 
					      array.add(iva,TAB11_EC206); 
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }  
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  // Hisss... Rettifica l'importo di EC115: EC115 = EC116 + EC117 + EC115
 | 
					  // Hisss... Rettifica l'importo di EC115: EC115 = EC116 + EC117 + EC115
 | 
				
			||||||
  // Va beh...
 | 
					  // Va beh...
 | 
				
			||||||
  real r16, r17;
 | 
					  real r16, r17;
 | 
				
			||||||
@ -2618,6 +2673,12 @@ void TLiquidazione_app::recalc_annual(const char* att)
 | 
				
			|||||||
  pro_pag  = _pla->get_real("R12");
 | 
					  pro_pag  = _pla->get_real("R12");
 | 
				
			||||||
  iva_acq  = _pla->get_real("R11");
 | 
					  iva_acq  = _pla->get_real("R11");
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  // Per avere un risultato corretto, si deve totalizzare PIM->R3 per codice iva
 | 
				
			||||||
 | 
					  // e quindi effettuare lo scorporo dell'imponibile e aggiungere al relativo volume d'affari
 | 
				
			||||||
 | 
					  TAssoc_array corr_ann;
 | 
				
			||||||
 | 
					  _CorrItem cx,*cc;
 | 
				
			||||||
 | 
					  bool is_key;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  for (_pim->first(); !_pim->eof();  _pim->next())
 | 
					  for (_pim->first(); !_pim->eof();  _pim->next())
 | 
				
			||||||
  {           
 | 
					  {           
 | 
				
			||||||
    if (_year != *_pim_anno) continue;
 | 
					    if (_year != *_pim_anno) continue;
 | 
				
			||||||
@ -2636,8 +2697,19 @@ void TLiquidazione_app::recalc_annual(const char* att)
 | 
				
			|||||||
    a13     = _pim->get("S0");
 | 
					    a13     = _pim->get("S0");
 | 
				
			||||||
    imp_a13 = a13.get(0);
 | 
					    imp_a13 = a13.get(0);
 | 
				
			||||||
    imp_ifs -= imp_af + imp_a13; // Toglie le autofatture e le op. A13
 | 
					    imp_ifs -= imp_af + imp_a13; // Toglie le autofatture e le op. A13
 | 
				
			||||||
    if  (corrisp) imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS
 | 
					    if  (corrisp)
 | 
				
			||||||
    
 | 
					    {
 | 
				
			||||||
 | 
					      imp_ifs += _pim->get_real("R5"); // Se corrisp. aggiunge le FS
 | 
				
			||||||
 | 
					      is_key =  corr_ann.is_key(codiva);
 | 
				
			||||||
 | 
					      cx._totale = 0;
 | 
				
			||||||
 | 
					      _CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
 | 
				
			||||||
 | 
					      ca._totale += _pim->get_real("R3");
 | 
				
			||||||
 | 
					      if (!is_key) // se non c'e' lo aggiunge
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota
 | 
				
			||||||
 | 
					        corr_ann.add(codiva,ca);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    if (                                        // ESCLUSI:      
 | 
					    if (                                        // ESCLUSI:      
 | 
				
			||||||
        strcmp(att,*_pim_codatt) != 0   ||
 | 
					        strcmp(att,*_pim_codatt) != 0   ||
 | 
				
			||||||
        treg != vendita                 || //   non vendite
 | 
					        treg != vendita                 || //   non vendite
 | 
				
			||||||
@ -2653,6 +2725,18 @@ void TLiquidazione_app::recalc_annual(const char* att)
 | 
				
			|||||||
     volaff2 += imp_ifs;
 | 
					     volaff2 += imp_ifs;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  // Ora si scorporano i corrispettivi raggruppati per codice IVA  e si totalizzano gli imponibili
 | 
				
			||||||
 | 
					  // calcolati, da aggiungere poi a volaff1 o volaff2
 | 
				
			||||||
 | 
					  real imp,iva;
 | 
				
			||||||
 | 
					  for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    lordo2netto(cc->_totale,imp,iva,cc->_aliquota);
 | 
				
			||||||
 | 
					    if (tipoatt == 1)
 | 
				
			||||||
 | 
					      volaff1 += imp;
 | 
				
			||||||
 | 
					    else 
 | 
				
			||||||
 | 
					      volaff2 += imp;
 | 
				
			||||||
 | 
					  } 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  // calcola esenti, cessioni, lordo vendite, prorata pagato
 | 
					  // calcola esenti, cessioni, lordo vendite, prorata pagato
 | 
				
			||||||
  // e IVA acquisti dai plm/ptm/pum/pam/pom 
 | 
					  // e IVA acquisti dai plm/ptm/pum/pam/pom 
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
				
			|||||||
@ -105,7 +105,7 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
 | 
				
			|||||||
  // x13
 | 
					  // x13
 | 
				
			||||||
  TString key;
 | 
					  TString key;
 | 
				
			||||||
  bool is_key;
 | 
					  bool is_key;
 | 
				
			||||||
  TAssoc_array corr_ann;  // Contiene corrispettivi annuali (temporaneo, da rimuovere
 | 
					  TAssoc_array corr_ann;  // Contiene corrispettivi annuali (temporaneo, da correggere
 | 
				
			||||||
                          // non appena implementato correttamente il mese 13)
 | 
					                          // non appena implementato correttamente il mese 13)
 | 
				
			||||||
  _CorrItem cx;
 | 
					  _CorrItem cx;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
@ -117,11 +117,10 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
 | 
				
			|||||||
  for (int i = 0; i < items; i++)
 | 
					  for (int i = 0; i < items; i++)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    _CorrItem* ci = (_CorrItem*)&_corr_arr[i];
 | 
					    _CorrItem* ci = (_CorrItem*)&_corr_arr[i];
 | 
				
			||||||
    // Se e' annuale  memorizza in un assoc_array i corrispettivi annuali
 | 
					    // memorizza  per codiva
 | 
				
			||||||
    // memorizza  per attivita'+registro+codiva+tipodet
 | 
					 | 
				
			||||||
    // x13
 | 
					    // x13
 | 
				
			||||||
    if (month == 13)
 | 
					    if ((month != 13 && ci->_month != month) || ci->_codatt != codatt) continue;
 | 
				
			||||||
    {
 | 
					    
 | 
				
			||||||
    key = ci->_codiva;
 | 
					    key = ci->_codiva;
 | 
				
			||||||
    is_key =  corr_ann.is_key(key);
 | 
					    is_key =  corr_ann.is_key(key);
 | 
				
			||||||
    cx._totale = 0;
 | 
					    cx._totale = 0;
 | 
				
			||||||
@ -130,12 +129,14 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
 | 
				
			|||||||
    if (!is_key) // se non c'e' lo aggiunge
 | 
					    if (!is_key) // se non c'e' lo aggiunge
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      ca._aliquota = ci->_aliquota;
 | 
					      ca._aliquota = ci->_aliquota;
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
      ca._codreg = ci->_codreg;
 | 
					      ca._codreg = ci->_codreg;
 | 
				
			||||||
      ca._tipodet = ci->_tipodet;
 | 
					      ca._tipodet = ci->_tipodet;
 | 
				
			||||||
 | 
					*/      
 | 
				
			||||||
      corr_ann.add(key,ca);
 | 
					      corr_ann.add(key,ca);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					/*    
 | 
				
			||||||
    continue;
 | 
					    continue;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    // fine x13
 | 
					    // fine x13
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if (ci->_month != month || ci->_codatt != codatt) 
 | 
					    if (ci->_month != month || ci->_codatt != codatt) 
 | 
				
			||||||
@ -162,21 +163,24 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
 | 
				
			|||||||
    _pim->put("R0", imponibile);
 | 
					    _pim->put("R0", imponibile);
 | 
				
			||||||
    _pim->put("R1", imposta);  
 | 
					    _pim->put("R1", imposta);  
 | 
				
			||||||
    _pim->rewrite();                
 | 
					    _pim->rewrite();                
 | 
				
			||||||
 | 
					*/    
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  // Dopo aver calcolato la somma dei corrispettivi annualmente, li scorpora  
 | 
					  // Dopo aver calcolato la somma dei corrispettivi annualmente, li scorpora  
 | 
				
			||||||
  // x13
 | 
					  // x13
 | 
				
			||||||
  if (month == 13)
 | 
					  // if (month == 13)
 | 
				
			||||||
  {
 | 
					  //{
 | 
				
			||||||
    real imp,iva,imp1,iva1;
 | 
					    real imp,iva,imp1,iva1;
 | 
				
			||||||
    _CorrItem* cc;
 | 
					    _CorrItem* cc;
 | 
				
			||||||
    // Per le prossime scritture uso impropriamente il mese 12, lo so e' terribile...
 | 
					    // Per le prossime scritture(PAM e PLM) uso impropriamente il mese 12, lo so e' terribile...
 | 
				
			||||||
    // ma non appena possibile il mese 13 sara' disponibile tutto sara' piu' bello.
 | 
					    // ma non appena possibile il mese 13 sara' disponibile tutto sara' piu' bello.
 | 
				
			||||||
 | 
					    //const int m = month == 13 ? 12 : month; 
 | 
				
			||||||
    for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
 | 
					    for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      lordo2netto(cc->_totale, imp, iva, cc->_aliquota);
 | 
					      lordo2netto(cc->_totale, imp, iva, cc->_aliquota);
 | 
				
			||||||
      imponibile += imp;
 | 
					      imponibile += imp;
 | 
				
			||||||
      imposta    += iva;
 | 
					      imposta    += iva;
 | 
				
			||||||
      look_pim(12, codatt, cc->_codreg, "", corr_ann.get_hashobj()->key(), cc->_tipodet, TRUE);
 | 
					/*      
 | 
				
			||||||
 | 
					      look_pim(m, codatt, cc->_codreg, "", corr_ann.get_hashobj()->key(), cc->_tipodet, TRUE);
 | 
				
			||||||
       imp1 = _pim->get_real("R0");
 | 
					       imp1 = _pim->get_real("R0");
 | 
				
			||||||
       iva1 = _pim->get_real("R1");
 | 
					       iva1 = _pim->get_real("R1");
 | 
				
			||||||
       imp1 += imp;
 | 
					       imp1 += imp;
 | 
				
			||||||
@ -184,8 +188,10 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
 | 
				
			|||||||
      _pim->put("R0",imp1);
 | 
					      _pim->put("R0",imp1);
 | 
				
			||||||
      _pim->put("R1",iva1);
 | 
					      _pim->put("R1",iva1);
 | 
				
			||||||
      _pim->rewrite();
 | 
					      _pim->rewrite();
 | 
				
			||||||
 | 
					*/      
 | 
				
			||||||
 | 
					    //}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    look_plm(12, codatt); // Aggiorna l'iva vendite in PLM...
 | 
					    look_plm(month, codatt); // Aggiorna l'iva vendite in PLM...
 | 
				
			||||||
    real ive = _plm->get_real("R0");
 | 
					    real ive = _plm->get_real("R0");
 | 
				
			||||||
    ive     += imposta;
 | 
					    ive     += imposta;
 | 
				
			||||||
    _plm->put("R0",ive);
 | 
					    _plm->put("R0",ive);
 | 
				
			||||||
@ -195,7 +201,6 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
 | 
				
			|||||||
    _pam->put("R1",vaf);
 | 
					    _pam->put("R1",vaf);
 | 
				
			||||||
    _plm->rewrite();
 | 
					    _plm->rewrite();
 | 
				
			||||||
    _pam->rewrite();
 | 
					    _pam->rewrite();
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  // fine x13
 | 
					  // fine x13
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -651,18 +656,26 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  // Condizione 2...
 | 
					  // Condizione 2...
 | 
				
			||||||
  // scorri i bellissimi progressivi mensili
 | 
					  // scorri i bellissimi progressivi mensili
 | 
				
			||||||
 | 
					  // Nota: i valori ricavati vanno poi integrati con R3, dove sono memorizzati i corrispettivi da scorporare
 | 
				
			||||||
 | 
					  // anche qui si accumula per codice iva e si effettua lo scorporo alla fine del ciclo.
 | 
				
			||||||
 | 
					  TAssoc_array corr_ann;
 | 
				
			||||||
 | 
					  TString codiva;
 | 
				
			||||||
 | 
					  _CorrItem cx,*cc;
 | 
				
			||||||
 | 
					  bool is_key;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  const int year  = atoi((const char*)_year);
 | 
					  const int year  = atoi((const char*)_year);
 | 
				
			||||||
  for (_pim->first(); !_pim->eof(); _pim->next()) 
 | 
					  for (_pim->first(); !_pim->eof(); _pim->next()) 
 | 
				
			||||||
  {                                   
 | 
					  {                                   
 | 
				
			||||||
    int ryear = atoi(*_pim_anno);
 | 
					    int ryear = atoi(*_pim_anno);
 | 
				
			||||||
    int rmese = atoi(*_pim_mese);
 | 
					    int rmese = atoi(*_pim_mese);
 | 
				
			||||||
    int tipodet = atoi(*_pim_tipodet);
 | 
					    int tipodet = atoi(*_pim_tipodet);
 | 
				
			||||||
 | 
					    codiva = *_pim_codiva;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // B3 significa che e' acq. o vendita valido per rimb. per aliquota                                    
 | 
					    // B3 significa che e' acq. o vendita valido per rimb. per aliquota                                    
 | 
				
			||||||
    if (!_pim->get_bool("B3")) continue;
 | 
					    if (!_pim->get_bool("B3")) continue;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // Se il tipo di codice e' NS non va considerato nella sommatoria del tot. acquisti
 | 
					    // Se il tipo di codice e' NS non va considerato nella sommatoria del tot. acquisti
 | 
				
			||||||
    look_iva(*_pim_codiva);
 | 
					    look_iva(codiva);
 | 
				
			||||||
    const bool non_sogg = _iva->get("S1") == "NS";
 | 
					    const bool non_sogg = _iva->get("S1") == "NS";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!is_mens) // Trimestrali
 | 
					    if (!is_mens) // Trimestrali
 | 
				
			||||||
@ -687,6 +700,15 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
 | 
				
			|||||||
        // vedi sopra...
 | 
					        // vedi sopra...
 | 
				
			||||||
        vtot += imp;     
 | 
					        vtot += imp;     
 | 
				
			||||||
        ivav += iva;
 | 
					        ivav += iva;
 | 
				
			||||||
 | 
					        is_key =  corr_ann.is_key(codiva);
 | 
				
			||||||
 | 
					        cx._totale = 0;
 | 
				
			||||||
 | 
					        _CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
 | 
				
			||||||
 | 
					        ca._totale += _pim->get_real("R3");
 | 
				
			||||||
 | 
					        if (!is_key) // se non c'e' lo aggiunge
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota
 | 
				
			||||||
 | 
					          corr_ann.add(codiva,ca);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else 
 | 
					    else 
 | 
				
			||||||
@ -698,6 +720,14 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
  } // end of for
 | 
					  } // end of for
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  real impc,ivac; // Aggiunge lo scorporo dei corrispettivi alle vendite calcolate
 | 
				
			||||||
 | 
					  for (cc = (_CorrItem *)corr_ann.first_item(); cc != NULL; cc = (_CorrItem *)corr_ann.succ_item())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    lordo2netto(cc->_totale,impc,ivac,cc->_aliquota);
 | 
				
			||||||
 | 
					    vtot += impc;
 | 
				
			||||||
 | 
					    ivav += ivac;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // finalmente
 | 
					  // finalmente
 | 
				
			||||||
  alv = ivav/vtot;  alv.round(4);
 | 
					  alv = ivav/vtot;  alv.round(4);
 | 
				
			||||||
  ala = ivaa/atot;  ala.round(4);
 | 
					  ala = ivaa/atot;  ala.round(4);
 | 
				
			||||||
 | 
				
			|||||||
@ -469,6 +469,11 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
 | 
				
			|||||||
  _DescrItem* hea = new _DescrItem(PIM_HEAD);
 | 
					  _DescrItem* hea = new _DescrItem(PIM_HEAD);
 | 
				
			||||||
  hea->_f0 = skip_acq; // cosi' non compare nemmeno la colonnina! contento?
 | 
					  hea->_f0 = skip_acq; // cosi' non compare nemmeno la colonnina! contento?
 | 
				
			||||||
  _descr_arr.add(hea);
 | 
					  _descr_arr.add(hea);
 | 
				
			||||||
 | 
					  // Assoc array per memorizzare i corrispettivi da scorporare. Tali corrispettivi verranno
 | 
				
			||||||
 | 
					  // aggiunti alla fine del ciclo, scorrendo tutte le righe generate.
 | 
				
			||||||
 | 
					  TAssoc_array corr_ann;
 | 
				
			||||||
 | 
					  _CorrItem cx;
 | 
				
			||||||
 | 
					  bool is_key;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  while ((tmpatt = atts.get()) != NULL)
 | 
					  while ((tmpatt = atts.get()) != NULL)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
@ -571,6 +576,15 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        else  // vendita
 | 
					        else  // vendita
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					          is_key =  corr_ann.is_key(codiva);
 | 
				
			||||||
 | 
					          cx._totale = 0;
 | 
				
			||||||
 | 
					          _CorrItem& ca = is_key ? (_CorrItem&) corr_ann[codiva] : cx;
 | 
				
			||||||
 | 
					          ca._totale += _pim->get_real("R3");
 | 
				
			||||||
 | 
					          if (!is_key) // se non c'e' lo aggiunge
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota
 | 
				
			||||||
 | 
					            corr_ann.add(codiva,ca);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          // vedi corrispettivi veri e falsi
 | 
					          // vedi corrispettivi veri e falsi
 | 
				
			||||||
          real cvi = _pim->get_real("R0");  // imp. totale
 | 
					          real cvi = _pim->get_real("R0");  // imp. totale
 | 
				
			||||||
          real cvv = _pim->get_real("R1");  // iva  totale
 | 
					          real cvv = _pim->get_real("R1");  // iva  totale
 | 
				
			||||||
@ -653,6 +667,23 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    real impc,ivac; // Aggiunge lo scorporo dei corrispettivi
 | 
				
			||||||
 | 
					    const int ditems = _descr_arr.items(); 
 | 
				
			||||||
 | 
					    for (int i=0;i<ditems;i++) // scorre le righe memorizzate
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      _DescrItem& dd = (_DescrItem&) _descr_arr[i]; 
 | 
				
			||||||
 | 
					      if (dd._flags != PIM_ROW) continue;
 | 
				
			||||||
 | 
					      if (corr_ann.is_key(dd._s1)) // Se esiste il codice iva corrispondente sull'array corrispettivi
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        _CorrItem& cc = (_CorrItem &) corr_ann[dd._s1];
 | 
				
			||||||
 | 
					        lordo2netto(cc._totale,impc,ivac,cc._aliquota);
 | 
				
			||||||
 | 
					        dd._r2 += impc; // allora effettua lo scorporo e aggiorna i totali
 | 
				
			||||||
 | 
					        dd._r3 += ivac;
 | 
				
			||||||
 | 
					        t2 += impc;
 | 
				
			||||||
 | 
					        t3 += ivac;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    look_plm(month,att);
 | 
					    look_plm(month,att);
 | 
				
			||||||
    real iva74t = _pom->get_real("R13");  
 | 
					    real iva74t = _pom->get_real("R13");  
 | 
				
			||||||
    if (iva74t.sign() > 0)
 | 
					    if (iva74t.sign() > 0)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user