Skudlerations
git-svn-id: svn://10.65.10.50/trunk@910 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									9fb1deb9da
								
							
						
					
					
						commit
						fbe1a7d7f3
					
				
							
								
								
									
										11
									
								
								cg/cg4300.h
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								cg/cg4300.h
									
									
									
									
									
								
							@ -172,7 +172,9 @@ class TLiquidazione_app : public TPrint_application
 | 
			
		||||
  bool       _isbenzinaro;     // regime benzinaro
 | 
			
		||||
  bool       _isannual;        // dichiarazione annuale
 | 
			
		||||
  bool       _mixed;           // attivita' mista 
 | 
			
		||||
  bool       _isriepilogo;     // 13a liq
 | 
			
		||||
  bool       _isriepilogo;     // 13a liq   
 | 
			
		||||
  bool       _isannual_12;     // annuale con mese = 12 (trimestre)
 | 
			
		||||
  bool       _isendliq;        // annuale o riepilogo
 | 
			
		||||
  bool       _isservizio;      // servizi, professionisti, artisti
 | 
			
		||||
  bool       _isrimborso;      // vuole il rimborso infraannuale
 | 
			
		||||
  bool       _isricacq;        // ricalcolo imposte acq. riv (par. ditta)
 | 
			
		||||
@ -302,6 +304,7 @@ public:
 | 
			
		||||
  bool update_firm   (int month, bool recalc = TRUE);
 | 
			
		||||
  bool update_att    (int month, const char* codatt, bool recalc = TRUE);
 | 
			
		||||
  void zero_att      (int month, const char* codatt);
 | 
			
		||||
  void zero_annual   (int month);
 | 
			
		||||
  void recalc_att    (int month, const char* codatt);
 | 
			
		||||
  void recalc_annual (const char* codatt);
 | 
			
		||||
  _DescrItem* recalc_rimborso(int month, const char* codatts);
 | 
			
		||||
@ -400,7 +403,8 @@ public:
 | 
			
		||||
  static bool is_trim (int x);
 | 
			
		||||
  // is_month_ok controlla che il mese passato sia
 | 
			
		||||
  // da prendere in considerazione per la liquidazione 
 | 
			
		||||
  // controllando il regime trimestrale o mensile
 | 
			
		||||
  // controllando il regime trimestrale o mensile e 
 | 
			
		||||
  // il ricalcolo annuale
 | 
			
		||||
  bool is_month_ok(int x, int mtocalc);
 | 
			
		||||
  // is_month_ok_strict controlla che il mese sia OK per la
 | 
			
		||||
  // liquidazione, ma ritorna TRUE per le trimestrali solo
 | 
			
		||||
@ -408,8 +412,9 @@ public:
 | 
			
		||||
  bool is_month_ok_strict(int x, int month = -1);
 | 
			
		||||
  bool is_date_ok     (TDate& d, int month);
 | 
			
		||||
  bool is_first_month (int m);
 | 
			
		||||
  int  liq_month(int x);
 | 
			
		||||
 | 
			
		||||
  int  previous_month (int m);
 | 
			
		||||
  bool check_month(int m, int mref);
 | 
			
		||||
  
 | 
			
		||||
  // Funzioni accessorie: estrazione deleghe
 | 
			
		||||
  bool set_deleghe();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										384
									
								
								cg/cg4301.cpp
									
									
									
									
									
								
							
							
						
						
									
										384
									
								
								cg/cg4301.cpp
									
									
									
									
									
								
							@ -38,26 +38,62 @@ bool TLiquidazione_app::recalc_all()
 | 
			
		||||
    if (_selected[(long)l])
 | 
			
		||||
    {                                     
 | 
			
		||||
      TToken_string& nomeditta = _ditte->row(l);
 | 
			
		||||
 | 
			
		||||
      int save_month = _month;
 | 
			
		||||
      
 | 
			
		||||
      /* -------------------------------------------------------------
 | 
			
		||||
       * leggi parametri ditta necessari; stabilisci se annuale, 
 | 
			
		||||
       * se si' metti _month a 13
 | 
			
		||||
       *   istanzia _freqviva, _isbenzinaro, _isannual, _isriepilogo
 | 
			
		||||
       * --------------------------------------------------------------
 | 
			
		||||
       */
 | 
			
		||||
      
 | 
			
		||||
      _nditte->zero(); 
 | 
			
		||||
      _nditte->curr().put("CODDITTA",nomeditta.get_long(1));
 | 
			
		||||
      _nditte->read();
 | 
			
		||||
      _nditte->read(); 
 | 
			
		||||
      _freqviva = nomeditta.get(3);
 | 
			
		||||
      bool   mens  = _freqviva == "M"; 
 | 
			
		||||
 | 
			
		||||
      // determina attivita' prevalente e istanzia cazzuole
 | 
			
		||||
      // per vedere che Kazzo di liquidazione calcolare
 | 
			
		||||
      TString attprev = _nditte->curr().get("CODATTPREV");
 | 
			
		||||
      TLocalisamfile& atts = _nditte->lfile(LF_ATTIV);
 | 
			
		||||
      atts.zero();
 | 
			
		||||
      atts.put("CODDITTA",nomeditta.get_long(1));
 | 
			
		||||
      atts.put("CODATT",  attprev);
 | 
			
		||||
      if (atts.read() != NOERR) atts.zero();
 | 
			
		||||
      // istanzia benzinaro
 | 
			
		||||
      _isbenzinaro = atts.get_bool("ART74/4");
 | 
			
		||||
      
 | 
			
		||||
      // riaggiusta relazione
 | 
			
		||||
      _nditte->read();               
 | 
			
		||||
      
 | 
			
		||||
      // decidi per stocazzo di annuale
 | 
			
		||||
      // per QUALSIASI annuale il mese diventa 13
 | 
			
		||||
      _isannual    = (_month == 12 && !mens && !_isbenzinaro) || 
 | 
			
		||||
                     (_month == 13 && (mens || _isbenzinaro));    
 | 
			
		||||
      _isriepilogo = _month == 13 && !mens;               
 | 
			
		||||
      if (_isannual) _month = 13;  // che ti piaccia o no
 | 
			
		||||
      
 | 
			
		||||
      
 | 
			
		||||
      TApplication::set_firm(nomeditta.get_long(1));
 | 
			
		||||
      _prind->addstatus(1);              
 | 
			
		||||
      
 | 
			
		||||
      _freqviva = nomeditta.get(3);
 | 
			
		||||
      /*
 | 
			
		||||
       * trimestrali impropriamente selezionate per mesi intermedi
 | 
			
		||||
       * provocano il ricalcolo dei progressivi mensili ma non la stampa    
 | 
			
		||||
       */
 | 
			
		||||
      _canprint = is_month_ok_strict(_month);
 | 
			
		||||
      _canprint = is_month_ok_strict(_month) || _month == 13;
 | 
			
		||||
 | 
			
		||||
      /* --------------------------------------------------------------
 | 
			
		||||
       * Ricalcola i mesi necessari, tutti se annuale
 | 
			
		||||
       * --------------------------------------------------------------
 | 
			
		||||
       */
 | 
			
		||||
 | 
			
		||||
      int need_refresh = FALSE;
 | 
			
		||||
      if (_recalc != ever)
 | 
			
		||||
      { 
 | 
			
		||||
        for (int m = 1; m < _month; m++)
 | 
			
		||||
          if (!look_lim(m) || !_lim->get_bool("B0"))
 | 
			
		||||
          if (is_month_ok_strict(m) && (!look_lim(m) || !_lim->get_bool("B0")))
 | 
			
		||||
          {
 | 
			
		||||
             need_refresh = TRUE; 
 | 
			
		||||
             break;
 | 
			
		||||
@ -69,11 +105,10 @@ bool TLiquidazione_app::recalc_all()
 | 
			
		||||
            _recalc = ever;
 | 
			
		||||
       }         
 | 
			
		||||
      
 | 
			
		||||
       for (int m = 1; m <= _month; m++)
 | 
			
		||||
       for (int m = 1; m <= _month; m++)   // fino a 13 compreso
 | 
			
		||||
         if (is_month_ok(m, _month) || _recalc == ever)
 | 
			
		||||
         {               
 | 
			
		||||
           if (_prind->iscancelled())  
 | 
			
		||||
             break;
 | 
			
		||||
           if (_prind->iscancelled()) break;
 | 
			
		||||
           update_firm(m);
 | 
			
		||||
         }
 | 
			
		||||
      
 | 
			
		||||
@ -81,11 +116,13 @@ bool TLiquidazione_app::recalc_all()
 | 
			
		||||
      // flag 'calcolato' del primo, per causare il ricalcolo dei
 | 
			
		||||
      // successivi (evitando problemi per credito precedente)
 | 
			
		||||
      for (m = _month+1; m <= 13; m++)
 | 
			
		||||
        if (is_month_ok_strict(m) && look_lim(m))
 | 
			
		||||
        if ((is_month_ok_strict(m) || m == 13) && look_lim(m))
 | 
			
		||||
        { 
 | 
			
		||||
          _lim->put("B0","");
 | 
			
		||||
          break; 
 | 
			
		||||
        }       
 | 
			
		||||
        } 
 | 
			
		||||
        
 | 
			
		||||
      _month = save_month;      
 | 
			
		||||
    }  
 | 
			
		||||
  }
 | 
			
		||||
  bool canc = _prind->iscancelled();
 | 
			
		||||
@ -105,7 +142,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
 | 
			
		||||
  // Ritorna FALSE soltanto se il ricalcolo era necessario e non e'
 | 
			
		||||
  // stato effettuato per scelta dello stronzo commercialista.
 | 
			
		||||
  
 | 
			
		||||
  look_lim(month, TRUE);
 | 
			
		||||
  look_lim(liq_month(month), TRUE);
 | 
			
		||||
  
 | 
			
		||||
  if (_isregis && _lim->get_bool("B1"))  
 | 
			
		||||
  	return TRUE;
 | 
			
		||||
@ -115,7 +152,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
 | 
			
		||||
  TConfig cnf1(CONFIG_STUDIO, "cg");
 | 
			
		||||
  _isricacq =    cnf1.get_bool("RicAcq");
 | 
			
		||||
 | 
			
		||||
  // ricalcolo normale
 | 
			
		||||
  // ricalcolo normale  
 | 
			
		||||
  // TBI lim c'e' solo per i trimestri
 | 
			
		||||
  bool ok   = _lim->get_bool("B0");
 | 
			
		||||
  if (ok && !recalc) return TRUE; 
 | 
			
		||||
  bool calc = (_recalc == ever || (_recalc == one && month == _month));
 | 
			
		||||
@ -153,10 +191,10 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
 | 
			
		||||
      
 | 
			
		||||
      for (int tipoatt = 1; tipoatt <= (_mixed ? 2 : 1); tipoatt++)
 | 
			
		||||
      {
 | 
			
		||||
        TString cattiv(codatt);
 | 
			
		||||
        TString cattiv(codatt); bool waspla;
 | 
			
		||||
        
 | 
			
		||||
        cattiv << tipoatt;
 | 
			
		||||
        if (tipoatt == 1 && look_pla(cattiv, FALSE))
 | 
			
		||||
        if (tipoatt == 1 && (waspla = look_pla(cattiv, FALSE)))
 | 
			
		||||
        {
 | 
			
		||||
          _p8          = _pla->get_real("R5");
 | 
			
		||||
          _p8b         = _pla->get_real("R6");
 | 
			
		||||
@ -165,27 +203,36 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
 | 
			
		||||
          _isplafond   = !(_p8.is_zero() && _p8b.is_zero() && 
 | 
			
		||||
                           _p9.is_zero());
 | 
			
		||||
          _isservizio  = _pla->get("S7") == "S";
 | 
			
		||||
          _mixed       = _pla->get("S7") == "M" || _pla->get("S7") == "E";
 | 
			
		||||
          _mixed       = _pla->get("S7") == "M" || _pla->get("S7") == "E";          
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
          _isservizio  = _nditte->curr(LF_ATTIV).get("TIPOATT") == "S";
 | 
			
		||||
 | 
			
		||||
        _isviaggio   = _nditte->curr(LF_ATTIV).get_bool("REG74TER");
 | 
			
		||||
        _isagricolo  = _nditte->curr(LF_ATTIV).get_bool("REGAGR");
 | 
			
		||||
        _isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
 | 
			
		||||
        bool   mens  = _freqviva == "M"; 
 | 
			
		||||
        _isannual    = (_month == 12 && !mens && !_isbenzinaro) || 
 | 
			
		||||
                       (_month == 13 && (mens || _isbenzinaro));
 | 
			
		||||
        _isriepilogo = _month == 13;        
 | 
			
		||||
        _isvent = FALSE;
 | 
			
		||||
        
 | 
			
		||||
        if (tipoatt == 1 && waspla && month == 13)
 | 
			
		||||
        {
 | 
			
		||||
          // azzera pla dove serve             
 | 
			
		||||
          _pla->put("R0","");
 | 
			
		||||
          _pla->put("R1","");
 | 
			
		||||
          _pla->put("R2","");
 | 
			
		||||
          _pla->put("R3","");
 | 
			
		||||
          _pla->put("R4","");
 | 
			
		||||
          _pla->put("S1","0|0");
 | 
			
		||||
          _pla->put("S2","0");
 | 
			
		||||
          _pla->put("S3","0");
 | 
			
		||||
          _pla->rewrite();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (_reg->first(); !_isvent && _reg->good(); _reg->next())
 | 
			
		||||
        {
 | 
			
		||||
          if (codatt == _reg->get("S8") && _reg->get_int("I0") == 2)
 | 
			
		||||
            _isvent = _reg->get_bool("B3");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ((month != 13 || _isannual) && (calc || !recalc))
 | 
			
		||||
        if (calc || !recalc)
 | 
			
		||||
          if (!update_att(month, cattiv))
 | 
			
		||||
            describe_error("Attivita' non ricalcolate: possibili errori",
 | 
			
		||||
                           codatt);        
 | 
			
		||||
@ -221,7 +268,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
 | 
			
		||||
    
 | 
			
		||||
    // aggiorna le liquidazioni
 | 
			
		||||
    if (calc || !recalc)
 | 
			
		||||
      write_liq(month, atts);
 | 
			
		||||
      if (is_month_ok_strict(month) || month == 13) 
 | 
			
		||||
         write_liq(month, atts);
 | 
			
		||||
    
 | 
			
		||||
    // rimborso infraannuale
 | 
			
		||||
    _DescrItem* rimb_d = NULL;
 | 
			
		||||
@ -260,11 +308,16 @@ bool TLiquidazione_app::update_att(int month, const char* codatt,
 | 
			
		||||
  {
 | 
			
		||||
    zero_att(month,codatt);            
 | 
			
		||||
    recalc_att(month,codatt);          
 | 
			
		||||
    recalc_ventilation(month, codatt); 
 | 
			
		||||
    recalc_corrispettivi(month, codatt); 
 | 
			
		||||
 | 
			
		||||
    if (month == 13)
 | 
			
		||||
     recalc_annual(codatt);
 | 
			
		||||
    else
 | 
			
		||||
    { 
 | 
			
		||||
      // nei PIM della 13a vanno solo alcune stranezze,
 | 
			
		||||
      // mi rifiuto di pensare che vadano ventilate
 | 
			
		||||
      // o corrispettivizzicizzate
 | 
			
		||||
      recalc_ventilation(month, codatt); 
 | 
			
		||||
      recalc_corrispettivi(month, codatt);  
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return ok || calc;  
 | 
			
		||||
}
 | 
			
		||||
@ -344,7 +397,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
			
		||||
  for (; _cur->pos() < items; ++(*_cur))
 | 
			
		||||
  {      
 | 
			
		||||
    TDate date(_mov_r->get("DATAREG"));
 | 
			
		||||
    TString16 reg     = _mov_r->get("REG");
 | 
			
		||||
    TString16 reg    = _mov_r->get("REG");
 | 
			
		||||
    bool isreg        = look_reg(_mov_r->get("REG"));
 | 
			
		||||
    TString16 tipodoc = _mov_r->get("TIPODOC");
 | 
			
		||||
    /*
 | 
			
		||||
@ -394,6 +447,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
			
		||||
 | 
			
		||||
      TString codiva     = _iva->get("CODTAB");
 | 
			
		||||
      TString tipoiva    = _iva->get("S1");
 | 
			
		||||
      TString riga11_v   = _iva->get("S0");
 | 
			
		||||
      int     tipoes_v   = (int)_iva->get_long("I3");
 | 
			
		||||
      int     tipoes_a   = (int)_iva->get_long("I4");
 | 
			
		||||
      int     tipoagr    = atoi(_iva->get("S4"));
 | 
			
		||||
@ -410,7 +464,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
			
		||||
      int     rigaimp    = _rmoviva->get_int("RIGAIMP");
 | 
			
		||||
      // autofatture art. 17 per non residenti, con trattamento
 | 
			
		||||
      // speciale in liquidazione annuale
 | 
			
		||||
      bool    autodafe = (tipodoc == "AF" && tipocr == 4);     
 | 
			
		||||
      bool    autodafe = (tipodoc == "AF" && tipocr == 4); 
 | 
			
		||||
      // validi per calcolo volume di affari settano
 | 
			
		||||
      // flag che va in B2 di pim    
 | 
			
		||||
      bool    isvolaff = (tipomov == vendita && tipocr != 4  &&
 | 
			
		||||
                         tipoiva != "NS" && tipoiva != "ES" && 
 | 
			
		||||
                         !(tipoiva == "ES" && 
 | 
			
		||||
                          (riga11_v == "B3" || riga11_v.empty())));
 | 
			
		||||
      
 | 
			
		||||
      /*
 | 
			
		||||
       * puo' capitare per motivi brutalmente prassici
 | 
			
		||||
@ -427,17 +487,22 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
			
		||||
      if(rigaimp > 9) continue;                               
 | 
			
		||||
 | 
			
		||||
      /*
 | 
			
		||||
       * In liq. annuale si totalizzano nelle vendite
 | 
			
		||||
       * In liq. annuale si totalizzano
 | 
			
		||||
       * solo le stranezze che seguono
 | 
			
		||||
       */
 | 
			
		||||
      if (month == 13 && tipomov == vendita &&
 | 
			
		||||
          (!rcs.get_bool("AUTOFATT") && tipoiva != "NS"))
 | 
			
		||||
      {   
 | 
			
		||||
        if (tipodoc == "AF" || 
 | 
			
		||||
            (!rcs.get_bool("INTRACOM") && !rcs.get_bool("VALINTRA")))
 | 
			
		||||
          continue;
 | 
			
		||||
      }
 | 
			
		||||
      
 | 
			
		||||
      if (month == 13)
 | 
			
		||||
      {         
 | 
			
		||||
         // si contano soltanto le vendite.
 | 
			
		||||
         bool okc = tipomov == vendita;  
 | 
			
		||||
         // purche' ...
 | 
			
		||||
         bool cond1 = (rcs.get_bool("AUTOFATT") && tipoiva == "NS" && tipodoc == "AF");
 | 
			
		||||
         // oppure ... 
 | 
			
		||||
         bool cond2 = (rcs.get_bool("AUTOFATT") && tipoiva == "NS" && tipodoc != "AF" &&
 | 
			
		||||
                       rcs.get_bool("INTRACOM") && rcs.get_bool("VALINTRA"));
 | 
			
		||||
         if (!(okc && (cond1 || cond2)))
 | 
			
		||||
           continue;
 | 
			
		||||
      } 
 | 
			
		||||
       
 | 
			
		||||
      // ***************************************** 
 | 
			
		||||
      // casi particolari
 | 
			
		||||
      // ***************************************** 
 | 
			
		||||
@ -679,19 +744,19 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
			
		||||
         */
 | 
			
		||||
        if (tipodoc == "CR" || tipodoc == "RF" || tipodoc == "SC")
 | 
			
		||||
        {
 | 
			
		||||
            _pim_r->put("I0",LORDO);
 | 
			
		||||
          // questi sono corrispettivi davvero; comportamento normale 
 | 
			
		||||
          if (tipoiva == "VE")   // da ventilare
 | 
			
		||||
          {
 | 
			
		||||
            lor += imponibile;
 | 
			
		||||
            _pim_r->put("I0",LORDO);
 | 
			
		||||
            add_vendite(month, reg, tipodet, imponibile);
 | 
			
		||||
          }                    
 | 
			
		||||
          else // non da ventilare, con imposta gia' conteggiata
 | 
			
		||||
          {
 | 
			
		||||
            real perc = _iva->get_real("R0") / CENTO;
 | 
			
		||||
            real perc = _iva->get_real("R0")/CENTO;
 | 
			
		||||
            lor += imponibile + imposta;
 | 
			
		||||
            _pim_r->put("I0",LORDO);
 | 
			
		||||
            if (liq) add_corrisp(month, reg, imponibile, perc, tipodet, codiva);
 | 
			
		||||
            if (liq) 
 | 
			
		||||
              add_corrisp(month, reg, imponibile, perc, tipodet, codiva);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      else if (tipodoc == "FS")
 | 
			
		||||
@ -756,6 +821,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
 | 
			
		||||
        adi += imposta;      	
 | 
			
		||||
      }                  
 | 
			
		||||
      
 | 
			
		||||
      _pim_r->put("B2",isvolaff);
 | 
			
		||||
      _pim_r->put("R0",imp);
 | 
			
		||||
      _pim_r->put("R1",ivp);
 | 
			
		||||
      _pim_r->put("R2",lor);   
 | 
			
		||||
@ -907,7 +973,14 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
  real a_meCEE      = 0.0;   
 | 
			
		||||
  real cred_cost    = 0.0;
 | 
			
		||||
  real deb_mens     = 0.0;
 | 
			
		||||
  real perc_r       = 0.0;    
 | 
			
		||||
  real perc_r       = 0.0;       
 | 
			
		||||
  
 | 
			
		||||
  // totali per annuali
 | 
			
		||||
  real vol_aff_1    = 0.0;
 | 
			
		||||
  real vol_aff_2    = 0.0;
 | 
			
		||||
  real vol_aff_t    = 0.0;
 | 
			
		||||
  real vol_aff_l    = 0.0;
 | 
			
		||||
  real tot_cong     = 0.0;
 | 
			
		||||
  
 | 
			
		||||
  bool differita = FALSE;
 | 
			
		||||
  int attc = 0; // counter attivita'
 | 
			
		||||
@ -953,7 +1026,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
    }                             
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      for (int m = 1; m <= 12; m++)
 | 
			
		||||
      for (int m = 1; m <= 13; m++)
 | 
			
		||||
      {                             
 | 
			
		||||
        // ciclo su tutti i mesi del caso (1 o 3;
 | 
			
		||||
        // tutti se annuale)
 | 
			
		||||
@ -1012,8 +1085,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
          // benzinaro le conta solo in annuale, 
 | 
			
		||||
          // non benzinaro solo in periodica    
 | 
			
		||||
          // TBC vedi se distinguere rett. benzinai / autotrasport,
 | 
			
		||||
          if ((_isbenzinaro && month == 13) || 
 | 
			
		||||
              (!_isbenzinaro && month < 13))  
 | 
			
		||||
          if ((_isbenzinaro && _isannual) || 
 | 
			
		||||
              (!_isbenzinaro && !_isannual))  
 | 
			
		||||
          {
 | 
			
		||||
            risultato  += _lim->get_real("R5"); 
 | 
			
		||||
            rettifiche += _lim->get_real("R5"); 
 | 
			
		||||
@ -1036,10 +1109,10 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
          a_mCEE  += _plm->get_real("R10");
 | 
			
		||||
          a_meCEE += _plm->get_real("R11");   
 | 
			
		||||
        }        
 | 
			
		||||
        // counter attivita' per evitare troppi versamenti
 | 
			
		||||
        attc++; 
 | 
			
		||||
      } // fine ciclo sul mese       
 | 
			
		||||
    } 
 | 
			
		||||
      } // fine ciclo sul mese  
 | 
			
		||||
      // counter attivita' per evitare troppi versamenti
 | 
			
		||||
      attc++;                                           
 | 
			
		||||
    } // fine ciclo su attivita'
 | 
			
		||||
    
 | 
			
		||||
    if (!(_isdifferita && is_first_month(month)))
 | 
			
		||||
    {   
 | 
			
		||||
@ -1091,6 +1164,77 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
      res_cred  +=  cred_prec;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (month == 13)
 | 
			
		||||
  {
 | 
			
		||||
    // totalizza volumi affari e calcola nuovo prorata
 | 
			
		||||
    // per tutte le attivita' 
 | 
			
		||||
    atts.restart();
 | 
			
		||||
    while ((tmpatt = atts.get()) != NULL)
 | 
			
		||||
    {
 | 
			
		||||
      TString att(tmpatt); 
 | 
			
		||||
      int tipoatt = att[att.len() -1] - '0';
 | 
			
		||||
      if (tipoatt == 1) // su PLA l'attivita' e' sempre 1
 | 
			
		||||
      {
 | 
			
		||||
      	look_pla(att);     
 | 
			
		||||
      	TToken_string tt(_pla->get("S1"));
 | 
			
		||||
      	real vf1(tt.get(0));
 | 
			
		||||
      	real vf2(tt.get(1));              
 | 
			
		||||
      	real iaq(_pla->get("S2")); // IVA acquisti
 | 
			
		||||
      	real ppg(_pla->get("S3")); // pro-rata pagato
 | 
			
		||||
      	
 | 
			
		||||
      	vol_aff_1 += vf1;
 | 
			
		||||
      	vol_aff_2 += vf2; 
 | 
			
		||||
      	vol_aff_t  = vf1 + vf2;
 | 
			
		||||
      	vol_aff_l += _pla->get_real("R0"); // volume affari lordo
 | 
			
		||||
      	
 | 
			
		||||
      	real es_b1 = _pla->get_real("R1");
 | 
			
		||||
      	real es_b2 = _pla->get_real("R2");
 | 
			
		||||
      	real es_b3 = _pla->get_real("R3");
 | 
			
		||||
      	real csamm = _pla->get_real("R4");
 | 
			
		||||
      	
 | 
			
		||||
      	// calcola nuovo prorata per ogni attivita' (miste: 1+2)
 | 
			
		||||
      	real ris = vol_aff_t + csamm + es_b3;
 | 
			
		||||
      	real prorata(0.0); 
 | 
			
		||||
      	if (!ris.is_zero())
 | 
			
		||||
          prorata = (es_b1/ris) * CENTO;
 | 
			
		||||
        real conguaglio = 0.0;
 | 
			
		||||
        prorata.round(-2);
 | 
			
		||||
        if (prorata != _prorata)
 | 
			
		||||
        {
 | 
			
		||||
          // calcolo conguaglio -- se positivo e' a debito
 | 
			
		||||
          real topay = iaq * (prorata / CENTO);
 | 
			
		||||
          conguaglio = topay - ppg;
 | 
			
		||||
          conguaglio.round(ROUND_LIRA);
 | 
			
		||||
        }
 | 
			
		||||
        _pla->put("R9", conguaglio);      	
 | 
			
		||||
        _pla->put("R10",prorata); 
 | 
			
		||||
        tot_cong += conguaglio;
 | 
			
		||||
        _pla->rewrite();
 | 
			
		||||
        
 | 
			
		||||
        // scrivi nuovo prorata in tabella anno successivo
 | 
			
		||||
        TString yr = _year;
 | 
			
		||||
        _year = format("%d", atoi(_year) + 1);
 | 
			
		||||
        look_pla(att, TRUE);
 | 
			
		||||
        _pla->put("R8", prorata);
 | 
			
		||||
        _pla->rewrite();
 | 
			
		||||
        _year = yr;      	
 | 
			
		||||
      } 
 | 
			
		||||
    }                     
 | 
			
		||||
 | 
			
		||||
    look_lia();
 | 
			
		||||
    _lia->put("R1", vol_aff_l);
 | 
			
		||||
    _lia->put("R2", vol_aff_1);
 | 
			
		||||
    _lia->put("R3", vol_aff_2);
 | 
			
		||||
    _lia->put("R4", acc_dec);
 | 
			
		||||
    _lia->put("R5", cred_cost);   
 | 
			
		||||
    _lia->rewrite();
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  // comprende anche il conguaglio prorata
 | 
			
		||||
  risultato += tot_cong;
 | 
			
		||||
  if (tot_cong.sign() > 0) res_debt += tot_cong;
 | 
			
		||||
  if (tot_cong.sign() < 0) res_cred += tot_cong;
 | 
			
		||||
  
 | 
			
		||||
  look_lim(month,TRUE);       
 | 
			
		||||
  // azzeriamo tutto
 | 
			
		||||
@ -1110,10 +1254,13 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
      (month >= 12 && _freqviva == "M"))
 | 
			
		||||
  {
 | 
			
		||||
    risultato -= versamenti_IVA(12,"7");
 | 
			
		||||
    acc_dec    = versamenti_IVA(12,"7");
 | 
			
		||||
    acc_dec    = versamenti_IVA(12,"7");        
 | 
			
		||||
    res_cred  += acc_dec;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  risultato.round(month == 13 ? ROUND_MILLELIRE : ROUND_LIRA);
 | 
			
		||||
  // in annuale si arrotondera' a 1000 in stampa 
 | 
			
		||||
  // se no il conguaglio prorata fa casino
 | 
			
		||||
  risultato.round(ROUND_LIRA);
 | 
			
		||||
                                
 | 
			
		||||
  _lim->put("R0",risultato); 
 | 
			
		||||
  _lim->put("R2",cred_cost); 
 | 
			
		||||
@ -1135,7 +1282,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
   * non benzinari
 | 
			
		||||
   */              
 | 
			
		||||
  if (_freqviva == "T" && risultato.sign() > 0 && 
 | 
			
		||||
      month < 12 && !_isbenzinaro)
 | 
			
		||||
      month < 13 && !_isbenzinaro)
 | 
			
		||||
  {
 | 
			
		||||
    real interesse = interesse_trimestrale(_month);
 | 
			
		||||
    real ivi = risultato * (interesse / CENTO); 
 | 
			
		||||
@ -1148,7 +1295,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
  _lim->put("R9", vers_int);
 | 
			
		||||
 | 
			
		||||
  // scrivi: totali IVA vendite e acquisti, credito prec,
 | 
			
		||||
  // debito prec, acconto
 | 
			
		||||
  // debito prec, acconto, totale conguaglio prorata
 | 
			
		||||
  // cosi' si fa una volta sola in stampa
 | 
			
		||||
 | 
			
		||||
  tt = iva_vend.string(); tt.add(iva_acq.string());
 | 
			
		||||
@ -1158,109 +1305,94 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
 | 
			
		||||
  tt = cred_prec.string(); tt.add(debt_precd.string());
 | 
			
		||||
  _lim->put("S2", tt);
 | 
			
		||||
  tt = acc_dec.string();
 | 
			
		||||
  _lim->put("S3", tt);
 | 
			
		||||
  
 | 
			
		||||
  _lim->put("S3", tt);  
 | 
			
		||||
 // totale conguaglio su tutte le attivita'
 | 
			
		||||
  _lim->put("S4", tot_cong.string());
 | 
			
		||||
    
 | 
			
		||||
   
 | 
			
		||||
  _lim->put("B0","X");
 | 
			
		||||
  if (_isfinal) 
 | 
			
		||||
    _lim->put("B1", "X");
 | 
			
		||||
  _lim->rewrite();  
 | 
			
		||||
  _lim->rewrite();           
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void TLiquidazione_app::recalc_annual(const char* att)
 | 
			
		||||
{
 | 
			
		||||
  // calcolo volume d'affari e altro
 | 
			
		||||
  // TBI/C: volume d'affari separato per
 | 
			
		||||
  // le eventuali 2 attivita'
 | 
			
		||||
 
 | 
			
		||||
  // viene chiamata 2 volte per le att.  miste; PLA e' stata
 | 
			
		||||
  // azzerata dove serve da update_firm se siamo all'annuale
 | 
			
		||||
  real es_b1    = 0.0;
 | 
			
		||||
  real es_b2    = 0.0;
 | 
			
		||||
  real es_b3    = 0.0;
 | 
			
		||||
  real cess_amm = 0.0;
 | 
			
		||||
  real vendite  = 0.0;
 | 
			
		||||
  real pro_pag  = 0.0;
 | 
			
		||||
  real acq_iva  = 0.0; // per conguaglio prorata
 | 
			
		||||
  real acq      = 0.0;
 | 
			
		||||
  real ivlac    = 0.0;
 | 
			
		||||
  real ivven    = 0.0;
 | 
			
		||||
  real ven_lrd  = 0.0;
 | 
			
		||||
  real iva_acq  = 0.0;
 | 
			
		||||
  real ven_lrd  = 0.0;  
 | 
			
		||||
  real volaff1  = 0.0;
 | 
			
		||||
  real volaff2  = 0.0;
 | 
			
		||||
 | 
			
		||||
  int tipoatt = att[strlen(att) -1] - '0';
 | 
			
		||||
  
 | 
			
		||||
  TString aaa(att);
 | 
			
		||||
  
 | 
			
		||||
  if (tipoatt == 2)
 | 
			
		||||
  {
 | 
			
		||||
    // istanzia ai valori precedenti, calcolati per l'attivita' 1
 | 
			
		||||
    // look_pla forza a 1 il tipo attivita' (un solo pla per anno)
 | 
			
		||||
    if (look_pla(aaa))
 | 
			
		||||
    {
 | 
			
		||||
      vendite  = _pla->get_real("R0");
 | 
			
		||||
      es_b1    = _pla->get_real("R1");
 | 
			
		||||
      es_b2    = _pla->get_real("R2");
 | 
			
		||||
      es_b3    = _pla->get_real("R3");
 | 
			
		||||
      cess_amm = _pla->get_real("R4");  
 | 
			
		||||
      ivven    = _pla->get_real("R11");
 | 
			
		||||
      ivlac    = _pla->get_real("R12");
 | 
			
		||||
      ven_lrd  = _pla->get_real("R13");
 | 
			
		||||
      acq      = _pla->get_real("R14"); 
 | 
			
		||||
    }
 | 
			
		||||
  } 
 | 
			
		||||
  look_pla(aaa);
 | 
			
		||||
  TToken_string tt(_pla->get("S1"));
 | 
			
		||||
  volaff1  = tt.get(0);
 | 
			
		||||
  volaff1  = tt.get(1);
 | 
			
		||||
  vendite  = _pla->get_real("R0");
 | 
			
		||||
  es_b1    = _pla->get_real("R1");
 | 
			
		||||
  es_b2    = _pla->get_real("R2");
 | 
			
		||||
  es_b3    = _pla->get_real("R3");
 | 
			
		||||
  cess_amm = _pla->get_real("R4");  
 | 
			
		||||
  pro_pag  = (const char*)_pla->get("S3");
 | 
			
		||||
  iva_acq  = (const char*)_pla->get("S2"); 
 | 
			
		||||
  
 | 
			
		||||
  for (int i = 1; i <= 12; i++)
 | 
			
		||||
  // 1) Calcola volume di affari dai PIM, controllando il
 | 
			
		||||
  //    flag B2 settato da update_att per i progressivi che
 | 
			
		||||
  //    entrano nel calcolo
 | 
			
		||||
  
 | 
			
		||||
  for (_pim->first(); !_pim->eof(); _pim->next())
 | 
			
		||||
  {
 | 
			
		||||
    // ricalcola se necessario
 | 
			
		||||
    if (i != 12 && !update_att(i,aaa,FALSE))
 | 
			
		||||
      describe_error("Attivita' non ricalcolata: "
 | 
			
		||||
                     "possibili errori",att);
 | 
			
		||||
    look_ptm(i,aaa); look_plm(i,aaa);
 | 
			
		||||
    if (_year != (const char*)_pim_anno || aaa != (const char*)_pim_codatt)
 | 
			
		||||
	  continue;
 | 
			
		||||
	if (_pim->get_bool("B2"))
 | 
			
		||||
	{
 | 
			
		||||
	  if (tipoatt == 1) volaff1 += _pim->get_real("R0");
 | 
			
		||||
	  else              volaff2 += _pim->get_real("R0");
 | 
			
		||||
	}
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  // 2) calcola esenti, cessioni, lordo vendite, prorata pagato
 | 
			
		||||
  //    e IVA acquisti dai plm/ptm 
 | 
			
		||||
  
 | 
			
		||||
  for (int i = 1; i <= 13; i++)
 | 
			
		||||
  {
 | 
			
		||||
    if (!look_ptm(i,aaa) || !look_plm(i,aaa))
 | 
			
		||||
      continue;
 | 
			
		||||
    
 | 
			
		||||
    // vendite lorde; sa la madonna a cosa servono
 | 
			
		||||
    real vend(_ptm->get("S3"));
 | 
			
		||||
    ven_lrd   += vend;  // lordo vendite
 | 
			
		||||
 | 
			
		||||
    // non entra l'IVA per calcolo volume affari
 | 
			
		||||
    vendite   += (vend - _plm->get_real("R0"));
 | 
			
		||||
    ven_lrd   += vend;
 | 
			
		||||
    iva_acq   += _plm->get_real("R1");
 | 
			
		||||
    real eb3(_ptm->get("S0"));
 | 
			
		||||
    es_b1     += _ptm->get_real("R13");
 | 
			
		||||
    es_b2     += _ptm->get_real("R14");
 | 
			
		||||
    es_b3     += eb3;
 | 
			
		||||
    acq_iva   += _plm->get_real("R1");
 | 
			
		||||
    cess_amm  += _ptm->get_real("R10"); 
 | 
			
		||||
    pro_pag   += _plm->get_real("R2");
 | 
			
		||||
    real aax(_ptm->get("S2"));
 | 
			
		||||
    acq       += aax -   // rilevanti per aliquota media
 | 
			
		||||
      _ptm->get_real("R3") - // toglie ammortizz. etc
 | 
			
		||||
        _ptm->get_real("R5") - // non detraibili non ci sono
 | 
			
		||||
          _ptm->get_real("R8");
 | 
			
		||||
    ivlac     += _plm->get_real("R1") - // idem per IVE
 | 
			
		||||
      _ptm->get_real("R4") -
 | 
			
		||||
        _ptm->get_real("R9") -
 | 
			
		||||
          _ptm->get_real("R12");
 | 
			
		||||
    ivven     += _plm->get_real("R0");
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
  // calcolo prorata
 | 
			
		||||
  real prorata = (es_b1/(vendite - cess_amm - es_b3)) * CENTO;
 | 
			
		||||
  real conguaglio = 0.0;
 | 
			
		||||
  prorata.round(ROUND_LIRA);
 | 
			
		||||
  if (prorata != _prorata)
 | 
			
		||||
  {
 | 
			
		||||
    // calcolo conguaglio -- se positivo e' a debito
 | 
			
		||||
    real topay = acq_iva * (prorata / CENTO);
 | 
			
		||||
    conguaglio = topay - pro_pag;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  look_pla(aaa);
 | 
			
		||||
  _pla->put("R0",  vendite);
 | 
			
		||||
  _pla->put("R1",  es_b1);
 | 
			
		||||
  _pla->put("R2",  es_b2);
 | 
			
		||||
  _pla->put("R3",  es_b3);
 | 
			
		||||
  _pla->put("R4",  cess_amm);  
 | 
			
		||||
  _pla->put("R9",  prorata);
 | 
			
		||||
  _pla->put("R10", conguaglio);
 | 
			
		||||
  _pla->put("R11", ivven);
 | 
			
		||||
  _pla->put("R12", ivlac);
 | 
			
		||||
  _pla->put("R13", ven_lrd);
 | 
			
		||||
  _pla->put("R14", acq);
 | 
			
		||||
  tt = volaff1.string(); tt.add(volaff2.string());                           
 | 
			
		||||
                             
 | 
			
		||||
  _pla->put("R0", ven_lrd);
 | 
			
		||||
  _pla->put("R1", es_b1);
 | 
			
		||||
  _pla->put("R2", es_b2);
 | 
			
		||||
  _pla->put("R3", es_b3);
 | 
			
		||||
  _pla->put("R4", cess_amm);
 | 
			
		||||
  _pla->put("S1", tt);      
 | 
			
		||||
  _pla->put("S2", iva_acq.string());
 | 
			
		||||
  _pla->put("S3", pro_pag.string());
 | 
			
		||||
  _pla->rewrite();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
#include "cg4300.h"
 | 
			
		||||
 | 
			
		||||
bool TLiquidazione_app::is_trim(int x) 
 | 
			
		||||
     // TRUE se il mese passato e' un trimestre
 | 
			
		||||
    // TRUE se il mese passato e' un trimestre
 | 
			
		||||
{ return x == 3 || x == 6 || x == 9 || x == 12; }
 | 
			
		||||
 | 
			
		||||
bool TLiquidazione_app::is_month_ok_strict(int x, int month)
 | 
			
		||||
@ -24,15 +24,15 @@ bool TLiquidazione_app::is_month_ok_strict(int x, int month)
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
bool TLiquidazione_app::is_month_ok(int x, int mtocalc)
 | 
			
		||||
// TRUE se il mese passato e' compatibile con il mese da calcolare
 | 
			
		||||
// rispetto al regime di liquidazione scelto
 | 
			
		||||
   // TRUE se il mese passato e' compatibile con il mese da calcolare
 | 
			
		||||
   // rispetto al regime di liquidazione scelto
 | 
			
		||||
{ 
 | 
			
		||||
  bool ret = x == mtocalc;
 | 
			
		||||
  if (!ret && _freqviva == "T" && mtocalc != 13)
 | 
			
		||||
  {  
 | 
			
		||||
     // aggiusta al trimestre il mese da calcolare
 | 
			
		||||
  	 mtocalc += 2 - ((mtocalc-1) % 3);	
 | 
			
		||||
  	 ret = x >= (mtocalc - 3) && x <= mtocalc; 
 | 
			
		||||
  	 ret = x > (mtocalc - 3) && x <= mtocalc; 
 | 
			
		||||
  }
 | 
			
		||||
  else if (!ret && mtocalc == 13)
 | 
			
		||||
  {               
 | 
			
		||||
@ -42,6 +42,14 @@ bool TLiquidazione_app::is_month_ok(int x, int mtocalc)
 | 
			
		||||
  return ret;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
int TLiquidazione_app::liq_month(int x)
 | 
			
		||||
  // ritorna il mese da liquidare (= LIM presente)
 | 
			
		||||
  //  che corrisponde al mese passato
 | 
			
		||||
{         
 | 
			
		||||
   if (x == 13 || _freqviva == "M") 
 | 
			
		||||
     return x;
 | 
			
		||||
   else return x + (2 - ((x-1) % 3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TLiquidazione_app::is_first_month(int m)
 | 
			
		||||
{
 | 
			
		||||
@ -51,32 +59,22 @@ bool TLiquidazione_app::is_first_month(int m)
 | 
			
		||||
 | 
			
		||||
int TLiquidazione_app::previous_month(int m)
 | 
			
		||||
{
 | 
			
		||||
  if (m == 13) m = 12;
 | 
			
		||||
  // vale per LIM (mese o trimestre precedente)
 | 
			
		||||
  if (_freqviva == "M")
 | 
			
		||||
    return m == 1 ? 1 : m - 1;
 | 
			
		||||
  else return m == 3 ? 3 : m - 3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TLiquidazione_app::check_month(int m, int m2)
 | 
			
		||||
     // se si sta ricalcolando una liquidazione 
 | 
			
		||||
     // annuale di check, ritorna TRUE per tutti i 
 | 
			
		||||
     // mesi, altrimenti solo per quello in corso
 | 
			
		||||
     // di calcolo
 | 
			
		||||
{
 | 
			
		||||
  return (_isannual || _isriepilogo) ? m < 13 : m == m2; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TLiquidazione_app::is_date_ok(TDate& d, int month)
 | 
			
		||||
// TRUE se la data (di mov o pim) passata va considerata nel
 | 
			
		||||
// ricalcolo dei progressivi mensili per il mese e anno
 | 
			
		||||
// selezionati; se month == 13 vanno bene tutte purche'
 | 
			
		||||
// sia giusto l'anno
 | 
			
		||||
{
 | 
			
		||||
  if (month == 13) 
 | 
			
		||||
    return  month < 13 && d.year() == atoi(_year);
 | 
			
		||||
  else if (d.month() > month || d.year() != atoi(_year))
 | 
			
		||||
  if (d.month() > month || d.year() != atoi(_year))
 | 
			
		||||
    return FALSE;
 | 
			
		||||
  else return d.month() == month;
 | 
			
		||||
  if (month == 13) return d.month() <= month;
 | 
			
		||||
  else             return d.month() == month;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -366,13 +364,13 @@ bool TLiquidazione_app::look_lia(bool create, int year)
 | 
			
		||||
 | 
			
		||||
real TLiquidazione_app::result_liq(int month)
 | 
			
		||||
// risultato esatto della liquidazione del mese month, <0 a credito
 | 
			
		||||
// > 0 a debito; non comprende il conguaglio prorata (annuale)
 | 
			
		||||
// > 0 a debito; comprende TUTTI, anche il conguaglio prorata in annuale
 | 
			
		||||
{  
 | 
			
		||||
   real r(0.0);                               
 | 
			
		||||
   // ulteriori detrazioni, acconti, versamenti,
 | 
			
		||||
   // rettifiche sono gia' comprese in R0
 | 
			
		||||
   if (look_lim(month))
 | 
			
		||||
   	 r = _lim->get_real("R0");  
 | 
			
		||||
   	 r = _lim->get_real("R0");
 | 
			
		||||
   return r;
 | 
			
		||||
}                                           
 | 
			
		||||
                                           
 | 
			
		||||
@ -400,6 +398,7 @@ real TLiquidazione_app::credito_prec(int month)
 | 
			
		||||
 | 
			
		||||
  if (is_first_month(month))
 | 
			
		||||
  {
 | 
			
		||||
    // credito inizio anno
 | 
			
		||||
    if (look_lia()) 
 | 
			
		||||
      c = _lia->get_real("R0");
 | 
			
		||||
      // e' positivo o 0
 | 
			
		||||
 | 
			
		||||
@ -104,9 +104,6 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
 | 
			
		||||
    imposta    += _pim->get_real("R1");
 | 
			
		||||
    _pim->put("R0", imponibile);
 | 
			
		||||
    _pim->put("R1", imposta);
 | 
			
		||||
 | 
			
		||||
    // segnale per comodita'
 | 
			
		||||
    _pim->put("B1","X");
 | 
			
		||||
    _pim->rewrite();
 | 
			
		||||
  }   
 | 
			
		||||
}
 | 
			
		||||
@ -155,8 +152,7 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
 | 
			
		||||
        continue;
 | 
			
		||||
      
 | 
			
		||||
      TString att(codatt); 
 | 
			
		||||
      if (tipocr == 1 && mese == m && 
 | 
			
		||||
          att == (const char*)(*_pim_codatt))  
 | 
			
		||||
      if (tipocr == 1 && mese == m && att == (const char*)(*_pim_codatt))  
 | 
			
		||||
      {
 | 
			
		||||
        look_iva(*_pim_codiva);
 | 
			
		||||
 | 
			
		||||
@ -243,4 +239,4 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
 | 
			
		||||
  _ptm->put("S4",totacq.string());
 | 
			
		||||
  _ptm->put("S5",totven.string());
 | 
			
		||||
  _ptm->rewrite();
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
@ -82,7 +82,7 @@ void TLiquidazione_app::describe_att(int month, const char* codatt, bool isresul
 | 
			
		||||
      describe_agricolo(month, codatt);
 | 
			
		||||
    if (atts.items() == 1 && _isviaggio) 
 | 
			
		||||
      describe_viaggio(month, codatt);
 | 
			
		||||
    if (isresult || _isannual)
 | 
			
		||||
    if (isresult || month == 13)
 | 
			
		||||
      describe_pims(month,codatt);
 | 
			
		||||
    if (atts.items() == 1)
 | 
			
		||||
      describe_consistence(codatt);
 | 
			
		||||
@ -161,8 +161,6 @@ void TLiquidazione_app::describe_ventilation(int month, const char* codatt)
 | 
			
		||||
{                                      
 | 
			
		||||
  if (!_isvent) return;
 | 
			
		||||
  
 | 
			
		||||
  if (_isriepilogo || _isannual) month = 12;
 | 
			
		||||
 | 
			
		||||
  _DescrItem* d = new _DescrItem(VENTILA);
 | 
			
		||||
  TString att(codatt);
 | 
			
		||||
 | 
			
		||||
@ -352,8 +350,8 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
 | 
			
		||||
          _pim->get_real("R2").is_zero())
 | 
			
		||||
        continue;                                 
 | 
			
		||||
      
 | 
			
		||||
      if (strcmp((const char*)*_pim_codatt, att) == 0        &&
 | 
			
		||||
          (is_month_ok(atoi(*_pim_mese),month) || _isannual) &&
 | 
			
		||||
      if (strcmp((const char*)*_pim_codatt, att) == 0  &&
 | 
			
		||||
          (is_month_ok(atoi(*_pim_mese),month))        &&
 | 
			
		||||
          _year == (const char*)*_pim_anno)
 | 
			
		||||
      {
 | 
			
		||||
        // vedi se c'e' gia' un item corrispondente
 | 
			
		||||
@ -423,7 +421,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
 | 
			
		||||
            
 | 
			
		||||
            // si scorporano solo per l'annuale, altrimenti
 | 
			
		||||
            // vengono normalmente considerati nelle vendite
 | 
			
		||||
            if (_isannual)
 | 
			
		||||
            if (month == 13)
 | 
			
		||||
            {
 | 
			
		||||
              adf = _pim->get_real("R7");
 | 
			
		||||
              adi = _pim->get_real("R8");
 | 
			
		||||
@ -475,7 +473,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
 | 
			
		||||
 | 
			
		||||
    for (int m = 1; m <= month && m < 13; m++)
 | 
			
		||||
    {
 | 
			
		||||
      if (!is_month_ok(m,month) && !(_isannual || _isriepilogo)) continue;
 | 
			
		||||
      if (!is_month_ok(m,month)) continue;
 | 
			
		||||
 | 
			
		||||
      atts.restart();
 | 
			
		||||
      while ((tmpatt = atts.get()) != NULL)
 | 
			
		||||
@ -536,26 +534,28 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt)
 | 
			
		||||
    } // for (mese ok)
 | 
			
		||||
    
 | 
			
		||||
    // annual follows in _arr
 | 
			
		||||
    if ((_isannual || _isriepilogo) && ref != "ALL")
 | 
			
		||||
    if (month == 13 && ref != "ALL")
 | 
			
		||||
    {
 | 
			
		||||
      // tutte quelle cose che vanno alla liquidazione annuale, come il
 | 
			
		||||
      // calcolo del prorata o del nuovo plafond o ....
 | 
			
		||||
      if (look_pla(codatt))
 | 
			
		||||
      {
 | 
			
		||||
        real v  = _pla->get_real("R0");
 | 
			
		||||
      { 
 | 
			
		||||
        TToken_string tt(_pla->get("S1"));
 | 
			
		||||
        real v1 = tt.get(0); real v2 = tt.get(1);
 | 
			
		||||
        real v  = v1 + v2;
 | 
			
		||||
        real e1 = _pla->get_real("R1");
 | 
			
		||||
        real e2 = _pla->get_real("R2");
 | 
			
		||||
        real e3 = _pla->get_real("R3");
 | 
			
		||||
        real am = _pla->get_real("R4");
 | 
			
		||||
        real pr = _pla->get_real("R9");
 | 
			
		||||
        real co = _pla->get_real("R10");
 | 
			
		||||
        real pr = _pla->get_real("R10");
 | 
			
		||||
        real co = _pla->get_real("R9");
 | 
			
		||||
        
 | 
			
		||||
        _DescrItem* dd = new _DescrItem(ANNUAL);
 | 
			
		||||
        
 | 
			
		||||
        // prorata
 | 
			
		||||
        if (!_prorata.is_zero())
 | 
			
		||||
          dd->_f0 |= IS_PRORATA;
 | 
			
		||||
        dd->_r0 = v - am - e3;
 | 
			
		||||
        dd->_r0 = v;
 | 
			
		||||
        dd->_r1 = e1;
 | 
			
		||||
        dd->_r2 = pr;
 | 
			
		||||
        dd->_r3 = co;
 | 
			
		||||
@ -594,18 +594,10 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts,
 | 
			
		||||
  d->_s2 = _lim->get("S2");
 | 
			
		||||
  d->_s3 = _lim->get("S3");
 | 
			
		||||
  d->_r11 = (const char*)_lim->get("R10");   // tasso di interesse
 | 
			
		||||
  
 | 
			
		||||
  real cong(_lim->get("S4"));  // totale conguaglio prorata
 | 
			
		||||
  d->_r10 = cong;
 | 
			
		||||
 | 
			
		||||
  if (month == 13) 
 | 
			
		||||
  {                     
 | 
			
		||||
    TToken_string a(codatts);
 | 
			
		||||
    for (int i = 0; i < a.items(); i++)
 | 
			
		||||
    {            
 | 
			
		||||
      TString att = a.get();
 | 
			
		||||
      look_pla(att);
 | 
			
		||||
      // r10  = conguaglio prorata
 | 
			
		||||
      d->_r10 += _pla->get_real("R10"); 
 | 
			
		||||
    }         
 | 
			
		||||
  }
 | 
			
		||||
  // aggiunge eventuale satellite per rimborso infraannuale
 | 
			
		||||
  if (di != NULL) d->_arr.add(di);
 | 
			
		||||
 | 
			
		||||
@ -974,6 +966,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
 | 
			
		||||
  real& interessi  = d._r7;
 | 
			
		||||
  real& versamenti = d._r8;
 | 
			
		||||
  real& vers_int   = d._r9;
 | 
			
		||||
  real& conguaglio = d._r10;
 | 
			
		||||
  TToken_string tt(d._s0);
 | 
			
		||||
  real iva_vend(tt.get(0));
 | 
			
		||||
  real iva_acq(tt.get(1));
 | 
			
		||||
@ -1003,12 +996,9 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
 | 
			
		||||
          _is_visliq ? "$[r]" : "", &rimborso);
 | 
			
		||||
 | 
			
		||||
  // conguaglio prorata
 | 
			
		||||
  if (d._r10.sign() > 0) 
 | 
			
		||||
  if (conguaglio.sign() > 0) 
 | 
			
		||||
  {
 | 
			
		||||
    real r = abs(d._r10);
 | 
			
		||||
    set_row(rw++,"@11gConguaglio pro-rata@75g%r", &r);
 | 
			
		||||
    res_debt  += d._r10;
 | 
			
		||||
    risultato += d._r10;
 | 
			
		||||
    set_row(rw++,"@11gConguaglio pro-rata@75g%r", &conguaglio);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // debito liq. precedente < 50000
 | 
			
		||||
@ -1043,12 +1033,9 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
 | 
			
		||||
    set_row(rw++,"@11gVersamenti integrativi@58g%r", &vers_int);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (d._r10.sign() < 0) 
 | 
			
		||||
  {
 | 
			
		||||
    real r = abs(d._r10);
 | 
			
		||||
    set_row(rw++,"@11gConguaglio pro-rata@58g%r", &r);
 | 
			
		||||
    res_cred  += d._r10;
 | 
			
		||||
    risultato -= d._r10;
 | 
			
		||||
  if (conguaglio.sign() < 0) 
 | 
			
		||||
  {             
 | 
			
		||||
    set_row(rw++,"@11gConguaglio pro-rata@58g%r", &conguaglio);
 | 
			
		||||
  }
 | 
			
		||||
  set_row(rw++,"@11gRISULTATO@58g%r", &res_cred);
 | 
			
		||||
 | 
			
		||||
@ -1060,12 +1047,14 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
 | 
			
		||||
  {
 | 
			
		||||
    if (risultato.sign() < 0) 
 | 
			
		||||
    {
 | 
			
		||||
      real iva = abs(risultato);
 | 
			
		||||
      real iva = abs(risultato); 
 | 
			
		||||
      if (_isannual || _isriepilogo) iva.round(ROUND_MILLELIRE);
 | 
			
		||||
      set_row(rw++,"@23gCREDITO ATTUALE@58g%r",&iva);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    { 
 | 
			
		||||
      real iva = risultato + interessi;
 | 
			
		||||
      real iva = risultato + interessi; 
 | 
			
		||||
      if (_isannual || _isriepilogo) iva.round(ROUND_MILLELIRE);
 | 
			
		||||
      if (!iva.is_zero()) 
 | 
			
		||||
      {
 | 
			
		||||
        if (!interessi.is_zero())
 | 
			
		||||
@ -1073,7 +1062,7 @@ void TLiquidazione_app::set_grand(_DescrItem& d)
 | 
			
		||||
          set_row(rw++,"@23gIVA DOVUTA@75g%r",&risultato);  
 | 
			
		||||
          set_row(rw++,"@23gInteresse %6.2r %%@75g%r",&interesse, &interessi);
 | 
			
		||||
        }
 | 
			
		||||
        if (iva >= IVA_DA_RIPORTARE || _isannual)
 | 
			
		||||
        if (iva >= IVA_DA_RIPORTARE || _isannual || _isriepilogo)
 | 
			
		||||
          set_row(rw++,"@23gIVA DA VERSARE@75g%r",&iva);
 | 
			
		||||
        else
 | 
			
		||||
          set_row(rw++,"@23gIVA DA VERSARE@85g0 (%s < 50.000)", 
 | 
			
		||||
 | 
			
		||||
@ -98,9 +98,9 @@ bool TLiquidazione_app::extract_deleghe()
 | 
			
		||||
      _isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
 | 
			
		||||
      bool   mens  = _freqviva == "M";
 | 
			
		||||
      _isannual    = (_month == 12 && !mens && !_isbenzinaro) ||
 | 
			
		||||
        (_month == 13 && (mens || _isbenzinaro));
 | 
			
		||||
                     (_month == 13 && (mens || _isbenzinaro));
 | 
			
		||||
      _isriepilogo = _month == 13;
 | 
			
		||||
 | 
			
		||||
      _isendliq = _isannual || _isriepilogo;
 | 
			
		||||
      extract_delega(_month);
 | 
			
		||||
    }
 | 
			
		||||
    _prind->addstatus(1);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user