Aggiunta alla prima nota la gestione del campo MESELIQ
git-svn-id: svn://10.65.10.50/trunk@6218 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									7a49867232
								
							
						
					
					
						commit
						4d88f8c9d8
					
				| @ -798,6 +798,15 @@ int TPrimanota_application::read(TMask& m) | ||||
|   solaiva.set(i == 0 ? "X" : " "); | ||||
|   solaiva.on_key(K_TAB); | ||||
|    | ||||
|   const int mese_liq = _rel->curr().get_int(MOV_MESELIQ); | ||||
|   if (mese_liq != 0) | ||||
|   { | ||||
|     const TDate data_reg = m.get_date(F_DATAREG); | ||||
|     const TDate data_liq(1, mese_liq, data_reg.year()); | ||||
|     if (_rel->date2liq(data_reg) != _rel->date2liq(data_liq)) | ||||
|       m.set(F_DIFFERITA, "X"); | ||||
|   } | ||||
|    | ||||
|   const bool to_swap = test_swap(FALSE); | ||||
|   if (to_swap) | ||||
|   { | ||||
| @ -928,6 +937,24 @@ void TPrimanota_application::mask2rel(const TMask& m) | ||||
| 
 | ||||
|   if (_iva == nessuna_iva) return; | ||||
|    | ||||
|   // Calcola mese di liquidazione precedente
 | ||||
|   int mese_liq = 0;               | ||||
|   if (m.get_bool(F_DIFFERITA)) | ||||
|   {  | ||||
|     TDate data_liq = m.get(F_DATAREG); | ||||
|     const int curr_liq = _rel->date2liq(data_liq); | ||||
|     data_liq.set_day(1);      // Evita problemi coi mesi corti!
 | ||||
|     for (mese_liq = curr_liq-1; mese_liq > 0; mese_liq--) | ||||
|     { | ||||
|       data_liq.set_month(mese_liq); | ||||
|       if (_rel->date2liq(data_liq) != curr_liq) | ||||
|         break; | ||||
|     } | ||||
|     if (mese_liq <= 0) | ||||
|       mese_liq = 12; | ||||
|   } | ||||
|   rec.put(MOV_MESELIQ, mese_liq); | ||||
|    | ||||
|   if (causale().corrispettivi()) | ||||
|   { | ||||
|     rec.put("TIPO", "");  | ||||
|  | ||||
| @ -215,6 +215,11 @@ BEGIN | ||||
|   WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliete/fornitore ha codice inserimento in  allegati uguale a 3)" | ||||
| END | ||||
| 
 | ||||
| BOOLEAN F_DIFFERITA | ||||
| BEGIN | ||||
|   PROMPT 54 9 "Liquid. periodo prec." | ||||
| END | ||||
| 
 | ||||
| NUMBER F_CLIENTE 6 | ||||
| BEGIN | ||||
|   PROMPT 1 10 "Cliente      " | ||||
|  | ||||
| @ -12,7 +12,7 @@ | ||||
| ///////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
| TMovimentoPN::TMovimentoPN() | ||||
| : TRelation(LF_MOV), _cg(LF_RMOV, "NUMRIG"), _iva(LF_RMOVIVA, "NUMRIG") | ||||
| : TRelation(LF_MOV), _cg(LF_RMOV, RMV_NUMRIG), _iva(LF_RMOVIVA, RMI_NUMRIG) | ||||
| { | ||||
|   add(LF_RMOV, "NUMREG=NUMREG"); | ||||
|   add(LF_RMOVIVA, "NUMREG=NUMREG"); | ||||
| @ -21,9 +21,9 @@ TMovimentoPN::TMovimentoPN() | ||||
| void TMovimentoPN::destroy_rows(long num) | ||||
| {                     | ||||
|   _cg.destroy_rows(); | ||||
|   _cg.renum_key("NUMREG", num); | ||||
|   _cg.renum_key(RMV_NUMREG, num); | ||||
|   _iva.destroy_rows(); | ||||
|   _iva.renum_key("NUMREG", num); | ||||
|   _iva.renum_key(RMI_NUMREG, num); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @ -64,8 +64,15 @@ int TMovimentoPN::read(TIsamop op, TReclock lockop) | ||||
|   const int err = TRelation::read(op, lockop); | ||||
|   if (err == NOERR)  | ||||
|   { | ||||
|     _olddate = file().get("DATAREG");       // Memorizza data operazione per aggiornare i saldi
 | ||||
|     read_mov_rows();                        // Riempie i due record array
 | ||||
|     _olddataliq = file().get(MOV_DATAREG); // Memorizza data liquidazione
 | ||||
|     const int meseliq = file().get_int(MOV_MESELIQ); | ||||
|     if (meseliq > 0 && meseliq != _olddataliq.month()) | ||||
|     { | ||||
|       _olddataliq.set_day(1);              // Evita problemi coi mesi corti!
 | ||||
|       _olddataliq.set_month(meseliq); | ||||
|     } | ||||
|      | ||||
|     read_mov_rows();                       // Riempie i due record array
 | ||||
|   }   | ||||
|   return err; | ||||
| } | ||||
| @ -178,16 +185,16 @@ int TMovimentoPN::registra(bool re, bool force) | ||||
|     return err; | ||||
| 
 | ||||
|   const TRectype& m = curr(); | ||||
|   const long numreg = m.get_long("NUMREG"); | ||||
|   const long numreg = m.get_long(MOV_NUMREG); | ||||
|    | ||||
|   if (!re) | ||||
|     _cg.renum_key("NUMREG", numreg); | ||||
|     _cg.renum_key(MOV_NUMREG, numreg); | ||||
|   err = _cg.write(re); | ||||
|   if (err != NOERR)  | ||||
|     return err; | ||||
| 
 | ||||
|   const int annoiva = m.get_int("ANNOIVA"); | ||||
|   const TString reg(m.get("REG")); | ||||
|   const int annoiva = m.get_int(MOV_ANNOIVA); | ||||
|   const TString reg(m.get(MOV_REG)); | ||||
|   TRegistro registro(reg, annoiva); | ||||
|   const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista(); | ||||
| 
 | ||||
| @ -197,38 +204,46 @@ int TMovimentoPN::registra(bool re, bool force) | ||||
|     int tipoatt = 1; | ||||
|     if (att_mista) | ||||
|     { | ||||
|       const char tipo = r.get_char("TIPOC"); | ||||
|       const char tipo = r.get_char(RMI_TIPOC); | ||||
|       if (tipo <= ' ')                | ||||
|       { | ||||
|         TBill c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO")); | ||||
|         TBill c(r.get_int(RMI_GRUPPO), r.get_int(RMI_CONTO), r.get_long(RMI_SOTTOCONTO)); | ||||
|         tipoatt = c.tipo_att(); | ||||
|       }                       | ||||
|     } | ||||
|     r.put("TIPOATT", tipoatt); | ||||
|     r.put(RMI_TIPOATT, tipoatt); | ||||
|   } | ||||
|    | ||||
|   if (!re) | ||||
|     _iva.renum_key("NUMREG", numreg); | ||||
|     _iva.renum_key(MOV_NUMREG, numreg); | ||||
|   err = _iva.write(re); | ||||
|   if (err != NOERR)  | ||||
|     return err; | ||||
| 
 | ||||
| 
 | ||||
|   // Aggiorna data registrazione e protocollo IVA sul registro
 | ||||
|   const TDate datareg(m.get("DATAREG")); | ||||
|   const TDate datareg(m.get(MOV_DATAREG)); | ||||
|   if (reg.not_empty()) | ||||
|   {                              | ||||
|     const long protiva = m.get_long("PROTIVA"); | ||||
|     const long uprotiva = m.get_long("UPROTIVA"); | ||||
|     const long protiva = m.get_long(MOV_PROTIVA); | ||||
|     const long uprotiva = m.get_long(MOV_UPROTIVA); | ||||
|     const long max = protiva > uprotiva ? protiva : uprotiva; | ||||
|     registro.update(max, datareg); | ||||
|   }       | ||||
|    | ||||
|   // Aggiorna flags di ricalcolo liquidazione
 | ||||
|    | ||||
|   controlla_liquidazione(datareg, registro, TRUE); | ||||
|   if (re && datareg != _olddate) | ||||
|     controlla_liquidazione(_olddate, registro, TRUE); | ||||
|   TDate dataliq(datareg); | ||||
|   const int mese_liq = m.get_int(MOV_MESELIQ); | ||||
|   if (mese_liq > 0 && mese_liq != dataliq.month()) | ||||
|   { | ||||
|     dataliq.set_day(1);              // Evita problemi coi mesi corti!
 | ||||
|     dataliq.set_month(mese_liq); | ||||
|   } | ||||
|    | ||||
|   controlla_liquidazione(dataliq, registro, TRUE); | ||||
|   if (re && dataliq.month() != _olddataliq.month()) | ||||
|     controlla_liquidazione(_olddataliq, registro, TRUE); | ||||
| 
 | ||||
|   return err; | ||||
| } | ||||
| @ -239,13 +254,11 @@ int TMovimentoPN::write(bool force) | ||||
|   return registra(FALSE, force); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| int TMovimentoPN::rewrite(bool force) | ||||
| { | ||||
|   return registra(TRUE, force); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| int TMovimentoPN::remove() | ||||
| {          | ||||
|   int err = _cg.remove(); | ||||
| @ -259,11 +272,10 @@ int TMovimentoPN::remove() | ||||
|   if (err == NOERR) | ||||
|   {                         | ||||
|     const TRectype& m = curr(); | ||||
|     const TDate datareg(m.get("DATAREG")); | ||||
|     const int annoiva = m.get_int("ANNOIVA"); | ||||
|     const TString reg(m.get("REG")); | ||||
|     const TString reg(m.get(MOV_REG)); | ||||
|     const int annoiva = m.get_int(MOV_ANNOIVA); | ||||
|     TRegistro registro(reg, annoiva); | ||||
|     controlla_liquidazione(datareg, registro, TRUE); | ||||
|     controlla_liquidazione(_olddataliq, registro, TRUE); | ||||
|   }                            | ||||
|    | ||||
|   return err; | ||||
|  | ||||
| @ -1,3 +1,3 @@ | ||||
| 23 | ||||
| 0 | ||||
| $mov|0|0|339|0|Movimenti di prima nota|NMOV|| | ||||
| $mov|0|0|341|0|Movimenti di prima nota|NMOV|| | ||||
|  | ||||
| @ -1,11 +1,12 @@ | ||||
| 23 | ||||
| 39 | ||||
| 40 | ||||
| ANNOES|9|4|0|Codice esercizio | ||||
| NUMREG|3|7|0|Numero di operazione | ||||
| DATAREG|5|8|0|Data operazione | ||||
| DATACOMP|5|8|0|Data competenza | ||||
| DATADOC|5|8|0|Data documento | ||||
| DATA74TER|5|8|0|Data per art. 74 ter | ||||
| MESELIQ|2|2|0|Mese per liquidazione differita | ||||
| NUMDOC|1|7|0|Numero documento | ||||
| TIPODOC|1|2|0|Tipo documento | ||||
| CODCAUS|1|3|0|Codice causale | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user