Corretti errori MI2308 e MI2309, relativo al calcolo dell'acconto
per anno precedente. git-svn-id: svn://10.65.10.50/trunk@4340 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									2b26a6840c
								
							
						
					
					
						commit
						a2e7b5aa4a
					
				
							
								
								
									
										269
									
								
								cg/cg4305.cpp
									
									
									
									
									
								
							
							
						
						
									
										269
									
								
								cg/cg4305.cpp
									
									
									
									
									
								
							@ -470,6 +470,7 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    // determina casistica
 | 
					    // determina casistica
 | 
				
			||||||
    enum { mm, tt, mt, tm, boh } history = boh;
 | 
					    enum { mm, tt, mt, tm, boh } history = boh;
 | 
				
			||||||
 | 
					    real divide_by_three = 1.0;
 | 
				
			||||||
    char thh = *_freqviva;
 | 
					    char thh = *_freqviva;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    TString16 thyear = _year;
 | 
					    TString16 thyear = _year;
 | 
				
			||||||
@ -526,9 +527,9 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
 | 
				
			|||||||
          real av = _lim->get_real("R11");   
 | 
					          real av = _lim->get_real("R11");   
 | 
				
			||||||
          bc += av;  
 | 
					          bc += av;  
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (_basecalc == tm) 
 | 
					        if (history == tm) 
 | 
				
			||||||
          // tm come tt ma si divide per 3 la base di calcolo prima di calcolare l'88%
 | 
					          // tm come tt ma si divide per 3 la base di calcolo prima di calcolare l'88%
 | 
				
			||||||
          bc /= real(3.0);
 | 
					          divide_by_three = 3.0;
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
      case mt:  
 | 
					      case mt:  
 | 
				
			||||||
        // basecalcolo: 10, 11, 12 anno prec., 10 e 11 se a debito, 12 vedi acconto;
 | 
					        // basecalcolo: 10, 11, 12 anno prec., 10 e 11 se a debito, 12 vedi acconto;
 | 
				
			||||||
@ -557,9 +558,10 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
 | 
				
			|||||||
        break;
 | 
					        break;
 | 
				
			||||||
      }      
 | 
					      }      
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
 | 
					      round_mille_lire(bc);
 | 
				
			||||||
      if (bc.sign() > 0) //debito
 | 
					      if (bc.sign() > 0) //debito
 | 
				
			||||||
      { 
 | 
					      { 
 | 
				
			||||||
        acc = (bc * _ver->get(isdifferita ? B_LIQ_DIFF : B_LIQ_NORM))/CENTO;
 | 
					        acc = ((bc / divide_by_three) * _ver->get(isdifferita ? B_LIQ_DIFF : B_LIQ_NORM))/CENTO;
 | 
				
			||||||
        acc.round(ROUND_LIRA);  
 | 
					        acc.round(ROUND_LIRA);  
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
@ -567,127 +569,128 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
 | 
				
			|||||||
    }    
 | 
					    }    
 | 
				
			||||||
    _year = thyear;
 | 
					    _year = thyear;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
else if (_basecalc == incorso)
 | 
					  else
 | 
				
			||||||
{      
 | 
					    if (_basecalc == incorso)
 | 
				
			||||||
  // that's pazzesc but as it turns out there's no better way
 | 
					    {      
 | 
				
			||||||
  _comp_acconto = TRUE;
 | 
					      // that's pazzesc but as it turns out there's no better way
 | 
				
			||||||
  // force recalc of current month
 | 
					      _comp_acconto = TRUE;
 | 
				
			||||||
  _recalc = one;               
 | 
					      // force recalc of current month
 | 
				
			||||||
  int need_refresh = FALSE;
 | 
					      _recalc = one;               
 | 
				
			||||||
  for (int mese = 1; mese < _month; mese++)
 | 
					      int need_refresh = FALSE;
 | 
				
			||||||
    if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0")))
 | 
					      for (int mese = 1; mese < _month; mese++)
 | 
				
			||||||
    {
 | 
					        if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0")))
 | 
				
			||||||
      need_refresh = TRUE; 
 | 
					        {
 | 
				
			||||||
      break;
 | 
					          need_refresh = TRUE; 
 | 
				
			||||||
    }
 | 
					          break;
 | 
				
			||||||
  if (need_refresh && yesno_box("Alcuni mesi precedenti non "
 | 
					        }
 | 
				
			||||||
                                "risultano ricalcolati. E' consigliabile il ricalcolo. "
 | 
					      if (need_refresh && yesno_box("Alcuni mesi precedenti non "
 | 
				
			||||||
                                "Si desidera eseguirlo?"))
 | 
					                                    "risultano ricalcolati. E' consigliabile il ricalcolo. "
 | 
				
			||||||
    _recalc = ever;
 | 
					                                    "Si desidera eseguirlo?"))
 | 
				
			||||||
 | 
					        _recalc = ever;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int m = 1; m <= _month; m++)  
 | 
					      for (int m = 1; m <= _month; m++)  
 | 
				
			||||||
    if (is_month_plain(m) || _recalc == ever)
 | 
					        if (is_month_plain(m) || _recalc == ever)
 | 
				
			||||||
    {               
 | 
					        {               
 | 
				
			||||||
      if (_prind->iscancelled()) break;
 | 
					          if (_prind->iscancelled()) break;
 | 
				
			||||||
      update_firm(m);
 | 
					          update_firm(m);
 | 
				
			||||||
    }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // calcola l'acconto
 | 
					      // calcola l'acconto
 | 
				
			||||||
  if (look_lim(12))  //posiziona anche la tabella lam
 | 
					      if (look_lim(12))  //posiziona anche la tabella lam
 | 
				
			||||||
  {                     
 | 
					      {                     
 | 
				
			||||||
    // bc = result_liq(12);
 | 
					        // bc = result_liq(12);
 | 
				
			||||||
    // somma i non fatturati/non annotati 
 | 
					        // somma i non fatturati/non annotati 
 | 
				
			||||||
    // bc += inf + ina;           
 | 
					        // bc += inf + ina;           
 | 
				
			||||||
    cre = _lim->get_real("R12");
 | 
					        cre = _lim->get_real("R12");
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    //quando calcolo la 12° ci vado a sommare il 
 | 
					 | 
				
			||||||
    //versa. dovuto all'acconto 
 | 
					 | 
				
			||||||
    //allora devo ricalcolarmi l'effettivo credito
 | 
					 | 
				
			||||||
    cre -= _lim->get_real("R11");
 | 
					 | 
				
			||||||
    deb = _lim->get_real("R13") + inf + ina;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    bc = deb - cre;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    if (bc.sign() > 0) acc = bc; 
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    // 11/09/1995
 | 
					 | 
				
			||||||
    iva_ven = _lam->get_real("R0"); //iva sulle vendite annotate fino al 20/12
 | 
					 | 
				
			||||||
    iva_acq = _lam->get_real("R1"); //iva sugli acquisti annotati fino al 20/12
 | 
					 | 
				
			||||||
    cre_pre = _lam->get_real("R2"); //credito precedente
 | 
					 | 
				
			||||||
    iva_ret = _lim->get_real("R5"); //rettifica
 | 
					 | 
				
			||||||
    iva_rim = _lim->get_real("R1"); //iva chiesta a rimborso
 | 
					 | 
				
			||||||
    ult_det = _lim->get_real("R6"); //ulteriori detrazioni 
 | 
					 | 
				
			||||||
    //iva_pro:                      //iva relativa alla percentuale di prorata
 | 
					 | 
				
			||||||
    TTable plm ("PLM");
 | 
					 | 
				
			||||||
    plm.zero();
 | 
					 | 
				
			||||||
    plm.put("CODTAB",_year);
 | 
					 | 
				
			||||||
    TRectype rec (plm.curr());
 | 
					 | 
				
			||||||
    plm.read(_isgteq);
 | 
					 | 
				
			||||||
    for (; !plm.eof(); plm.next())
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      if (plm.curr() != rec) break;
 | 
					 | 
				
			||||||
      iva_pro += plm.get_real("R2");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    //acq_intr 
 | 
					 | 
				
			||||||
    TTable pom ("POM");
 | 
					 | 
				
			||||||
    pom.zero();
 | 
					 | 
				
			||||||
    pom.put("CODTAB",_year);
 | 
					 | 
				
			||||||
    rec = pom.curr();
 | 
					 | 
				
			||||||
    pom.read(_isgteq);
 | 
					 | 
				
			||||||
    for (; !pom.eof(); pom.next())
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      if (pom.curr() != rec) break;
 | 
					 | 
				
			||||||
      acq_intr += pom.get_real("R0");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    tipo_acc = "A";                 //flag per dire che si e' utilizzato il metodo analitico
 | 
					 | 
				
			||||||
    //stop
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  else error = 1;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // pulisci il water
 | 
					        //quando calcolo la 12° ci vado a sommare il 
 | 
				
			||||||
  _comp_acconto = FALSE;  
 | 
					        //versa. dovuto all'acconto 
 | 
				
			||||||
  _isprint = FALSE;
 | 
					        //allora devo ricalcolarmi l'effettivo credito
 | 
				
			||||||
  /*
 | 
					        cre -= _lim->get_real("R11");
 | 
				
			||||||
     update_firm(12); 
 | 
					        deb = _lim->get_real("R13") + inf + ina;
 | 
				
			||||||
  */
 | 
					
 | 
				
			||||||
  for (int i = 1; i <= _month; i++)  
 | 
					        bc = deb - cre;
 | 
				
			||||||
    if (is_month_plain(i))
 | 
					    
 | 
				
			||||||
      update_firm(i);
 | 
					        if (bc.sign() > 0) acc = bc; 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        // 11/09/1995
 | 
				
			||||||
 | 
					        iva_ven = _lam->get_real("R0"); //iva sulle vendite annotate fino al 20/12
 | 
				
			||||||
 | 
					        iva_acq = _lam->get_real("R1"); //iva sugli acquisti annotati fino al 20/12
 | 
				
			||||||
 | 
					        cre_pre = _lam->get_real("R2"); //credito precedente
 | 
				
			||||||
 | 
					        iva_ret = _lim->get_real("R5"); //rettifica
 | 
				
			||||||
 | 
					        iva_rim = _lim->get_real("R1"); //iva chiesta a rimborso
 | 
				
			||||||
 | 
					        ult_det = _lim->get_real("R6"); //ulteriori detrazioni 
 | 
				
			||||||
 | 
					        //iva_pro:                      //iva relativa alla percentuale di prorata
 | 
				
			||||||
 | 
					        TTable plm ("PLM");
 | 
				
			||||||
 | 
					        plm.zero();
 | 
				
			||||||
 | 
					        plm.put("CODTAB",_year);
 | 
				
			||||||
 | 
					        TRectype rec (plm.curr());
 | 
				
			||||||
 | 
					        plm.read(_isgteq);
 | 
				
			||||||
 | 
					        for (; !plm.eof(); plm.next())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          if (plm.curr() != rec) break;
 | 
				
			||||||
 | 
					          iva_pro += plm.get_real("R2");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //acq_intr 
 | 
				
			||||||
 | 
					        TTable pom ("POM");
 | 
				
			||||||
 | 
					        pom.zero();
 | 
				
			||||||
 | 
					        pom.put("CODTAB",_year);
 | 
				
			||||||
 | 
					        rec = pom.curr();
 | 
				
			||||||
 | 
					        pom.read(_isgteq);
 | 
				
			||||||
 | 
					        for (; !pom.eof(); pom.next())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          if (pom.curr() != rec) break;
 | 
				
			||||||
 | 
					          acq_intr += pom.get_real("R0");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        tipo_acc = "A";                 //flag per dire che si e' utilizzato il metodo analitico
 | 
				
			||||||
 | 
					        //stop
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else error = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // pulisci il water
 | 
				
			||||||
 | 
					      _comp_acconto = FALSE;  
 | 
				
			||||||
 | 
					      _isprint = FALSE;
 | 
				
			||||||
 | 
					      /*
 | 
				
			||||||
 | 
					       update_firm(12); 
 | 
				
			||||||
 | 
					      */
 | 
				
			||||||
 | 
					      for (int i = 1; i <= _month; i++)  
 | 
				
			||||||
 | 
					        if (is_month_plain(i))
 | 
				
			||||||
 | 
					          update_firm(i);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  //18/10/1995
 | 
					      //18/10/1995
 | 
				
			||||||
  _lim->put("B0","");
 | 
					      _lim->put("B0","");
 | 
				
			||||||
  _lim->rewrite();
 | 
					      _lim->rewrite();
 | 
				
			||||||
  if (look_lim(13))  
 | 
					      if (look_lim(13))  
 | 
				
			||||||
  {
 | 
					      {
 | 
				
			||||||
   _lim->put("B0","");
 | 
					      _lim->put("B0","");
 | 
				
			||||||
   _lim->rewrite();
 | 
					      _lim->rewrite();
 | 
				
			||||||
  }
 | 
					      }
 | 
				
			||||||
  //fine    
 | 
					      //fine    
 | 
				
			||||||
  _isprint = TRUE;
 | 
					      _isprint = TRUE;
 | 
				
			||||||
}
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// sbatti l'acconto (e non solo!) in LIA
 | 
					  // sbatti l'acconto (e non solo!) in LIA
 | 
				
			||||||
if (look_lia())
 | 
					  if (look_lia())
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  if (isdifferita && _basecalc == incorso)
 | 
					 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    acc *= real(2.0);
 | 
					    if (isdifferita && _basecalc == incorso)
 | 
				
			||||||
    acc /= real(3.0);
 | 
					    {
 | 
				
			||||||
 | 
					      acc *= real(2.0);
 | 
				
			||||||
 | 
					      acc /= real(3.0);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    _lia->put("R4",acc);
 | 
				
			||||||
 | 
					    _lia->put("R7",iva_ven);
 | 
				
			||||||
 | 
					    _lia->put("R8",iva_acq);
 | 
				
			||||||
 | 
					    _lia->put("R9",iva_ret);
 | 
				
			||||||
 | 
					    _lia->put("R10",iva_rim);
 | 
				
			||||||
 | 
					    _lia->put("R11",ult_det);
 | 
				
			||||||
 | 
					    _lia->put("R12",iva_pro); 
 | 
				
			||||||
 | 
					    TToken_string rr("",'!');
 | 
				
			||||||
 | 
					    rr.add(cre_pre.string(),0);
 | 
				
			||||||
 | 
					    rr.add(acq_intr.string(),1); 
 | 
				
			||||||
 | 
					    _lia->put("S1",rr);          
 | 
				
			||||||
 | 
					    _lia->put("S8",tipo_acc);
 | 
				
			||||||
 | 
					    _lia->rewrite();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  _lia->put("R4",acc);
 | 
					 | 
				
			||||||
  _lia->put("R7",iva_ven);
 | 
					 | 
				
			||||||
  _lia->put("R8",iva_acq);
 | 
					 | 
				
			||||||
  _lia->put("R9",iva_ret);
 | 
					 | 
				
			||||||
  _lia->put("R10",iva_rim);
 | 
					 | 
				
			||||||
  _lia->put("R11",ult_det);
 | 
					 | 
				
			||||||
  _lia->put("R12",iva_pro); 
 | 
					 | 
				
			||||||
  TToken_string rr("",'!');
 | 
					 | 
				
			||||||
  rr.add(cre_pre.string(),0);
 | 
					 | 
				
			||||||
  rr.add(acq_intr.string(),1); 
 | 
					 | 
				
			||||||
  _lia->put("S1",rr);          
 | 
					 | 
				
			||||||
  _lia->put("S8",tipo_acc);
 | 
					 | 
				
			||||||
  _lia->rewrite();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*** Non bisogna aggiornare la delega
 | 
					/*** Non bisogna aggiornare la delega
 | 
				
			||||||
     Se in un prossimo futuro si decidesse di ripristinare questa
 | 
					     Se in un prossimo futuro si decidesse di ripristinare questa
 | 
				
			||||||
@ -710,26 +713,26 @@ if (look_lia())
 | 
				
			|||||||
  ***/
 | 
					  ***/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// per questa volta lasciamo perdere la describe_acconto
 | 
					// per questa volta lasciamo perdere la describe_acconto
 | 
				
			||||||
if (_isprint)
 | 
					  if (_isprint)
 | 
				
			||||||
{
 | 
					  {
 | 
				
			||||||
  // segnalazioni di errore da gesticolare: 
 | 
					  // segnalazioni di errore da gesticolare: 
 | 
				
			||||||
  // error = 0: no error
 | 
					  // error = 0: no error
 | 
				
			||||||
  // error = 1: manca tabella risultati liquidazione per l'anno indicato
 | 
					  // error = 1: manca tabella risultati liquidazione per l'anno indicato
 | 
				
			||||||
  // error = 2: manca tabella risultati liquidazione per l'anno precedente  
 | 
					  // error = 2: manca tabella risultati liquidazione per l'anno precedente  
 | 
				
			||||||
  // error = 3: manca tabella dichiarazione annuale  per l'anno precedente
 | 
					  // error = 3: manca tabella dichiarazione annuale  per l'anno precedente
 | 
				
			||||||
  _DescrItem* d = new _DescrItem(ACCONTO);
 | 
					    _DescrItem* d = new _DescrItem(ACCONTO);
 | 
				
			||||||
  d->_r0 = bc;
 | 
					    d->_r0 = bc;
 | 
				
			||||||
  d->_r1 = acc;
 | 
					    d->_r1 = acc;
 | 
				
			||||||
  d->_r2 = cre;
 | 
					    d->_r2 = cre;
 | 
				
			||||||
  d->_r3 = deb;
 | 
					    d->_r3 = deb;
 | 
				
			||||||
  d->_f0 = _basecalc == incorso;
 | 
					    d->_f0 = _basecalc == incorso;
 | 
				
			||||||
  d->_f1 = _isbase;
 | 
					    d->_f1 = _isbase;
 | 
				
			||||||
  d->_f2 = error;
 | 
					    d->_f2 = error;
 | 
				
			||||||
  d->_f3 = isdifferita;
 | 
					    d->_f3 = isdifferita;
 | 
				
			||||||
  d->_s0 = _nditte->curr().get("CODDITTA");
 | 
					    d->_s0 = _nditte->curr().get("CODDITTA");
 | 
				
			||||||
  d->_s1 = _nditte->curr().get("RAGSOC");
 | 
					    d->_s1 = _nditte->curr().get("RAGSOC");
 | 
				
			||||||
  _descr_arr.add(d);
 | 
					    _descr_arr.add(d);
 | 
				
			||||||
}  
 | 
					  }  
 | 
				
			||||||
return TRUE;
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user