Patch level : 12.0 1032
Files correlati : cg5.exe Commento : Corretto salvataggio versamenti a saldo di dicembre e scorporo interessi sui versamenti dei trimestrali.
This commit is contained in:
		
							parent
							
								
									e5c7066e37
								
							
						
					
					
						commit
						802beb8639
					
				@ -398,7 +398,7 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k)
 | 
				
			|||||||
		if (sh.items() == 5)
 | 
							if (sh.items() == 5)
 | 
				
			||||||
			month *= 3;
 | 
								month *= 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (month >13)
 | 
							if (month > 13)
 | 
				
			||||||
			month = 13;
 | 
								month = 13;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sm.is_running() && !sm.stop_run(K_ENTER))
 | 
							if (sm.is_running() && !sm.stop_run(K_ENTER))
 | 
				
			||||||
@ -426,7 +426,7 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		app().set_liq_rows(sh);
 | 
							app().set_liq_rows(sh);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sm.is_running())
 | 
							/*if (sm.is_running())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// TBC controllare se sono i dati giusti in tt
 | 
								// TBC controllare se sono i dati giusti in tt
 | 
				
			||||||
			sm.field(S_RISULTATO).set(tt.get(cid2index(S_RISULTATO)));
 | 
								sm.field(S_RISULTATO).set(tt.get(cid2index(S_RISULTATO)));
 | 
				
			||||||
@ -450,7 +450,7 @@ bool Visliq_app::sel_mese_sh1 (TMask_field& f, KEY k)
 | 
				
			|||||||
			sv.set_row_cell(S_CONC, app().del()->get("S9"), nrow);
 | 
								sv.set_row_cell(S_CONC, app().del()->get("S9"), nrow);
 | 
				
			||||||
			sv.set_row_cell(S_VERSAMENTO, app().del()->get("R0"), nrow);
 | 
								sv.set_row_cell(S_VERSAMENTO, app().del()->get("R0"), nrow);
 | 
				
			||||||
			sv.force_update(nrow);
 | 
								sv.force_update(nrow);
 | 
				
			||||||
		}
 | 
							}*/
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -548,28 +548,24 @@ bool Visliq_app::sel_mese_sh2 (TMask_field& f, KEY k)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
bool Visliq_app::calc_int(TMask_field& f, KEY k)
 | 
					bool Visliq_app::calc_int(TMask_field& f, KEY k)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  if (k == K_TAB && f.dirty())
 | 
					  if (f.running_check(k) && app()._freqviva == "T")
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
	TSheet_field& sv = *app()._vers_sheet;
 | 
						  TSheet_field& sv = *app()._vers_sheet;
 | 
				
			||||||
 | 
						  const int sel = sv.selected();
 | 
				
			||||||
 | 
						  int m = (sv.selected() + 1) * 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int sel = sv.selected();
 | 
					    if (m > 12)
 | 
				
			||||||
	int m = sv.selected() + 1;
 | 
					      m = 12;
 | 
				
			||||||
	if (sv.items() < 12)
 | 
					    if (app().look_lim(m))
 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
	  m *= 3;
 | 
					 | 
				
			||||||
	  if (app().look_lim(m))
 | 
					 | 
				
			||||||
	  {
 | 
						  {
 | 
				
			||||||
		const real intt = app()._lim->get_real("R10");
 | 
							  const real intt = app()._lim->get_real("R10");
 | 
				
			||||||
 | 
					      TExchange c;
 | 
				
			||||||
		if (intt > ZERO) // interessi
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
		  TExchange c;
 | 
					 | 
				
			||||||
		  real vers(f.get());
 | 
							  real vers(f.get());
 | 
				
			||||||
		  real vers_netto = vers * CENTO / (intt + CENTO);
 | 
							  real vers_netto = vers * CENTO / (intt + CENTO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		  vers_netto.round(c.decimals());
 | 
							  vers_netto.round(c.decimals());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	      real intr = vers - vers_netto;
 | 
					      real intr = vers - vers_netto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		  round_imposta(intr);
 | 
							  round_imposta(intr);
 | 
				
			||||||
		  vers = vers_netto + intr;
 | 
							  vers = vers_netto + intr;
 | 
				
			||||||
@ -581,9 +577,7 @@ bool Visliq_app::calc_int(TMask_field& f, KEY k)
 | 
				
			|||||||
			sv.set_row_cell(row, S_VERSAMENTO, vers);
 | 
								sv.set_row_cell(row, S_VERSAMENTO, vers);
 | 
				
			||||||
			sv.set_row_cell(row, S_INTERESSI, intr);
 | 
								sv.set_row_cell(row, S_INTERESSI, intr);
 | 
				
			||||||
			sv.force_update(sel);
 | 
								sv.force_update(sel);
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	  }
 | 
						  }
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -926,7 +920,7 @@ bool Visliq_app::vis_one(int m)
 | 
				
			|||||||
    if (k == K_SAVE) 
 | 
					    if (k == K_SAVE) 
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); }
 | 
					      { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); }
 | 
				
			||||||
      if (d_mod) { write_del(m); }
 | 
					      if (d_mod) { write_del(m, 1); }
 | 
				
			||||||
      l_mod = d_mod = false;   
 | 
					      l_mod = d_mod = false;   
 | 
				
			||||||
      recorded = true;   
 | 
					      recorded = true;   
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -938,7 +932,7 @@ bool Visliq_app::vis_one(int m)
 | 
				
			|||||||
        if (kk == K_YES)
 | 
					        if (kk == K_YES)
 | 
				
			||||||
        {    
 | 
					        {    
 | 
				
			||||||
          if (l_mod) { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); }
 | 
					          if (l_mod) { write_liq(); recalc_next_liq(m, _liq_sheet, _vers_sheet); }
 | 
				
			||||||
          if (d_mod) { write_del(m); }  
 | 
					          if (d_mod) { write_del(m, 1); }  
 | 
				
			||||||
          l_mod = d_mod = false;   
 | 
					          l_mod = d_mod = false;   
 | 
				
			||||||
          recorded = true;
 | 
					          recorded = true;
 | 
				
			||||||
        } 
 | 
					        } 
 | 
				
			||||||
@ -1139,9 +1133,9 @@ void Visliq_app::recalc_liq_data(TViswin* vsw, real& rimb, real& rett, real& ver
 | 
				
			|||||||
    _lim->put("B0", "X");
 | 
					    _lim->put("B0", "X");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
  real intr;
 | 
					  real intr = itt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (!itt.is_zero() && risul > ZERO)
 | 
					  if (_freqviva == "T" && itt != ZERO && risul > ZERO)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    // calcola interesse
 | 
					    // calcola interesse
 | 
				
			||||||
    intr = risul * itt / CENTO;
 | 
					    intr = risul * itt / CENTO;
 | 
				
			||||||
@ -1472,13 +1466,14 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field
 | 
				
			|||||||
      _lim->put("R0",  risl);
 | 
					      _lim->put("R0",  risl);
 | 
				
			||||||
      _lim->put("R12", risc);
 | 
					      _lim->put("R12", risc);
 | 
				
			||||||
      _lim->put("R13", risd);
 | 
					      _lim->put("R13", risd);
 | 
				
			||||||
      if (intt > ZERO) // interessi
 | 
					      if (_freqviva == "T" && intt > ZERO) // interessi
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        real intr = risl * intt / real(100.0);
 | 
					        intt = risl * intt / CENTO;
 | 
				
			||||||
        if (_year >= 2000)
 | 
					        if (_year >= 2000)
 | 
				
			||||||
          round_imposta(intr);
 | 
					          round_imposta(intt);
 | 
				
			||||||
        _lim->put("R14",intr);
 | 
					
 | 
				
			||||||
      }  
 | 
					      }  
 | 
				
			||||||
 | 
					      _lim->put("R14", intt);
 | 
				
			||||||
      _lim->put("R16", crf24);
 | 
					      _lim->put("R16", crf24);
 | 
				
			||||||
      _lim->put("R20", autf24);
 | 
					      _lim->put("R20", autf24);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1563,36 +1558,23 @@ void Visliq_app::recalc_next_liq(int start_month, TSheet_field* sl, TSheet_field
 | 
				
			|||||||
  look_lim(start_month);
 | 
					  look_lim(start_month);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Visliq_app::write_del(const int month, const char * codabi, const char * codcab, const char * codcon,
 | 
					void Visliq_app::write_del(const int month, const int tipodel, const char * codabi, const char * codcab, const char * codcon,
 | 
				
			||||||
	                         const TDate & d, const real& v, const real& i, bool stampato)
 | 
						                         const TDate & d, const real& v, const real& i, bool stampato)
 | 
				
			||||||
{ 
 | 
					{ 
 | 
				
			||||||
	int tipodel = 1;
 | 
						const bool wasdel = look_del(month, tipodel, true);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (month == 12)
 | 
					 | 
				
			||||||
		tipodel = 7;
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		if (month == 13)
 | 
					 | 
				
			||||||
			tipodel = 2;
 | 
					 | 
				
			||||||
	const bool wasdel = look_del(month, tipodel);
 | 
					 | 
				
			||||||
  TString8 abi(codabi == nullptr ?	_lim->get("S4") : codabi);
 | 
					  TString8 abi(codabi == nullptr ?	_lim->get("S4") : codabi);
 | 
				
			||||||
  TString8 cab(codcab == nullptr ? _lim->get("S5") : codcab);
 | 
					  TString8 cab(codcab == nullptr ? _lim->get("S5") : codcab);
 | 
				
			||||||
  TString4 con(codcon == nullptr ? _lim->get("S6") : codcon);
 | 
					  TString4 con(codcon == nullptr ? _lim->get("S6") : codcon);
 | 
				
			||||||
  TDate  date(d == TDate(NULLDATE) ? _lim->get_date("D0") : d);
 | 
					  TDate  date(d == TDate(NULLDATE) ? _lim->get_date("D0") : d);
 | 
				
			||||||
	const real vers(v >= ZERO ? v : _lim->get_real("R8"));
 | 
						const real vers(v >= ZERO ? v : _lim->get_real("R8"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!wasdel)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		look_del(month, tipodel, true);  // Crea delega
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (vers == ZERO)
 | 
						if (vers == ZERO)
 | 
				
			||||||
			_del->remove();
 | 
								_del->remove();
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		real inter = i;
 | 
							real inter = i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (i == ZERO)
 | 
							if (_freqviva == "T" && i == ZERO)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			real percint = _lim->get_real("R10");
 | 
								real percint = _lim->get_real("R10");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1731,26 +1713,24 @@ void Visliq_app::read_general(TMask& m)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			// uso solo deleghe normali (tipo == 1), annuali (tipo == 2) e acconti (tipo == 7)                              
 | 
								// uso solo deleghe normali (tipo == 1), annuali (tipo == 2) e acconti (tipo == 7)                              
 | 
				
			||||||
			int tipod = atoi(*_del_tipo);
 | 
								int tipod = atoi(*_del_tipo);
 | 
				
			||||||
 | 
					      // somma versamenti nel mese adeguato  
 | 
				
			||||||
 | 
					      int month = atoi(*_del_mese);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (tipod < 3 || tipod == 7)
 | 
								if (tipod == 1 || tipod == 7)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 | 
									if (month >= 12)
 | 
				
			||||||
				// somma versamenti nel mese adeguato  
 | 
										month = tipod == 7 ? 12 : 13;
 | 
				
			||||||
				int m = atoi(*_del_mese);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if (m >= 12)
 | 
					 | 
				
			||||||
					m = tipod == 7 ? 12 : 13;
 | 
					 | 
				
			||||||
				// supercauto
 | 
									// supercauto
 | 
				
			||||||
				if (m > 0)
 | 
									if (month > 0)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					versamenti[m - 1] += _del->get_real("R0");
 | 
										versamenti[month - 1] += _del->get_real("R0");
 | 
				
			||||||
					interessi[m - 1] += _del->get_real("R1");
 | 
										interessi[month - 1] += _del->get_real("R1");
 | 
				
			||||||
					date[m - 1] = _del->get_date("D0");
 | 
										date[month - 1] = _del->get_date("D0");
 | 
				
			||||||
					TToken_string& b = banche[m - 1];
 | 
										TToken_string& b = banche[month - 1];
 | 
				
			||||||
					b.add(_del->get("S7"), 0);
 | 
										b.add(_del->get("S7"), 0);
 | 
				
			||||||
					b.add(_del->get("S8"), 1);
 | 
										b.add(_del->get("S8"), 1);
 | 
				
			||||||
					b.add(_del->get("S9"), 2);
 | 
										b.add(_del->get("S9"), 2);
 | 
				
			||||||
					stampato[m - 1] = _del->get_bool("B0");
 | 
										stampato[month - 1] = _del->get_bool("B0");
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@ -1833,7 +1813,7 @@ void Visliq_app::write_general(TMask& m)
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  for (int i = step; i < last_month; i += step)
 | 
					  for (int i = step; i < last_month; i += step)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
		int m = (i > 12) ? 13 : i;
 | 
							int m = (i > 12) ? 12 : i;
 | 
				
			||||||
    // this is a true bordel                            
 | 
					    // this is a true bordel                            
 | 
				
			||||||
    const int row = (i/step) - 1;    
 | 
					    const int row = (i/step) - 1;    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@ -1890,7 +1870,9 @@ void Visliq_app::write_general(TMask& m)
 | 
				
			|||||||
    if (ndbcr == "C") nrett = -nrett;
 | 
					    if (ndbcr == "C") nrett = -nrett;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    // acconto (si considererà solo a dicembre)
 | 
					    // acconto (si considererà solo a dicembre)
 | 
				
			||||||
    
 | 
					// crea/aggiorna le deleghe
 | 
				
			||||||
 | 
					    if (nvers != overs || nint != oint || ndate != odate || nabi != oabi || ncab != ocab || ncon != ocon || osta != nsta)
 | 
				
			||||||
 | 
					      write_del(m, i == 12 ? 7 : 1, nabi, ncab, ncon, ndate, nvers, nint, nsta);
 | 
				
			||||||
		was_lim = look_lim(m);      
 | 
							was_lim = look_lim(m);      
 | 
				
			||||||
    if (!was_lim)
 | 
					    if (!was_lim)
 | 
				
			||||||
      carry = false; // blocca riporto crediti e debiti
 | 
					      carry = false; // blocca riporto crediti e debiti
 | 
				
			||||||
@ -1916,8 +1898,6 @@ void Visliq_app::write_general(TMask& m)
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
// ricalcola versamenti se occorre 
 | 
					// ricalcola versamenti se occorre 
 | 
				
			||||||
// e crea/aggiorna le deleghe
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if (nvers != overs || nint != oint|| ndate != odate || nabi != oabi || ncab != ocab || ncon != ocon || osta != nsta)
 | 
								if (nvers != overs || nint != oint|| ndate != odate || nabi != oabi || ncab != ocab || ncon != ocon || osta != nsta)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
		 		_lim->put("R8", nvers);
 | 
							 		_lim->put("R8", nvers);
 | 
				
			||||||
@ -1929,9 +1909,7 @@ void Visliq_app::write_general(TMask& m)
 | 
				
			|||||||
				_lim->put("S4", nabi);
 | 
									_lim->put("S4", nabi);
 | 
				
			||||||
				_lim->put("S5", ncab);
 | 
									_lim->put("S5", ncab);
 | 
				
			||||||
				_lim->put("S6", ncon);
 | 
									_lim->put("S6", ncon);
 | 
				
			||||||
				write_del(m, nabi, ncab, ncon, ndate, nvers, nint, nsta);
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
      // se modificate rettifiche 
 | 
					      // se modificate rettifiche 
 | 
				
			||||||
      // sistemare
 | 
					      // sistemare
 | 
				
			||||||
      if (nrett != orett && !_from_one)
 | 
					      if (nrett != orett && !_from_one)
 | 
				
			||||||
@ -2032,13 +2010,14 @@ void Visliq_app::write_general(TMask& m)
 | 
				
			|||||||
      _lim->put("R12", risc);
 | 
					      _lim->put("R12", risc);
 | 
				
			||||||
      _lim->put("R13", risd);
 | 
					      _lim->put("R13", risd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (intt > ZERO) // interessi
 | 
					      if (_freqviva == "T" && intt > ZERO) // interessi
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        real intr = risl * intt / real(100.0);
 | 
					        intt = risl * intt / CENTO;
 | 
				
			||||||
        if (_year >= 2000)
 | 
					        if (_year >= 2000)
 | 
				
			||||||
          round_imposta(intr);
 | 
					          round_imposta(intt);
 | 
				
			||||||
        _lim->put("R14",intr);
 | 
					
 | 
				
			||||||
      }  
 | 
					      }  
 | 
				
			||||||
 | 
					      _lim->put("R14", intt);
 | 
				
			||||||
      _lim->put("R16", crf24);
 | 
					      _lim->put("R16", crf24);
 | 
				
			||||||
      _lim->put("R20", autf24);
 | 
					      _lim->put("R20", autf24);
 | 
				
			||||||
      _lim->put("D1", dautf24);
 | 
					      _lim->put("D1", dautf24);
 | 
				
			||||||
 | 
				
			|||||||
@ -87,7 +87,7 @@ public:
 | 
				
			|||||||
  void read_general(TMask& m);
 | 
					  void read_general(TMask& m);
 | 
				
			||||||
  void write_general(TMask& m);
 | 
					  void write_general(TMask& m);
 | 
				
			||||||
  void write_liq() { _lim->rewrite();	}
 | 
					  void write_liq() { _lim->rewrite();	}
 | 
				
			||||||
  void write_del(const int month, const char * codabi = nullptr, const char * codcab = nullptr, const char * codcon = nullptr, 
 | 
					  void write_del(const int month, const int tipodel, const char * codabi = nullptr, const char * codcab = nullptr, const char * codcon = nullptr, 
 | 
				
			||||||
		             const TDate & d = TDate(NULLDATE), const real &v = MENOUNO, const real &i = ZERO, bool stampato = false);
 | 
							             const TDate & d = TDate(NULLDATE), const real &v = MENOUNO, const real &i = ZERO, bool stampato = false);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  void set_freqviva();                          
 | 
					  void set_freqviva();                          
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user