Correzioni saldaconto
git-svn-id: svn://10.65.10.50/trunk@2553 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									806c1731f6
								
							
						
					
					
						commit
						195bcc0381
					
				| @ -279,12 +279,10 @@ bool TPrimanota_application::read_caus(const char* cod, int year) | |||||||
|   {                        |   {                        | ||||||
|     m->efield(F_CODPAG).enable(!nota_credito); |     m->efield(F_CODPAG).enable(!nota_credito); | ||||||
|      |      | ||||||
|     m->show(F_ANNORIF, _is_saldaconto);      // Mostra/nasconde anno e riferimento partita
 |  | ||||||
|     m->show(F_NUMRIF, _is_saldaconto); |  | ||||||
|      |  | ||||||
|     TEdit_field& numrif = m->efield(F_NUMRIF); |     TEdit_field& numrif = m->efield(F_NUMRIF); | ||||||
|     numrif.set_justify(iva == iva_acquisti ? _num_for : _num_cli); |     numrif.set_justify(iva == iva_acquisti ? _num_for : _num_cli); | ||||||
|     numrif.set_trim(!numrif.right_justified()); |     numrif.set_trim(!numrif.right_justified()); | ||||||
|  |     activate_numrif(FALSE); | ||||||
|      |      | ||||||
|     const bool av = causale().reg().agenzia_viaggi(); |     const bool av = causale().reg().agenzia_viaggi(); | ||||||
|     m->show(F_DATA74TER, av); |     m->show(F_DATA74TER, av); | ||||||
|  | |||||||
| @ -75,9 +75,8 @@ END | |||||||
| STRING F_CODCAUS 3 | STRING F_CODCAUS 3 | ||||||
| BEGIN | BEGIN | ||||||
| 	PROMPT 1 9 "Causale      " | 	PROMPT 1 9 "Causale      " | ||||||
| 	HELP "Codice della causale dell'operazione" |  | ||||||
| 	FLAGS "UZ" | 	FLAGS "UZ" | ||||||
| 	FIELD LF_MOV->CODCAUS | 	FIELD CODCAUS | ||||||
| 	USE LF_CAUSALI KEY 1 | 	USE LF_CAUSALI KEY 1 | ||||||
| 	INPUT CODCAUS F_CODCAUS | 	INPUT CODCAUS F_CODCAUS | ||||||
| 	DISPLAY "Codice" CODCAUS | 	DISPLAY "Codice" CODCAUS | ||||||
| @ -94,7 +93,6 @@ END | |||||||
| STRING F_DESCRCAUS 50 | STRING F_DESCRCAUS 50 | ||||||
| BEGIN | BEGIN | ||||||
| 	PROMPT 21 9 "" | 	PROMPT 21 9 "" | ||||||
| 	HELP "Descrizione della causale dell'operazione" |  | ||||||
| 	USE LF_CAUSALI KEY 2 | 	USE LF_CAUSALI KEY 2 | ||||||
| 	CHECKTYPE NORMAL | 	CHECKTYPE NORMAL | ||||||
| 	INPUT DESCR F_DESCRCAUS | 	INPUT DESCR F_DESCRCAUS | ||||||
|  | |||||||
| @ -52,6 +52,7 @@ BEGIN | |||||||
|   FLAGS "DU" |   FLAGS "DU" | ||||||
|   GROUP 3 |   GROUP 3 | ||||||
|   PICTURE ".5" |   PICTURE ".5" | ||||||
|  |   FIELD ANTIOUTPUT | ||||||
|   CHECKTYPE REQUIRED |   CHECKTYPE REQUIRED | ||||||
| END | END | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										127
									
								
								cg/cg2102.cpp
									
									
									
									
									
								
							
							
						
						
									
										127
									
								
								cg/cg2102.cpp
									
									
									
									
									
								
							| @ -296,11 +296,17 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo) | |||||||
|   switch(tipo) |   switch(tipo) | ||||||
|   { |   { | ||||||
|   case 'T':                   // Totale documento
 |   case 'T':                   // Totale documento
 | ||||||
|     if (!causale().corrispettivi()) |     if (causale().corrispettivi()) | ||||||
|     { |     { | ||||||
|  |       last = 2; | ||||||
|  |     }     | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |       last = 3; | ||||||
|       cg.disable_cell(n, 5); |       cg.disable_cell(n, 5); | ||||||
|       cg.disable_cell(n, 6); |       cg.disable_cell(n, 6); | ||||||
|     }     |     } | ||||||
|  |     break; | ||||||
|   case 'A':                   // Abbuoni attivi
 |   case 'A':                   // Abbuoni attivi
 | ||||||
|   case 'C':                   // Differenza cambio
 |   case 'C':                   // Differenza cambio
 | ||||||
|   case 'D':                   // IVA Detraibile
 |   case 'D':                   // IVA Detraibile
 | ||||||
| @ -1391,24 +1397,23 @@ bool TPrimanota_application::cg_gruppo_handler(TMask_field& f, KEY key) | |||||||
| bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key) | bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key) | ||||||
| { | { | ||||||
|   bool ok = TRUE; |   bool ok = TRUE; | ||||||
|  |    | ||||||
|   if (key == K_ENTER) |   if (key == K_ENTER) | ||||||
|   {                           |   {                           | ||||||
|     if (!app().causale().corrispettivi()) |     TMask& m = f.mask(); | ||||||
|  |     if (m.get(CG_ROWTYPE)[0] == 'T' && !app().causale().corrispettivi())   | ||||||
|     { |     { | ||||||
|       TMask& m = f.mask(); |       const char tipo = app().clifo();        // Tipo conto richiesto dal movimento
 | ||||||
|       if (m.get(CG_ROWTYPE)[0] == 'T')          // Se riga totale documento
 |       char cf = m.get(f.dlg()-2)[0];  | ||||||
|  |       if (cf < ' ') cf = ' ';                 // Tipo conto della riga
 | ||||||
|  |       if (cf != tipo)                         // Incongruenza!
 | ||||||
|       { |       { | ||||||
|         const char tipo = app().clifo();        // Tipo conto richiesto dal movimento
 |         const char* d = tipo == 'C' ? "clienti" : "fornitori"; | ||||||
|         char cf = m.get(f.dlg()-2)[0];  |         ok = f.error_box("La riga totale richiede un conto %s.", d); | ||||||
|         if (cf < ' ') cf = ' ';                 // Tipo conto della riga
 |       }                    | ||||||
|         if (cf != tipo)                         // Incongruenza!
 |     }   | ||||||
|         { |  | ||||||
|           const char* d = tipo == ' ' ? "normale" : (tipo == 'C' ? "clienti" : "fornitori"); |  | ||||||
|           ok = f.error_box("La riga totale richiede un conto %s.", d); |  | ||||||
|         }                    |  | ||||||
|       }   |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
|  |    | ||||||
|   return ok; |   return ok; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -1752,7 +1757,7 @@ bool TPrimanota_application::numdoc_handler(TMask_field& f, KEY key) | |||||||
|     const TString16 n = f.get(); |     const TString16 n = f.get(); | ||||||
|     if (n.not_empty() && !app().npart_is_prot()) // Copiare numero documento nel numero partita?
 |     if (n.not_empty() && !app().npart_is_prot()) // Copiare numero documento nel numero partita?
 | ||||||
|     {  |     {  | ||||||
|       if (m.field(F_NUMRIF).active() && m.get(F_NUMRIF).empty()) |       if (m.field(F_NUMRIF).active() && m.get(F_NUMRIF).blank()) | ||||||
|         m.set(F_NUMRIF, n, TRUE);              |         m.set(F_NUMRIF, n, TRUE);              | ||||||
|     }   |     }   | ||||||
|   } |   } | ||||||
| @ -2216,7 +2221,7 @@ bool TPrimanota_application::protiva_handler(TMask_field& f, KEY key) | |||||||
|     } |     } | ||||||
|     else  |     else  | ||||||
|     if (key == K_TAB && m.insert_mode() && app().npart_is_prot() && |     if (key == K_TAB && m.insert_mode() && app().npart_is_prot() && | ||||||
|         m.field(F_NUMRIF).active() && m.get(F_NUMRIF).empty()) |         m.field(F_NUMRIF).active() && m.get(F_NUMRIF).blank()) | ||||||
|     { |     { | ||||||
|       const TString& piva = f.get(); |       const TString& piva = f.get(); | ||||||
|       if (piva.not_empty())     |       if (piva.not_empty())     | ||||||
| @ -2324,18 +2329,69 @@ bool TPrimanota_application::corrvaluta_handler(TMask_field& f, KEY key) | |||||||
|   return TRUE; |   return TRUE; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | bool TPrimanota_application::activate_numrif(bool init_pag) | ||||||
|  | { | ||||||
|  |   CHECK(iva() != nessuna_iva, "Non esiste il numero riferimento in questa maschera!"); | ||||||
|  |   TMask& m = curr_mask(); | ||||||
|  |    | ||||||
|  |   bool shown = is_saldaconto();         // Il numero riferimento esiste 
 | ||||||
|  |    | ||||||
|  |   if (shown) | ||||||
|  |   { | ||||||
|  |     const bool solaiva = m.get_bool(F_SOLAIVA); | ||||||
|  |     if (solaiva) shown = FALSE; | ||||||
|  |   }   | ||||||
|  |    | ||||||
|  |   if (shown != m.field(F_NUMRIF).shown()) | ||||||
|  |   { | ||||||
|  |     m.show(F_ANNORIF, shown); | ||||||
|  |     m.show(F_NUMRIF,  shown);  | ||||||
|  |     if (!shown) | ||||||
|  |     { | ||||||
|  |       m.reset(F_ANNORIF); | ||||||
|  |       m.reset(F_NUMRIF); | ||||||
|  |     } | ||||||
|  |   } | ||||||
| 
 | 
 | ||||||
|  |   // Gestione pagina 3
 | ||||||
|  |   const bool page = shown && is_fattura() && !m.get(F_NUMRIF).blank(); | ||||||
|  |   if (page != m.page_enabled(2)) | ||||||
|  |   { | ||||||
|  |     m.enable_page(2, page);                  | ||||||
|  |     if (page && init_pag && m.is_running()) | ||||||
|  |     { | ||||||
|  |       if (m.edit_mode()) | ||||||
|  |       { | ||||||
|  |         const TString16 dt(m.get(F_DATADOC)); | ||||||
|  |         set_pagamento(NULL, dt);          // Reset pagamento
 | ||||||
|  |         set_totale_pagamento(); | ||||||
|  |          | ||||||
|  |         TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET); | ||||||
|  |         pagamento().set_sheet(ps);        // Aggiorna lo sheet
 | ||||||
|  |         pag_rows() = ps.rows_array();     // copia sheet       
 | ||||||
|  |       } | ||||||
|  |       else | ||||||
|  |         set_scadenze(m);                  // Inizializza pagamento
 | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |    | ||||||
|  |   return shown; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Handler del checkbox di movimento di sola IVA
 | ||||||
| bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key) | bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key) | ||||||
| {                                          | {                                          | ||||||
|   if (key == K_SPACE) |   if (key == K_SPACE) | ||||||
|   {      |   {      | ||||||
|     TMask& m = f.mask();                                   |     TMask& m = f.mask(); | ||||||
|  |     TPrimanota_application& a = app();                                   | ||||||
|  |      | ||||||
|     bool anchecg = f.get().empty();  |     bool anchecg = f.get().empty();  | ||||||
|     bool recalcg = anchecg; |     bool recalcg = anchecg; | ||||||
|      |      | ||||||
|     if (m.is_running() && app().is_fattura()) |     if (m.is_running() && a.is_fattura()) | ||||||
|     { |     { | ||||||
|       const TPartita* game = app().partite().first(); |       const TPartita* game = a.partite().first(); | ||||||
| 
 | 
 | ||||||
|       if (anchecg) |       if (anchecg) | ||||||
|       {     |       {     | ||||||
| @ -2350,37 +2406,32 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key) | |||||||
|         bool del = TRUE; |         bool del = TRUE; | ||||||
|         if (game != NULL) |         if (game != NULL) | ||||||
|           del = f.yesno_box("Si desidera cancellare il saldaconto?"); |           del = f.yesno_box("Si desidera cancellare il saldaconto?"); | ||||||
|         if (del)   |         if (!del)   | ||||||
|         { |  | ||||||
|           m.set(F_NUMRIF, "", TRUE); |  | ||||||
|           m.reset(F_ANNORIF); |  | ||||||
|         }   |  | ||||||
|         else              |  | ||||||
|         { |         { | ||||||
|           f.reset(); |           f.reset(); | ||||||
|           anchecg = TRUE; |           anchecg = TRUE; | ||||||
|           recalcg = FALSE; |           recalcg = FALSE; | ||||||
|         }   |         }   | ||||||
|       } |       } | ||||||
|  |       a.activate_numrif(TRUE); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     m.enable(F_ANNORIF, anchecg); |  | ||||||
|     m.enable(F_NUMRIF,  anchecg); |  | ||||||
|      |  | ||||||
|     m.show(F_SHEETCG, anchecg); |     m.show(F_SHEETCG, anchecg); | ||||||
|     m.show(F_DARE,    anchecg); |     m.show(F_DARE,    anchecg); | ||||||
|     m.show(F_AVERE,   anchecg); |     m.show(F_AVERE,   anchecg); | ||||||
|      |      | ||||||
|     if (m.is_running() && recalcg) |     if (m.is_running() && recalcg) | ||||||
|     {                       |     {                       | ||||||
|       TSheet_field& iva = app().ivas(); |       TSheet_field& iva = a.ivas(); | ||||||
|       const int righe = iva.items(); |       const int righe = iva.items(); | ||||||
|       TProgind pi(righe, "Generazione righe contabilita'", FALSE, TRUE, 16); |       TProgind pi(righe, "Generazione righe contabilita'", FALSE, TRUE, 16); | ||||||
|        |        | ||||||
|       app().cgs().reset(); |       TSheet_field& cg = a.cgs(); | ||||||
|       app().add_cgs_tot(m); |       cg.reset(); | ||||||
|       if (m.get(F_RITFIS).not_empty()) app().add_cgs_rit(TRUE); |        | ||||||
|       if (m.get(F_RITSOC).not_empty()) app().add_cgs_rit(FALSE); |       a.add_cgs_tot(m);                                        // Genera totale documento
 | ||||||
|  |       if (m.get(F_RITFIS).not_empty()) a.add_cgs_rit(TRUE);    // Genera ritenute fiscali
 | ||||||
|  |       if (m.get(F_RITSOC).not_empty()) a.add_cgs_rit(FALSE);   // Genera ritenute sociali
 | ||||||
|        |        | ||||||
|       TToken_string oldrow(128); |       TToken_string oldrow(128); | ||||||
|       for (int i = 0; i < righe; i++) |       for (int i = 0; i < righe; i++) | ||||||
| @ -2390,15 +2441,15 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key) | |||||||
|         { |         { | ||||||
|           oldrow = r; |           oldrow = r; | ||||||
|           r = ""; |           r = ""; | ||||||
|           iva_notify(iva, i, K_SPACE); |           iva_notify(iva, i, K_SPACE);   // Simula la creazione di una nuova riga iva
 | ||||||
|           r = oldrow; |           r = oldrow; | ||||||
|           iva_notify(iva, i, K_ENTER); |           iva_notify(iva, i, K_ENTER); | ||||||
|         } |         } | ||||||
|         pi.setstatus(i+1); |         pi.setstatus(i+1); | ||||||
|       } |       } | ||||||
|       app().fill_sheet(m); |       a.fill_sheet(m);                   // Aggiunge righe vuote
 | ||||||
|       app().cgs().force_update(); |       cg.force_update(); | ||||||
|       m.set_focus(); |       m.set_focus();                     // Ripristina il focus al campo (a causa della progind)
 | ||||||
|     } |     } | ||||||
|   }   |   }   | ||||||
|   return TRUE;   |   return TRUE;   | ||||||
|  | |||||||
| @ -178,6 +178,7 @@ protected: | |||||||
|   bool is_fattura() const { return gestione_saldaconto() && causale().tipomov() == 1; } |   bool is_fattura() const { return gestione_saldaconto() && causale().tipomov() == 1; } | ||||||
|   bool is_nota_credito() const { return gestione_saldaconto() && causale().tipomov() == 2; } |   bool is_nota_credito() const { return gestione_saldaconto() && causale().tipomov() == 2; } | ||||||
|   bool is_pagamento() const { return gestione_saldaconto() && causale().tipomov() >= 3; } |   bool is_pagamento() const { return gestione_saldaconto() && causale().tipomov() >= 3; } | ||||||
|  |   bool activate_numrif(bool set_pag); | ||||||
| 
 | 
 | ||||||
|   void fill_sheet(TMask& m) const; |   void fill_sheet(TMask& m) const; | ||||||
|   void init_mask(TMask& m); |   void init_mask(TMask& m); | ||||||
|  | |||||||
							
								
								
									
										101
									
								
								cg/cg2104.cpp
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								cg/cg2104.cpp
									
									
									
									
									
								
							| @ -247,16 +247,10 @@ bool TPrimanota_application::pag_sheet_handler(TMask_field& f, KEY key) | |||||||
|         const char* const pic = in_valuta ? ".3" : ".";                 |         const char* const pic = in_valuta ? ".3" : ".";                 | ||||||
|         const TString is(imp.string(pic)); |         const TString is(imp.string(pic)); | ||||||
|         const TString ts(tot.string(pic)); |         const TString ts(tot.string(pic)); | ||||||
|         const bool recalc = yesno_box("Il totale delle rate e' %s mentre\n" |         ok = yesno_box("Il totale delle rate e' %s mentre\n" | ||||||
|                                       "il totale del documento e' %s.\n" |                        "il totale del documento e' %s.\n" | ||||||
|                                       "Si desidera ricalcolare le rate e poi\n" |                        "Si desidera registrare ugualmente?", | ||||||
|                                       "registrare in un secondo momento?", |                        (const char*)is, (const char*)ts); | ||||||
|                                       (const char*)is, (const char*)ts); |  | ||||||
|         if (recalc)                               |  | ||||||
|         { |  | ||||||
|           app().set_scadenze(m); |  | ||||||
|           ok = FALSE;              // Permette di guardare il risultato prima di registrare
 |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|        |        | ||||||
| @ -304,19 +298,20 @@ bool TPrimanota_application::tipopag_handler(TMask_field& f, KEY key) | |||||||
| bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) | bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) | ||||||
| {                  | {                  | ||||||
|   bool ok = TRUE;               |   bool ok = TRUE;               | ||||||
|   TMask& m = f.mask(); |  | ||||||
|    |    | ||||||
|   const bool set_scad =  m.page_enabled(2);   // E' attiva pagina 3
 |   TMask& m = f.mask(); | ||||||
|  |   TPrimanota_application& a = app(); | ||||||
|  |   const bool set_scad = a.is_fattura() && m.page_enabled(2);   // E' attiva pagina 3
 | ||||||
|   if (key == K_ENTER) |   if (key == K_ENTER) | ||||||
|   {   |   {   | ||||||
|     const bool required = app().is_fattura() && (m.insert_mode() || set_scad); |     const bool required = a.is_fattura() && (m.insert_mode() || set_scad); | ||||||
|     if (required && f.get().empty()) |     if (required && f.get().empty()) | ||||||
|     { |     { | ||||||
|       error_box("Il codice di pagamento e' obbligatorio!\n" |       f.error_box("Il codice di pagamento e' obbligatorio!\n" | ||||||
|                 "Se possibile esso verra' proposto, ma potra'\n" |                   "Se possibile esso verra' proposto, ma potra'\n" | ||||||
|                 "essere modificato prima di registrare il movimento."); |                   "essere modificato prima di registrare il movimento."); | ||||||
| 
 | 
 | ||||||
|       const char typ = app().clifo(); |       const char typ = a.clifo(); | ||||||
|       const long cod = m.get_long(typ == 'C' ? F_CLIENTE : F_FORNITORE); |       const long cod = m.get_long(typ == 'C' ? F_CLIENTE : F_FORNITORE); | ||||||
|          |          | ||||||
|       TLocalisamfile clifo(LF_CLIFO); |       TLocalisamfile clifo(LF_CLIFO); | ||||||
| @ -336,7 +331,7 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key) | |||||||
|   }    |   }    | ||||||
|    |    | ||||||
|   if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad) |   if (key == K_TAB && f.focusdirty() && m.insert_mode() && set_scad) | ||||||
|     app().set_scadenze(m); |     a.set_scadenze(m); | ||||||
| 
 | 
 | ||||||
|   return ok; |   return ok; | ||||||
| } | } | ||||||
| @ -346,7 +341,7 @@ bool TPrimanota_application::annorif_handler(TMask_field& f, KEY key) | |||||||
|   bool ok = TRUE; |   bool ok = TRUE; | ||||||
|   const TMask& m = f.mask(); |   const TMask& m = f.mask(); | ||||||
|    |    | ||||||
|   if (f.to_check(key) && f.get().empty() &&  |   if (f.to_check(key, TRUE) && f.get().empty() &&  | ||||||
|       (m.insert_mode() || m.get(F_NUMRIF).not_empty())) |       (m.insert_mode() || m.get(F_NUMRIF).not_empty())) | ||||||
|   { |   { | ||||||
|     const TString& anno = m.get(F_DATADOC).right(4); |     const TString& anno = m.get(F_DATADOC).right(4); | ||||||
| @ -364,27 +359,39 @@ bool TPrimanota_application::numrif_handler(TMask_field& f, KEY key) | |||||||
|    |    | ||||||
|   if (f.to_check(key, TRUE)) |   if (f.to_check(key, TRUE)) | ||||||
|   {               |   {               | ||||||
|  |     TPrimanota_application& a = app(); | ||||||
|     TMask& m = f.mask(); |     TMask& m = f.mask(); | ||||||
|     const bool empty = f.get().blank(); | 
 | ||||||
|      |     if (f.focusdirty() && m.insert_mode() && f.get().blank()) | ||||||
|     if (empty && f.focusdirty() && m.insert_mode() && !m.get_bool(F_SOLAIVA)) |  | ||||||
|     {                                                                 |     {                                                                 | ||||||
|       f.set(m.get(app()._npart_is_prot ? F_PROTIVA : F_NUMDOC)); |       f.set(m.get(a._npart_is_prot ? F_PROTIVA : F_NUMDOC)); | ||||||
|  |        | ||||||
|       if (m.get(F_CODPAG).empty()) |       if (m.get(F_CODPAG).empty()) | ||||||
|       { |       { | ||||||
|         TMask_field& clifo = m.field(app().iva() == iva_vendite ? F_CLIENTE : F_FORNITORE); |         TMask_field& clifo = m.field(a.iva() == iva_vendite ? F_CLIENTE : F_FORNITORE); | ||||||
|  |         clifo.set_dirty(); | ||||||
|         clifo.on_hit(); |         clifo.on_hit(); | ||||||
|       } |       } | ||||||
|  | 
 | ||||||
|  |       TMask_field& anno = m.field(F_ANNORIF); | ||||||
|  |       if (anno.get().empty()) | ||||||
|  |       {        | ||||||
|  |         anno.set_dirty(); | ||||||
|  |         anno.on_hit(); | ||||||
|  |       } | ||||||
|  |        | ||||||
|       ok = error_box("Il numero di riferimento partita e' obbligatorio!\n" |       ok = error_box("Il numero di riferimento partita e' obbligatorio!\n" | ||||||
|                      "Se possibile esso verra' proposto, ma potra'\n" |                      "Se possibile esso verra' proposto, ma potra'\n" | ||||||
|                      "essere modificato prima di registrare il movimento."); |                      "essere modificato prima di registrare il movimento."); | ||||||
|     } |     } | ||||||
|     m.enable_page(2, !f.get().blank()); |      | ||||||
|  |     if (key == K_TAB && a.is_fattura()) | ||||||
|  |       a.activate_numrif(TRUE); | ||||||
| 
 | 
 | ||||||
|     if (key == K_ENTER && m.edit_mode()) |     if (ok && key == K_ENTER && m.edit_mode()) | ||||||
|     { |     { | ||||||
|       const TPartita* old = app().partite().first(); |       const TPartita* old = a.partite().first(); | ||||||
|       if (old && old->ok() && empty)   // Se esisteva una partita ma ora non piu'
 |       if (old && old->ok() && f.get().blank())   // Se esisteva una partita ma ora non piu'
 | ||||||
|       {  |       {  | ||||||
|         const KEY k = yesnocancel_box("Attenzione la fattura della partita %d %s verra' eliminata.\n" |         const KEY k = yesnocancel_box("Attenzione la fattura della partita %d %s verra' eliminata.\n" | ||||||
|                                       "Premere SI per cancellarla, NO per ripristinarla, ANNULLA per modificarla", |                                       "Premere SI per cancellarla, NO per ripristinarla, ANNULLA per modificarla", | ||||||
| @ -512,8 +519,7 @@ bool TPrimanota_application::recalc_handler(TMask_field& f, KEY key) | |||||||
|     // cio' implica, evidentemente, che si memorizzi non solo il
 |     // cio' implica, evidentemente, che si memorizzi non solo il
 | ||||||
|     // nuovo tpr ma anche il fatto che lo si e' cambiato, in quanto
 |     // nuovo tpr ma anche il fatto che lo si e' cambiato, in quanto
 | ||||||
|     // se si riattiva il ricalcolo occorre rimetterlo come era
 |     // se si riattiva il ricalcolo occorre rimetterlo come era
 | ||||||
|     // in precedenza, aggiungendo (su conferma) un pompino 
 |     // in precedenza.
 | ||||||
|     // di emergenza salvaguai al gentile cliente   
 |  | ||||||
|     // ---------------------------------------------------------
 |     // ---------------------------------------------------------
 | ||||||
|     TMask& m = f.mask(); |     TMask& m = f.mask(); | ||||||
|     TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET); |     TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET); | ||||||
| @ -847,8 +853,8 @@ void TPrimanota_application::write_scadenze(const TMask& m) | |||||||
|     const TString desc(m.get(F_DESCR)); |     const TString desc(m.get(F_DESCR)); | ||||||
|     const TString codpag(m.get(F_CODPAG)); |     const TString codpag(m.get(F_CODPAG)); | ||||||
|     const TString codcaus(causale().codice());  |     const TString codcaus(causale().codice());  | ||||||
|     const TValuta cambio (m, SK_VALUTA, SK_DATACAMBIO, SK_CAMBIO);  |     const TValuta cambio(m, SK_VALUTA, SK_DATACAMBIO, SK_CAMBIO);  | ||||||
|     const TString agente (m.get(FS_AGENTE));  |     const TString agente(m.get(FS_AGENTE));  | ||||||
|     const char sezione = get_cgs_imp(0).sezione();        // Dare/Avere
 |     const char sezione = get_cgs_imp(0).sezione();        // Dare/Avere
 | ||||||
|   |   | ||||||
|     TBill clifo;  |     TBill clifo;  | ||||||
| @ -900,20 +906,23 @@ void TPrimanota_application::write_scadenze(const TMask& m) | |||||||
|       TToken_string& row = ps.row(i); |       TToken_string& row = ps.row(i); | ||||||
|        |        | ||||||
|       TRiga_scadenze& scadenza = partita.new_row();  |       TRiga_scadenze& scadenza = partita.new_row();  | ||||||
|       scadenza.put(SCAD_CODPAG,   codpag); | <<<<<<< cg2104.cpp | ||||||
|       scadenza.put(SCAD_TIPOPAG,  pag.tipo_rata(i)); |       scadenza.put(SCAD_CODPAG,     codpag);     // Codice pagamento
 | ||||||
|       scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i)); |       scadenza.put(SCAD_CODAG,      agente);     // Codice agente
 | ||||||
|       scadenza.put(SCAD_IMPORTO,  pag.tlit_rata(i)); | 
 | ||||||
|       scadenza.put(SCAD_IMPORTO,    row.get(1));  // 1 = Importo
 |       scadenza.put(SCAD_DATASCAD,   row.get(0)); // 0 = Data scadenza
 | ||||||
|       scadenza.put(SCAD_IMPORTOVAL, row.get(2));  // 2 = Importo in valuta
 |       scadenza.put(SCAD_IMPORTO,    row.get());  // 1 = Importo
 | ||||||
|       scadenza.put(SCAD_DATASCAD, pag.data_rata(i)); |       scadenza.put(SCAD_IMPORTOVAL, row.get());  // 2 = Importo in valuta
 | ||||||
|       scadenza.put(SCAD_CODABIPR, row.get(7));     |       row.get();                                 // 3 = Percentuale
 | ||||||
|       scadenza.put(SCAD_CODCABPR, row.get(8));     |       scadenza.put(SCAD_TIPOPAG,    row.get());  // 4 = Tipo pagamento
 | ||||||
|       scadenza.put(SCAD_CODABI,   row.get(9));     |       scadenza.put(SCAD_ULTCLASS,   row.get());  // 5 = Ulteriore classificazione
 | ||||||
|       scadenza.put(SCAD_CODCAB,   row.get(10));     |       row.get();                                 // 6 = Descrizione pagamento
 | ||||||
|       scadenza.put(SCAD_DESCR,    row.get(11));  //11 = Note  
 |       scadenza.put(SCAD_CODABIPR,   row.get());  // 7 = Ns ABI  
 | ||||||
|       scadenza.put(SCAD_BLOCCATA, row.get(12));  //12 = Non pagabile  
 |       scadenza.put(SCAD_CODCABPR,   row.get());  // 8 = Ns CAB  
 | ||||||
|       scadenza.put(SCAD_CODAG,    agente); |       scadenza.put(SCAD_CODABI,     row.get());  // 9 = Vs ABI  
 | ||||||
|  |       scadenza.put(SCAD_CODCAB,     row.get());  //10 = Vs CAB 
 | ||||||
|  |       scadenza.put(SCAD_DESCR,      row.get());  //11 = Note  
 | ||||||
|  |       scadenza.put(SCAD_BLOCCATA,   row.get());  //12 = Non pagabile  
 | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										218
									
								
								cg/cg2105.cpp
									
									
									
									
									
								
							
							
						
						
									
										218
									
								
								cg/cg2105.cpp
									
									
									
									
									
								
							| @ -14,6 +14,81 @@ | |||||||
| #include <partite.h>          // Archivio partite
 | #include <partite.h>          // Archivio partite
 | ||||||
| #include <scadenze.h>         // Archivio scadenze
 | #include <scadenze.h>         // Archivio scadenze
 | ||||||
| 
 | 
 | ||||||
|  | ///////////////////////////////////////////////////////////
 | ||||||
|  | // Definizione Maschera partite
 | ||||||
|  | ///////////////////////////////////////////////////////////
 | ||||||
|  | 
 | ||||||
|  | class TGame_mask : public TMask | ||||||
|  | {                        | ||||||
|  |   const TBill _conto;          // Conto fisso del cliente/fornitore
 | ||||||
|  |   long _numreg;                // Numero movimento contabile
 | ||||||
|  |   int  _numrig;                // Riga contabile corrente (prima = 1!)
 | ||||||
|  |   TImporto _importo;           // Importo su riga contabile
 | ||||||
|  |   TImporto _residuo, _resval;  // Residuo della riga contabile
 | ||||||
|  |   int _riga_partite;           // Riga corrente delle partite
 | ||||||
|  |   bool _changed;               // Flag di modifica partite
 | ||||||
|  |   bool _valfirst;              // La colonna della valuta precede le lire
 | ||||||
|  |    | ||||||
|  |   tipo_movimento _tipomov;     // Dati per la creazione di un nuovo movimento
 | ||||||
|  |   char _sezione; | ||||||
|  |   TDate _datadoc; | ||||||
|  |   TString _codpag, _descr, _numdoc; | ||||||
|  |    | ||||||
|  |   TDecoder _causali;           // Decodificatore delle causali
 | ||||||
|  |    | ||||||
|  | protected: | ||||||
|  |   static bool annopart_handler(TMask_field& f, KEY k); | ||||||
|  |   static bool numpart_handler(TMask_field& f, KEY k); | ||||||
|  |   static bool partite_notify(TSheet_field& partite, int r, KEY k); | ||||||
|  |   static bool scadenze_notify(TSheet_field& partite, int r, KEY k); | ||||||
|  |   static bool show_all_handler(TMask_field& f, KEY k); | ||||||
|  |   static bool edit_scadenza_handler(TMask_field& f, KEY k); | ||||||
|  |   static bool nuovo_handler(TMask_field& f, KEY k); | ||||||
|  |   static bool cambio_handler(TMask_field& f, KEY k); | ||||||
|  | 
 | ||||||
|  |   void add_importo(TToken_string& s, const TImporto& i, bool val = FALSE, int pos = -1); | ||||||
|  |   void add_descrizione(TToken_string& s, const TRiga_partite& riga, int pos = -1); | ||||||
|  |   TImporto get_importo(TToken_string& s, int pos) const; | ||||||
|  |    | ||||||
|  |   void fill_partite(); | ||||||
|  |    | ||||||
|  |   real aggiorna_residuo(); | ||||||
|  |    | ||||||
|  |   int update_partita(const TPartita& game, int prow); | ||||||
|  |   void update_saldo_clifo(); | ||||||
|  |   int nuova_riga(TPartita& partita) const; | ||||||
|  |   int nuovo_pagamento(TPartita& partita, int nriga, int rata) const; | ||||||
|  |   bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) const; | ||||||
|  | 
 | ||||||
|  |   char calcola_sezione() const; | ||||||
|  |   void align_number(TMask_field& f) const; | ||||||
|  |   long number_distance(const char* key, const char* num) const; | ||||||
|  |   bool same_number(const char* key, const char* num) const; | ||||||
|  |   void append_conto(TString& s) const; | ||||||
|  |    | ||||||
|  | #ifdef __EXTRA__   | ||||||
|  |   bool edit_fattura(TPartita& p, int nriga); | ||||||
|  |   bool prima_nota(const long nreg); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |   const TRiga_partite* cerca_prima_riga() const; | ||||||
|  |   void aggiorna_valuta(const TValuta& val); | ||||||
|  |   void aggiorna_sorelle(const TRiga_partite& part) const; | ||||||
|  |    | ||||||
|  | public: | ||||||
|  |   TSheet_field& partite() const { return (TSheet_field&)field(P_PARTITE); } | ||||||
|  |   TSheet_field& scadenze() const { return (TSheet_field&)field(P_SCADENZE); } | ||||||
|  |   const TBill& conto() const { return _conto; } | ||||||
|  |    | ||||||
|  |   const TImporto& residuo(bool val) const { return val ? _resval : _residuo; } | ||||||
|  |   bool changed() const { return _changed; } | ||||||
|  | 
 | ||||||
|  |   TGame_mask(const TBill& bill, long numreg, int riga); | ||||||
|  |   virtual ~TGame_mask() {} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| ///////////////////////////////////////////////////////////
 | ///////////////////////////////////////////////////////////
 | ||||||
| // Maschera pagamenti
 | // Maschera pagamenti
 | ||||||
| ///////////////////////////////////////////////////////////
 | ///////////////////////////////////////////////////////////
 | ||||||
| @ -22,6 +97,7 @@ class TPay_mask : public TMask | |||||||
| {  | {  | ||||||
|   TDate _datadoc;                          |   TDate _datadoc;                          | ||||||
|   real _da_pagare, _pagabile; |   real _da_pagare, _pagabile; | ||||||
|  |   const TGame_mask& _parent; | ||||||
|    |    | ||||||
|   TDecoder _causale; |   TDecoder _causale; | ||||||
|    |    | ||||||
| @ -38,12 +114,13 @@ public: | |||||||
|   void set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, const TImporto& importo); |   void set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, const TImporto& importo); | ||||||
|   void get_pag(TRectype& oldpag) const; |   void get_pag(TRectype& oldpag) const; | ||||||
| 
 | 
 | ||||||
|   TPay_mask(); |   TPay_mask(const TGame_mask& parent); | ||||||
|   virtual ~TPay_mask() {} |   virtual ~TPay_mask() {} | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| TPay_mask::TPay_mask()  | TPay_mask::TPay_mask(const TGame_mask& parent)  | ||||||
|          : TMask("cg2100s"), _causale(LF_CAUSALI, CAU_CODCAUS, CAU_DESCR) |          : TMask("cg2100s"), _parent(parent),  | ||||||
|  |            _causale(LF_CAUSALI, CAU_CODCAUS, CAU_DESCR) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -118,10 +195,7 @@ void TPay_mask::set_pag(const TRectype& oldpag, const TRiga_scadenze& scad, | |||||||
|   const long numreg = sum.get_long(PART_NREG); |   const long numreg = sum.get_long(PART_NREG); | ||||||
|   const int numrig = sum.get_int(PART_NUMRIG); |   const int numrig = sum.get_int(PART_NUMRIG); | ||||||
| 
 | 
 | ||||||
|   if (in_valuta) |   _pagabile = _parent.residuo(in_valuta).valore(); | ||||||
|     _pagabile = val.lit2val(residuo.valore()); |  | ||||||
|   else        |  | ||||||
|     _pagabile = residuo.valore(); |  | ||||||
| 
 | 
 | ||||||
|   TReal_field& resp = (TReal_field&)field(S_RESIDUOPAG); |   TReal_field& resp = (TReal_field&)field(S_RESIDUOPAG); | ||||||
|   resp.set_decimals(in_valuta ? 3 : 0); |   resp.set_decimals(in_valuta ? 3 : 0); | ||||||
| @ -186,8 +260,11 @@ void TPay_mask::gioca_cambi(int force) | |||||||
| {                | {                | ||||||
|   const real totale = get(S_IMPORTO); |   const real totale = get(S_IMPORTO); | ||||||
|   const real totval = get(S_IMPORTOVAL); |   const real totval = get(S_IMPORTOVAL); | ||||||
|   const TValuta cambio(*this, S_VALUTA, S_DATACAMBIO, S_CAMBIO); | #ifdef __EXTRA__ | ||||||
|    |   const TValuta cambio(this, S_VALUTA, S_DATACAMBIO, S_CAMBIO); | ||||||
|  | #else   | ||||||
|  |   const TValuta cambio(_parent, P_VALUTA, P_DATACAMBIO, P_CAMBIO); | ||||||
|  | #endif   | ||||||
|   if ( (force == 0x1 || totale.is_zero()) && !(totval.is_zero() || cambio.in_lire()) ) |   if ( (force == 0x1 || totale.is_zero()) && !(totval.is_zero() || cambio.in_lire()) ) | ||||||
|   { |   { | ||||||
|     const real new_totale = cambio.val2lit(totval); |     const real new_totale = cambio.val2lit(totval); | ||||||
| @ -289,7 +366,7 @@ bool TPay_mask::cambio_handler(TMask_field& f, KEY k) | |||||||
|   if (k == K_TAB && f.focusdirty()) |   if (k == K_TAB && f.focusdirty()) | ||||||
|   { |   { | ||||||
|     TPay_mask& m = (TPay_mask&)f.mask();          |     TPay_mask& m = (TPay_mask&)f.mask();          | ||||||
|     m.gioca_cambi(0x1); |     m.gioca_cambi(); | ||||||
|   } |   } | ||||||
|   return TRUE; |   return TRUE; | ||||||
| } | } | ||||||
| @ -326,73 +403,6 @@ bool TPay_mask::conto_handler(TMask_field& f, KEY k) | |||||||
| // Maschera partite
 | // Maschera partite
 | ||||||
| ///////////////////////////////////////////////////////////
 | ///////////////////////////////////////////////////////////
 | ||||||
| 
 | 
 | ||||||
| class TGame_mask : public TMask |  | ||||||
| {                        |  | ||||||
|   const TBill _conto;          // Conto fisso del cliente/fornitore
 |  | ||||||
|   long _numreg;                // Numero movimento contabile
 |  | ||||||
|   int  _numrig;                // Riga contabile corrente (prima = 1!)
 |  | ||||||
|   TImporto _importo;           // Importo su riga contabile
 |  | ||||||
|   TImporto _residuo;           // Residuo della riga contabile
 |  | ||||||
|   int _riga_partite;           // Riga corrente delle partite
 |  | ||||||
|   bool _changed;               // Flag di modifica partite
 |  | ||||||
|   bool _valfirst;              // La colonna della valuta precede le lire
 |  | ||||||
|    |  | ||||||
|   tipo_movimento _tipomov;     // Dati per la creazione di un nuovo movimento
 |  | ||||||
|   char _sezione; |  | ||||||
|   TDate _datadoc; |  | ||||||
|   TString _codpag, _descr, _numdoc; |  | ||||||
|    |  | ||||||
|   TDecoder _causali;           // Decodificatore delle causali
 |  | ||||||
|    |  | ||||||
| protected: |  | ||||||
|   static bool annopart_handler(TMask_field& f, KEY k); |  | ||||||
|   static bool numpart_handler(TMask_field& f, KEY k); |  | ||||||
|   static bool partite_notify(TSheet_field& partite, int r, KEY k); |  | ||||||
|   static bool scadenze_notify(TSheet_field& partite, int r, KEY k); |  | ||||||
|   static bool show_all_handler(TMask_field& f, KEY k); |  | ||||||
|   static bool edit_scadenza_handler(TMask_field& f, KEY k); |  | ||||||
|   static bool nuovo_handler(TMask_field& f, KEY k); |  | ||||||
|   static bool cambio_handler(TMask_field& f, KEY k); |  | ||||||
| 
 |  | ||||||
|   void add_importo(TToken_string& s, const TImporto& i, bool val = FALSE, int pos = -1); |  | ||||||
|   void add_descrizione(TToken_string& s, const TRiga_partite& riga, int pos = -1); |  | ||||||
|   TImporto get_importo(TToken_string& s, int pos) const; |  | ||||||
|    |  | ||||||
|   void fill_partite(); |  | ||||||
|   real aggiorna_residuo(); |  | ||||||
|    |  | ||||||
|   int update_partita(const TPartita& game, int prow); |  | ||||||
|   void update_saldo_clifo(); |  | ||||||
|   int nuova_riga(TPartita& partita) const; |  | ||||||
|   int nuovo_pagamento(TPartita& partita, int nriga, int rata) const; |  | ||||||
|   bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) const; |  | ||||||
| 
 |  | ||||||
|   char calcola_sezione() const; |  | ||||||
|   void align_number(TMask_field& f) const; |  | ||||||
|   long number_distance(const char* key, const char* num) const; |  | ||||||
|   bool same_number(const char* key, const char* num) const; |  | ||||||
|   void append_conto(TString& s) const; |  | ||||||
|    |  | ||||||
| #ifdef __EXTRA__   |  | ||||||
|   bool edit_fattura(TPartita& p, int nriga); |  | ||||||
|   bool prima_nota(const long nreg); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|   const TRiga_partite* cerca_prima_riga() const; |  | ||||||
|   void aggiorna_valuta(const TValuta& val); |  | ||||||
|   void aggiorna_sorelle(const TRiga_partite& part) const; |  | ||||||
|    |  | ||||||
| public: |  | ||||||
|   TSheet_field& partite() const { return (TSheet_field&)field(P_PARTITE); } |  | ||||||
|   TSheet_field& scadenze() const { return (TSheet_field&)field(P_SCADENZE); } |  | ||||||
|   const TBill& conto() const { return _conto; } |  | ||||||
|    |  | ||||||
|   bool changed() const { return _changed; } |  | ||||||
| 
 |  | ||||||
|   TGame_mask(const TBill& bill, long numreg, int riga); |  | ||||||
|   virtual ~TGame_mask() {} |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void TGame_mask::append_conto(TString& s) const | void TGame_mask::append_conto(TString& s) const | ||||||
| { | { | ||||||
|   switch (conto().tipo())  |   switch (conto().tipo())  | ||||||
| @ -518,12 +528,15 @@ bool TGame_mask::show_all_handler(TMask_field& f, KEY k) | |||||||
| 
 | 
 | ||||||
| bool TGame_mask::cambio_handler(TMask_field& f, KEY k) | bool TGame_mask::cambio_handler(TMask_field& f, KEY k) | ||||||
| { | { | ||||||
|   if (k == K_TAB && f.focusdirty() &&  |   if (k == K_TAB && f.focusdirty()) | ||||||
|       yesno_box("Aggiornare gli importi dei pagamenti?")) |  | ||||||
|   { |   { | ||||||
|     TGame_mask& gm = (TGame_mask&)f.mask(); |     TGame_mask& gm = (TGame_mask&)f.mask(); | ||||||
|     const TValuta val(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO); |     const bool needed = app().partite().mov2rig(gm._numreg, gm._numrig) > 0; | ||||||
|     gm.aggiorna_valuta(val); |     if (needed && yesno_box("Aggiornare gli importi dei pagamenti?")) | ||||||
|  |     { | ||||||
|  |       const TValuta val(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO); | ||||||
|  |       gm.aggiorna_valuta(val); | ||||||
|  |     }   | ||||||
|   } |   } | ||||||
|   return TRUE; |   return TRUE; | ||||||
| } | } | ||||||
| @ -553,10 +566,10 @@ real TGame_mask::aggiorna_residuo() | |||||||
|     const TValuta cambio(*this, P_VALUTA, P_DATACAMBIO, P_CAMBIO); |     const TValuta cambio(*this, P_VALUTA, P_DATACAMBIO, P_CAMBIO); | ||||||
|     if (cambio.in_valuta()) |     if (cambio.in_valuta()) | ||||||
|     { |     { | ||||||
|       TImporto resval = _importo; cambio.lit2val(resval); |       _resval = _importo; cambio.lit2val(_resval); | ||||||
|       resval -= app().partite().importo_speso(_numreg, _numrig, TRUE); // Residuo della riga
 |       _resval -= app().partite().importo_speso(_numreg, _numrig, TRUE); // Residuo della riga
 | ||||||
|       resval.normalize(sez); |       _resval.normalize(sez); | ||||||
|       set(P_RESIDUOVAL, resval.valore()); |       set(P_RESIDUOVAL, _resval.valore()); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|    |    | ||||||
| @ -648,8 +661,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k) | |||||||
|     gm.set(P_ANNO, anno);                                   // Aggiorna campi di ricerca
 |     gm.set(P_ANNO, anno);                                   // Aggiorna campi di ricerca
 | ||||||
|     gm.set(P_NUMERO, num); |     gm.set(P_NUMERO, num); | ||||||
|      |      | ||||||
|     TValuta cambio; |     TString prima_valuta;                                     // Codice prima valuta
 | ||||||
|     bool prima_valuta = FALSE; |  | ||||||
|        |        | ||||||
|     if (anno > 0) |     if (anno > 0) | ||||||
|     { |     { | ||||||
| @ -664,17 +676,18 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k) | |||||||
|       TToken_string riga_fattura(80); |       TToken_string riga_fattura(80); | ||||||
|        |        | ||||||
|       const int lastrow = game->last(); |       const int lastrow = game->last(); | ||||||
|  |        | ||||||
|  |       if (lastrow > 0 && prima_valuta.empty()) | ||||||
|  |         prima_valuta = game->riga(lastrow).get(PART_CODVAL); | ||||||
|  | 
 | ||||||
|  |       const bool in_valuta = prima_valuta.not_empty(); | ||||||
|  |        | ||||||
|       for (int ri = game->first(); ri <= lastrow; ri = game->succ(ri)) |       for (int ri = game->first(); ri <= lastrow; ri = game->succ(ri)) | ||||||
|       { |       { | ||||||
|         const TRiga_partite& riga = game->riga(ri); |         const TRiga_partite& riga = game->riga(ri); | ||||||
|         if (!riga.is_fattura()) |         if (!riga.is_fattura()) | ||||||
|           continue; |           continue; | ||||||
| 
 | 
 | ||||||
|         cambio.get(riga); |  | ||||||
|         const bool in_valuta = cambio.in_valuta(); |  | ||||||
|         if (in_valuta) |  | ||||||
|           prima_valuta = TRUE; |  | ||||||
|          |  | ||||||
|         riga_fattura.cut(0); |         riga_fattura.cut(0); | ||||||
|         riga_fattura.add(ri); |         riga_fattura.add(ri); | ||||||
|         riga_fattura.add(""); |         riga_fattura.add(""); | ||||||
| @ -839,8 +852,8 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k) | |||||||
|       {         |       {         | ||||||
|         TToken_string& sp = scadenze.row(scadenze.add("")); |         TToken_string& sp = scadenze.row(scadenze.add("")); | ||||||
|         sp.add("Saldo partita", 4); |         sp.add("Saldo partita", 4); | ||||||
|         if (cambio.in_valuta()) |         if (prima_valuta.not_empty()) | ||||||
|           sp << ' ' << cambio.codice(); |           sp << ' ' << prima_valuta; | ||||||
|          |          | ||||||
|         gm.add_importo(sp, tot_lit); |         gm.add_importo(sp, tot_lit); | ||||||
|         gm.add_importo(sp, tot_val, TRUE); |         gm.add_importo(sp, tot_val, TRUE); | ||||||
| @ -850,15 +863,16 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k) | |||||||
|         delete game; |         delete game; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     if (prima_valuta != gm._valfirst) |     if (prima_valuta.not_empty() != gm._valfirst) | ||||||
|     {  |     {  | ||||||
|       sheet.swap_columns(106, 107); // Scambia le colonne dell'importo in lire e in valuta
 |       sheet.swap_columns(106, 107); // Scambia le colonne dell'importo in lire e in valuta
 | ||||||
|       gm._valfirst = prima_valuta; |       gm._valfirst = prima_valuta.not_empty(); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     sheet.force_update();  |     if (sheet.items() > 0) | ||||||
|     if (sheet.items() > 0 && sheet.selected() > 0) |  | ||||||
|       sheet.select(0, TRUE); |       sheet.select(0, TRUE); | ||||||
|  |     else   | ||||||
|  |       sheet.force_update();  | ||||||
|        |        | ||||||
|     main_app().end_wait();   |     main_app().end_wait();   | ||||||
|   }    |   }    | ||||||
| @ -1425,8 +1439,10 @@ void TGame_mask::fill_partite() | |||||||
|     // correttamente gli archivi.
 |     // correttamente gli archivi.
 | ||||||
|     if (gioco->ok())      |     if (gioco->ok())      | ||||||
|     {         |     {         | ||||||
|       const TBill& zio = gioco->conto(); |       const TBill& k = gioco->conto();        | ||||||
|       if (zio.tipo() <= ' ' || zio.sottoconto() == conto().sottoconto()) |       const bool u = (k.tipo() > ' ' && k.sottoconto() == conto().sottoconto()) || | ||||||
|  |                      k == conto(); | ||||||
|  |       if (u) | ||||||
|         update_partita(*gioco, -1);              |         update_partita(*gioco, -1);              | ||||||
|     }   |     }   | ||||||
|   } |   } | ||||||
| @ -1487,7 +1503,7 @@ bool TGame_mask::edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) co | |||||||
|   TRectype oldpag = p.pagamento(nriga, nrata, nrigp); |   TRectype oldpag = p.pagamento(nriga, nrata, nrigp); | ||||||
|   TRiga_partite& somma  = p.riga(nrigp); |   TRiga_partite& somma  = p.riga(nrigp); | ||||||
| 
 | 
 | ||||||
|   TPay_mask* pm = new TPay_mask;                     // We must create masks on the heap
 |   TPay_mask* pm = new TPay_mask(*this);              // We must create masks on the heap
 | ||||||
|   TPay_mask& m = *pm; |   TPay_mask& m = *pm; | ||||||
| 
 | 
 | ||||||
|   if (nriga == TPartita::UNASSIGNED) |   if (nriga == TPartita::UNASSIGNED) | ||||||
|  | |||||||
| @ -52,6 +52,7 @@ public: | |||||||
|   int pred(int r) const { return _recarr.pred_row(r); } |   int pred(int r) const { return _recarr.pred_row(r); } | ||||||
|   int succ(int r) const { return _recarr.succ_row(r); } |   int succ(int r) const { return _recarr.succ_row(r); } | ||||||
|   bool exist(int r) const { return _recarr.exist(r); } |   bool exist(int r) const { return _recarr.exist(r); } | ||||||
|  |   int rows() const { return _recarr.rows(); } | ||||||
| 
 | 
 | ||||||
|   TTree_rectype(const TRectype& testata, const TRectype& riga, const char* num);    |   TTree_rectype(const TRectype& testata, const TRectype& riga, const char* num);    | ||||||
|   TTree_rectype(int testata, int riga, const char* num);    |   TTree_rectype(int testata, int riga, const char* num);    | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user