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
					
				
							
								
								
									
										267
									
								
								cg/cg4305.cpp
									
									
									
									
									
								
							
							
						
						
									
										267
									
								
								cg/cg4305.cpp
									
									
									
									
									
								
							@ -470,6 +470,7 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
 | 
			
		||||
  {
 | 
			
		||||
    // determina casistica
 | 
			
		||||
    enum { mm, tt, mt, tm, boh } history = boh;
 | 
			
		||||
    real divide_by_three = 1.0;
 | 
			
		||||
    char thh = *_freqviva;
 | 
			
		||||
    
 | 
			
		||||
    TString16 thyear = _year;
 | 
			
		||||
@ -526,9 +527,9 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
 | 
			
		||||
          real av = _lim->get_real("R11");   
 | 
			
		||||
          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%
 | 
			
		||||
          bc /= real(3.0);
 | 
			
		||||
          divide_by_three = 3.0;
 | 
			
		||||
        break;
 | 
			
		||||
      case mt:  
 | 
			
		||||
        // 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;
 | 
			
		||||
      }      
 | 
			
		||||
      
 | 
			
		||||
      round_mille_lire(bc);
 | 
			
		||||
      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);  
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
@ -567,127 +569,128 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
 | 
			
		||||
    }    
 | 
			
		||||
    _year = thyear;
 | 
			
		||||
  }
 | 
			
		||||
else if (_basecalc == incorso)
 | 
			
		||||
{      
 | 
			
		||||
  // that's pazzesc but as it turns out there's no better way
 | 
			
		||||
  _comp_acconto = TRUE;
 | 
			
		||||
  // force recalc of current month
 | 
			
		||||
  _recalc = one;               
 | 
			
		||||
  int need_refresh = FALSE;
 | 
			
		||||
  for (int mese = 1; mese < _month; mese++)
 | 
			
		||||
    if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0")))
 | 
			
		||||
  else
 | 
			
		||||
    if (_basecalc == incorso)
 | 
			
		||||
    {      
 | 
			
		||||
      need_refresh = TRUE; 
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
  if (need_refresh && yesno_box("Alcuni mesi precedenti non "
 | 
			
		||||
                                "risultano ricalcolati. E' consigliabile il ricalcolo. "
 | 
			
		||||
                                "Si desidera eseguirlo?"))
 | 
			
		||||
    _recalc = ever;
 | 
			
		||||
      // that's pazzesc but as it turns out there's no better way
 | 
			
		||||
      _comp_acconto = TRUE;
 | 
			
		||||
      // force recalc of current month
 | 
			
		||||
      _recalc = one;               
 | 
			
		||||
      int need_refresh = FALSE;
 | 
			
		||||
      for (int mese = 1; mese < _month; mese++)
 | 
			
		||||
        if (is_month_ok_strict(mese) && (!look_lim(mese) || !_lim->get_bool("B0")))
 | 
			
		||||
        {
 | 
			
		||||
          need_refresh = TRUE; 
 | 
			
		||||
          break;
 | 
			
		||||
        }
 | 
			
		||||
      if (need_refresh && yesno_box("Alcuni mesi precedenti non "
 | 
			
		||||
                                    "risultano ricalcolati. E' consigliabile il ricalcolo. "
 | 
			
		||||
                                    "Si desidera eseguirlo?"))
 | 
			
		||||
        _recalc = ever;
 | 
			
		||||
 | 
			
		||||
  for (int m = 1; m <= _month; m++)  
 | 
			
		||||
    if (is_month_plain(m) || _recalc == ever)
 | 
			
		||||
    {               
 | 
			
		||||
      if (_prind->iscancelled()) break;
 | 
			
		||||
      update_firm(m);
 | 
			
		||||
      for (int m = 1; m <= _month; m++)  
 | 
			
		||||
        if (is_month_plain(m) || _recalc == ever)
 | 
			
		||||
        {               
 | 
			
		||||
          if (_prind->iscancelled()) break;
 | 
			
		||||
          update_firm(m);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      // calcola l'acconto
 | 
			
		||||
      if (look_lim(12))  //posiziona anche la tabella lam
 | 
			
		||||
      {                     
 | 
			
		||||
        // bc = result_liq(12);
 | 
			
		||||
        // somma i non fatturati/non annotati 
 | 
			
		||||
        // bc += inf + ina;           
 | 
			
		||||
        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
 | 
			
		||||
      _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
 | 
			
		||||
      _lim->put("B0","");
 | 
			
		||||
      _lim->rewrite();
 | 
			
		||||
      if (look_lim(13))  
 | 
			
		||||
      {
 | 
			
		||||
      _lim->put("B0","");
 | 
			
		||||
      _lim->rewrite();
 | 
			
		||||
      }
 | 
			
		||||
      //fine    
 | 
			
		||||
      _isprint = TRUE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  // calcola l'acconto
 | 
			
		||||
  if (look_lim(12))  //posiziona anche la tabella lam
 | 
			
		||||
  // sbatti l'acconto (e non solo!) in LIA
 | 
			
		||||
  if (look_lia())
 | 
			
		||||
  {
 | 
			
		||||
    // bc = result_liq(12);
 | 
			
		||||
    // somma i non fatturati/non annotati 
 | 
			
		||||
    // bc += inf + ina;           
 | 
			
		||||
    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 (isdifferita && _basecalc == incorso)
 | 
			
		||||
    {
 | 
			
		||||
      if (plm.curr() != rec) break;
 | 
			
		||||
      iva_pro += plm.get_real("R2");
 | 
			
		||||
      acc *= real(2.0);
 | 
			
		||||
      acc /= real(3.0);
 | 
			
		||||
    }
 | 
			
		||||
    //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
 | 
			
		||||
    _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();
 | 
			
		||||
  }
 | 
			
		||||
  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
 | 
			
		||||
  _lim->put("B0","");
 | 
			
		||||
  _lim->rewrite();
 | 
			
		||||
  if (look_lim(13))  
 | 
			
		||||
  {
 | 
			
		||||
   _lim->put("B0","");
 | 
			
		||||
   _lim->rewrite();
 | 
			
		||||
  }
 | 
			
		||||
  //fine    
 | 
			
		||||
  _isprint = TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// sbatti l'acconto (e non solo!) in LIA
 | 
			
		||||
if (look_lia())
 | 
			
		||||
{
 | 
			
		||||
  if (isdifferita && _basecalc == incorso)
 | 
			
		||||
  {
 | 
			
		||||
    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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*** Non bisogna aggiornare la delega
 | 
			
		||||
     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
 | 
			
		||||
if (_isprint)
 | 
			
		||||
{
 | 
			
		||||
  if (_isprint)
 | 
			
		||||
  {
 | 
			
		||||
  // segnalazioni di errore da gesticolare: 
 | 
			
		||||
  // error = 0: no error
 | 
			
		||||
  // error = 1: manca tabella risultati liquidazione per l'anno indicato
 | 
			
		||||
  // error = 2: manca tabella risultati liquidazione per l'anno precedente  
 | 
			
		||||
  // error = 3: manca tabella dichiarazione annuale  per l'anno precedente
 | 
			
		||||
  _DescrItem* d = new _DescrItem(ACCONTO);
 | 
			
		||||
  d->_r0 = bc;
 | 
			
		||||
  d->_r1 = acc;
 | 
			
		||||
  d->_r2 = cre;
 | 
			
		||||
  d->_r3 = deb;
 | 
			
		||||
  d->_f0 = _basecalc == incorso;
 | 
			
		||||
  d->_f1 = _isbase;
 | 
			
		||||
  d->_f2 = error;
 | 
			
		||||
  d->_f3 = isdifferita;
 | 
			
		||||
  d->_s0 = _nditte->curr().get("CODDITTA");
 | 
			
		||||
  d->_s1 = _nditte->curr().get("RAGSOC");
 | 
			
		||||
  _descr_arr.add(d);
 | 
			
		||||
}  
 | 
			
		||||
return TRUE;
 | 
			
		||||
    _DescrItem* d = new _DescrItem(ACCONTO);
 | 
			
		||||
    d->_r0 = bc;
 | 
			
		||||
    d->_r1 = acc;
 | 
			
		||||
    d->_r2 = cre;
 | 
			
		||||
    d->_r3 = deb;
 | 
			
		||||
    d->_f0 = _basecalc == incorso;
 | 
			
		||||
    d->_f1 = _isbase;
 | 
			
		||||
    d->_f2 = error;
 | 
			
		||||
    d->_f3 = isdifferita;
 | 
			
		||||
    d->_s0 = _nditte->curr().get("CODDITTA");
 | 
			
		||||
    d->_s1 = _nditte->curr().get("RAGSOC");
 | 
			
		||||
    _descr_arr.add(d);
 | 
			
		||||
  }  
 | 
			
		||||
  return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user