cosmesi da TString80 a TCodice_articolo
git-svn-id: svn://10.65.10.50/branches/R_10_00@23043 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									643681129b
								
							
						
					
					
						commit
						9abac455f4
					
				| @ -184,7 +184,7 @@ void TClifo_giac_mask::set_parametered_fields() | ||||
|   if (_magazzini) | ||||
|     delete _magazzini; | ||||
|    | ||||
|   _magazzini          = new TMagazzini; | ||||
|   _magazzini = new TMagazzini; | ||||
|    | ||||
|   // imposta il puntatore al gestore livelli giacenze
 | ||||
|   livelli_giac= new TCodgiac_livelli(); | ||||
| @ -283,7 +283,7 @@ TString TClifo_giac::query_giacenze(const TMask& m) | ||||
| { | ||||
|   const char tipocf = m.get(F_TIPOCF)[0]; | ||||
|   const long codcf = m.get_long(F_CODCF); | ||||
|   const TString80 codart = m.get(F_CODART); | ||||
|   const TCodice_articolo codart = m.get(F_CODART); | ||||
|   const int annoes = m.get_int(F_ANNOES); | ||||
| 
 | ||||
|   TString& giacenze = get_tmp_string(); | ||||
| @ -335,7 +335,7 @@ bool TClifo_giac::find(word key) | ||||
| 	bool ok = false; | ||||
| 	const char tipocf = _msk->get(F_TIPOCF)[0]; | ||||
|   const long codcf = _msk->get_long(F_CODCF); | ||||
|   const TString80 codart = _msk->get(F_CODART); | ||||
|   const TCodice_articolo codart = _msk->get(F_CODART); | ||||
|   const int annoes = _msk->get_int(F_ANNOES); | ||||
| 	 | ||||
| 	TLocalisamfile clifogiac(LF_CLIFOGIAC); | ||||
| @ -403,7 +403,7 @@ int TClifo_giac::write_giacenze(const TMask& m) | ||||
|   //prende i dati dalla maschera principale
 | ||||
|   const char tipocf = m.get(F_TIPOCF)[0]; | ||||
|   const long codcf = m.get_long(F_CODCF); | ||||
|   const TString80 codart = m.get(F_CODART); | ||||
|   const TCodice_articolo codart = m.get(F_CODART); | ||||
|   const int annoes = m.get_int(F_ANNOES); | ||||
| 
 | ||||
|   //..e quindi la maschera di sheet
 | ||||
| @ -474,13 +474,14 @@ int TClifo_giac::remove_giacenze(const char tipocf, const long codcf, const TStr | ||||
|   } | ||||
|   return err; | ||||
| } | ||||
| 
 | ||||
| bool TClifo_giac::remove() | ||||
| { | ||||
|   //recupero i dati della testata
 | ||||
|   const TRectype rec = _rel->curr(); | ||||
|   const char tipocf = rec.get_char(CLIFOGIAC_TIPOCF); | ||||
|   const long codcf = rec.get_long(CLIFOGIAC_CODCF); | ||||
|   const TString80 codart = rec.get(CLIFOGIAC_CODART); | ||||
|   const TCodice_articolo codart = rec.get(CLIFOGIAC_CODART); | ||||
|   const int annoes = rec.get_int(CLIFOGIAC_ANNOES); | ||||
| 
 | ||||
|   return remove_giacenze(tipocf, codcf, codart, annoes) > 0; | ||||
| @ -496,9 +497,7 @@ bool TClifo_giac::user_create() | ||||
| 
 | ||||
|   const bool gestmag = _msk->magazzini().gestmag(); | ||||
|   if (!gestmag) | ||||
|   { | ||||
|     return error_box(TR("Per utilizzare questo programma e' NECESSARIO attivare la Gestione del magazzino!")); | ||||
|   } | ||||
|     return error_box(TR("Per utilizzare questo programma è NECESSARIO attivare la Gestione del magazzino!")); | ||||
| 
 | ||||
|   return true;                 | ||||
| } | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| #include <xvt.h> | ||||
| 
 | ||||
| // Modulo di gestione movimenti
 | ||||
| // Modulo di gestione movimenti e saldi
 | ||||
| #include "mg1.h" | ||||
| 
 | ||||
| int main(int argc, char** argv) | ||||
|  | ||||
| @ -66,8 +66,8 @@ void TApp_rebuildbalances::main_loop() | ||||
|   while (m.run()==K_ENTER) | ||||
|   { | ||||
| 	  if (!rebuild_balances(m.get_int(F_ANNOES))) | ||||
|       warning_box(TR("A causa degli errori riscontrati i saldi di magazzino\npotrebbero non essere stati del tutto aggiornati.\n" | ||||
|                      "Procedere ad una nuova operazione di ''Ricostruzione saldi''")); | ||||
|       warning_box(TR("A causa degli errori riscontrati, i saldi di magazzino potrebbero non essere aggiornati.\n" | ||||
|                      "Si consiglia di procedere ad una nuova operazione di \"Ricostruzione saldi\"")); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -162,7 +162,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t) | ||||
|   case valorizz_costmediopond: | ||||
| 		{ | ||||
| 			const TString4 codmag = magrec.get(MAG_CODMAG).left(3); | ||||
| 			const TString80 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			const TString16 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			const TPrice prezzo(curr_art().costo_mediopond(annoes,codmag,livello)); | ||||
| 			p = prezzo.get_num(); | ||||
| 		} | ||||
| @ -170,7 +170,7 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t) | ||||
| 	case valorizz_costmedio: | ||||
| 		{ | ||||
| 		  const TString4 codmag = magrec.get(MAG_CODMAG).left(3); | ||||
| 			const TString80 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			const TString16 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			const TPrice prezzo(curr_art().costo_medio(annoes,codmag,livello)); | ||||
| 			p = prezzo.get_num(); | ||||
| 	  } | ||||
| @ -178,28 +178,28 @@ bool TForm_inventario::valorizzazione(TForm_item &cf, TTipo_valorizz t) | ||||
|   case valorizz_LIFO: | ||||
| 		{ | ||||
| 			const TString4 codmag = magrec.get(MAG_CODMAG).left(3); | ||||
| 			const TString80 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			const TString16 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			p = curr_art().LIFO(annoes,codmag,livello, false,_valcomp); | ||||
| 		} | ||||
| 		break; | ||||
|   case valorizz_FIFO: | ||||
| 		{ | ||||
| 	    const TString4 codmag = magrec.get(MAG_CODMAG).left(3); | ||||
| 		  const TString80 livello(magrec.get(MAG_LIVELLO)); | ||||
| 		  const TString16 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			p = curr_art().FIFO(annoes,codmag,livello, false,_valcomp); | ||||
| 		} | ||||
| 		break; | ||||
|   case valorizz_LIFOa: | ||||
| 		{ | ||||
| 	    const TString4 codmag = magrec.get(MAG_CODMAG).left(3); | ||||
| 		  const TString80 livello(magrec.get(MAG_LIVELLO)); | ||||
| 		  const TString16 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			p = curr_art().LIFO_annuale(annoes,codmag,livello, false, _valcomp); | ||||
| 		} | ||||
| 		break; | ||||
|   case valorizz_FIFOa: | ||||
| 		{ | ||||
| 	    const TString4 codmag = magrec.get(MAG_CODMAG).left(3); | ||||
| 		  const TString80 livello(magrec.get(MAG_LIVELLO)); | ||||
| 		  const TString16 livello(magrec.get(MAG_LIVELLO)); | ||||
| 			p = curr_art().FIFO_annuale(annoes,codmag,livello, false, _valcomp); | ||||
| 		} | ||||
| 		break; | ||||
|  | ||||
| @ -209,7 +209,7 @@ public: | ||||
|   bool riporta_saldi(const char * oldes, const char* newes, const TTipo_valorizz tipo,  | ||||
|                      const char * catven ,const char * codlist, bool save_to_disk = true) {	return riporta_saldi(atoi(oldes), atoi(newes), tipo, catven, codlist, save_to_disk);} | ||||
|   bool azzera_saldi(int codes, int codespre, bool save_to_disk = true); | ||||
|   bool azzera_saldi(const char* codes, bool save_to_disk = true) { return azzera_saldi(atoi(codes), save_to_disk); } | ||||
|   //bool azzera_saldi(const char* codes, bool save_to_disk = true);
 | ||||
|    | ||||
| 	// valorizzazioni
 | ||||
|   real ultimo_costo(int  annoes) const; | ||||
|  | ||||
| @ -967,7 +967,8 @@ TMagazzini::TMagazzini() : | ||||
| 
 | ||||
| TMagazzini::~TMagazzini()  | ||||
| { | ||||
|   if (_mgconfig) delete _mgconfig; | ||||
|   if (_mgconfig)  | ||||
|     delete _mgconfig; | ||||
| } | ||||
| 
 | ||||
| void TMagazzini::init() | ||||
| @ -1009,34 +1010,30 @@ bool TMagazzini::gestmag(bool verbose) const | ||||
| { | ||||
|   test_firm() ;   | ||||
|   if (!_gestmag && verbose) | ||||
|     warning_box("La ditta corrente non gestisce il magazzino"); | ||||
|     warning_box(TR("La ditta corrente non gestisce il magazzino")); | ||||
|   return _gestmag; | ||||
| } | ||||
| bool TMagazzini::gestdep() const  | ||||
| { | ||||
|   test_firm() ; return _gestdep; | ||||
| } | ||||
| bool TMagazzini::gestubi_man() const  | ||||
| { | ||||
|   test_firm() ; return _gestubi=='M'; | ||||
| } | ||||
| bool TMagazzini::gestubi_tab() const  | ||||
| { | ||||
|   test_firm() ; return _gestubi=='T'; | ||||
| } | ||||
| bool TMagazzini::gestmultimag() const  | ||||
| { | ||||
|   test_firm() ; return _gestmultimag; | ||||
| } | ||||
| 
 | ||||
| const char * add_magcode(TString & str, const char * m) | ||||
| bool TMagazzini::gestdep() const  | ||||
| { test_firm() ; return _gestdep; } | ||||
| 
 | ||||
| bool TMagazzini::gestubi_man() const  | ||||
| { test_firm() ; return _gestubi=='M'; } | ||||
| 
 | ||||
| bool TMagazzini::gestubi_tab() const  | ||||
| { test_firm() ; return _gestubi=='T'; } | ||||
| 
 | ||||
| bool TMagazzini::gestmultimag() const  | ||||
| { test_firm() ; return _gestmultimag; } | ||||
| 
 | ||||
| const char* add_magcode(TString& str, const char* m) | ||||
| { | ||||
|   str = m;  | ||||
|   str.rpad(3); | ||||
|   return str; | ||||
| } | ||||
| 
 | ||||
| const char * add_depcode(TString & str, const char * d) | ||||
| const char* add_depcode(TString& str, const char* d) | ||||
| { | ||||
|   str << d; | ||||
|   return str.trim(); | ||||
| @ -1046,8 +1043,8 @@ bool riporta_ordinato() | ||||
| {       | ||||
| 	static bool __riporta_ordinato = FALSE; | ||||
| 	static long __firm = -883; | ||||
|    | ||||
|   const long cur_firm = prefix().get_codditta(); | ||||
| 
 | ||||
|   if (__firm != cur_firm) | ||||
|   {                | ||||
|   	__firm = cur_firm; | ||||
| @ -1056,12 +1053,12 @@ bool riporta_ordinato() | ||||
|   return __riporta_ordinato; | ||||
| } | ||||
| 
 | ||||
| const char * get_magcode(const TString & codmagdep) | ||||
| const char* get_magcode(const TString& codmagdep) | ||||
| { | ||||
|   return codmagdep.left(3); | ||||
| } | ||||
| 
 | ||||
| const char * get_depcode(const TString & codmagdep) | ||||
| const char* get_depcode(const TString& codmagdep) | ||||
| { | ||||
|   return codmagdep.mid(3); | ||||
| } | ||||
|  | ||||
| @ -646,7 +646,7 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk | ||||
|      | ||||
|     if (codespre > 0 && oldmag.rows() > 0) | ||||
|     { | ||||
|       const TString80 liv(mag.get(MAG_LIVELLO)); | ||||
|       const TString16 liv(mag.get(MAG_LIVELLO)); | ||||
| 		  const int row  = find_mag(oldmag, mag.get(MAG_CODMAG), liv); | ||||
| 		  if (row >= 0) | ||||
| 		  { | ||||
| @ -669,6 +669,9 @@ bool TArticolo_giacenza::azzera_saldi(int codes, int codespre, bool save_to_disk | ||||
|   return ok; | ||||
| } | ||||
| 
 | ||||
| //bool azzera_saldi(const char* codes, bool save_to_disk = true) 
 | ||||
| //{ return azzera_saldi(atoi(codes), save_to_disk); }
 | ||||
| 
 | ||||
| bool TArticolo_giacenza::riporta_saldi(int oldes, int newes, const TTipo_valorizz tipo,  | ||||
|                                        const char* catven, const char* codlis, bool save_to_disk) | ||||
| { | ||||
| @ -1602,11 +1605,11 @@ void TArticolo_giacenza_data::al(const TDate& data, const char* codmag, const ch | ||||
|   const long items = cur.items(); | ||||
|   cur.freeze(); | ||||
|    | ||||
|   TProgind* pi = NULL; | ||||
|   if (items >= 10) | ||||
|   TProgress_monitor* pi = NULL; | ||||
|   if (items >= 16) | ||||
|   { | ||||
|     TString80 str; str << TR("Calcolo giacenza articolo ") << codice(); | ||||
|     pi = new TProgind(items, str, false, true); | ||||
|     pi = new TProgress_monitor(items, str, false); | ||||
|   } | ||||
|   /*
 | ||||
|   TMov_mag* p_movmag = new TMov_mag;   | ||||
| @ -1618,8 +1621,6 @@ void TArticolo_giacenza_data::al(const TDate& data, const char* codmag, const ch | ||||
|    | ||||
|   for (cur = 0; cur.pos() < items; ++cur) | ||||
|   { | ||||
|     if (pi && !pi->addstatus(1)) | ||||
|       break; | ||||
|     const TDate datacomp = rel.curr(LF_MOVMAG).get_date(MOVMAG_DATACOMP); | ||||
| 		const TString& codart = rmovmag.get(RMOVMAG_CODART); | ||||
|     if (codart == codice() && datacomp >= inizio && datacomp <= data) | ||||
| @ -1646,6 +1647,9 @@ void TArticolo_giacenza_data::al(const TDate& data, const char* codmag, const ch | ||||
|         movmag.update_balances(rec, nrig); | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     if (pi && !pi->add_status()) | ||||
|       break; | ||||
|   } | ||||
|    | ||||
|   if (pi) delete pi; | ||||
|  | ||||
| @ -882,13 +882,13 @@ struct TBalance_params | ||||
| 	int codes; | ||||
| 	int codesprec; | ||||
| 	TTipo_valorizz tipov; | ||||
| 	const char * catv; | ||||
| 	const char * codl; | ||||
| 	const char* catv; | ||||
| 	const char* codl; | ||||
| }; | ||||
| 
 | ||||
| HIDDEN bool reset_giac(const TRelation& rel, void* pJolly) | ||||
| { | ||||
| 	TBalance_params & p = *((TBalance_params *)pJolly); | ||||
| 	TBalance_params& p = *((TBalance_params *)pJolly); | ||||
| 	TArticolo_giacenza articolo(rel.curr()); | ||||
|   if (p.zero_giac) | ||||
|     articolo.azzera_saldi(p.codes, p.codesprec); | ||||
| @ -897,7 +897,7 @@ HIDDEN bool reset_giac(const TRelation& rel, void* pJolly) | ||||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed) | ||||
| void reset_clifogiac(TRectype& rec, const TRectype& oldrec, bool closed) | ||||
| { | ||||
| 	if (!oldrec.empty()) | ||||
| 	{ | ||||
| @ -929,18 +929,20 @@ void reset_clifogiac(TRectype & rec, const TRectype & oldrec, bool closed) | ||||
|       rec.zero(CLIFOGIAC_ORDC); | ||||
| 			rec.zero(CLIFOGIAC_VALORDC); | ||||
|     } | ||||
| 		if (closed) | ||||
| 		//if (closed)  // Gestione che pare insensata
 | ||||
| 		{ | ||||
| 	    rec.put(CLIFOGIAC_DOTOD, oldrec.get(CLIFOGIAC_DOTOD)); | ||||
| 		  rec.put(CLIFOGIAC_DOTIN, oldrec.get(CLIFOGIAC_DOTIN)); | ||||
| 			rec.put(CLIFOGIAC_DOTTM, oldrec.get(CLIFOGIAC_DOTTM)); | ||||
| 		} | ||||
|     /*
 | ||||
| 		else | ||||
| 		{ | ||||
| 			rec.zero(CLIFOGIAC_DOTOD); | ||||
| 	    rec.zero(CLIFOGIAC_DOTIN); | ||||
| 		  rec.zero(CLIFOGIAC_DOTTM); | ||||
| 		} | ||||
|     */ | ||||
|   } | ||||
| 	else | ||||
| 	{ | ||||
| @ -989,20 +991,43 @@ void update_clifogiac(TRectype & rec, const TRectype & oldrec) | ||||
| 
 | ||||
| HIDDEN bool rel_reset_clifogiac(const TRelation& rel, void* pJolly) | ||||
| { | ||||
| 	TRectype & rec = rel.curr(); | ||||
| 	TBalance_params & p = *((TBalance_params *)pJolly); | ||||
| 	TRectype newrec(rec); | ||||
| 	const TBalance_params& p = *((TBalance_params *)pJolly); | ||||
| 
 | ||||
| 	newrec.put(CLIFOGIAC_ANNOES, p.codes); | ||||
| 	if (newrec.read(rel.lfile()) != NOERR) | ||||
|   TLocalisamfile& cg = rel.lfile(); | ||||
|   const TRectype oldrec = cg.curr();  // DON'T USE const TRectype& ON READING FILE!
 | ||||
|   CHECK(oldrec.get_int(CLIFOGIAC_ANNOES) == p.codesprec, "Anno esercizio non valido"); | ||||
| 
 | ||||
|   TRectype& newrec = cg.curr(); | ||||
| 	newrec.put(CLIFOGIAC_ANNOES, p.codes); // cambio da vecchio a nuovo anno
 | ||||
| 	if (cg.read() != NOERR) // verifica se record esiste già
 | ||||
| 	{ | ||||
| 		newrec = rec; | ||||
| 		newrec = oldrec; | ||||
| 		newrec.put(CLIFOGIAC_ANNOES, p.codes); | ||||
| 	} | ||||
| 	reset_clifogiac(newrec, rec, p.closed); | ||||
| 	return newrec.write_rewrite(rel.lfile()) == NOERR; | ||||
| 	reset_clifogiac(newrec, oldrec, p.closed); | ||||
| 	return cg.write_rewrite() == NOERR; | ||||
| } | ||||
| 
 | ||||
| HIDDEN bool rel_reset_newclifogiac(const TRelation& rel, void* pJolly) | ||||
| { | ||||
| 	const TBalance_params& p = *((TBalance_params *)pJolly); | ||||
|   if (p.codesprec > 0) // Always!
 | ||||
|   { | ||||
|     TLocalisamfile& cg = rel.lfile(); | ||||
|     TRectype newrec = cg.curr(); | ||||
|     CHECK(newrec.get_int(CLIFOGIAC_ANNOES) == p.codes, "Anno esercizio non valido"); | ||||
|   	cg.put(CLIFOGIAC_ANNOES, p.codesprec); // cambio da nuovo a vecchio anno
 | ||||
| 	  if (cg.read() != NOERR)                // verifica se prima non esisteva allora azzero anno nuovo
 | ||||
|     { | ||||
|       cg.zero(); | ||||
|       reset_clifogiac(newrec, cg.curr(), p.closed); | ||||
|       newrec.rewrite(cg); | ||||
|     } | ||||
|   } | ||||
|   return true; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| bool recalc_mov(const TRelation& rel, void* pJolly) | ||||
| { | ||||
| 	TMov_mag & mov_rec = (TMov_mag &) rel.lfile().curr(); | ||||
| @ -1016,7 +1041,6 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, | ||||
| 											const char* catven, const char* codlis) | ||||
| { | ||||
| 	TSystemisamfile a(LF_MOVMAG); | ||||
| 
 | ||||
| 	if (a.open(_excllock) != NOERR) | ||||
| 		return false; | ||||
| 
 | ||||
| @ -1032,7 +1056,6 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, | ||||
| 	p.tipov = tipo_valorizz; | ||||
| 	 | ||||
|   TString msg; | ||||
|   | ||||
|   { | ||||
|     // azzera tutte giacenze (ciclo sulle giacenze)
 | ||||
|     TRelation anamag_rel(LF_ANAMAG); | ||||
| @ -1045,14 +1068,17 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, | ||||
| 
 | ||||
|   if (p.codesprec > 0) | ||||
|   { | ||||
| 	  TString16 filter;  | ||||
|     filter << CLIFOGIAC_ANNOES << "==" << p.codesprec; // Copia giacenze da anno precedente ad anno corrente
 | ||||
|      | ||||
|     TRelation clifogiac_rel(LF_CLIFOGIAC); | ||||
| 	  TCursor c(&clifogiac_rel, filter); | ||||
|     TRectype filter = clifogiac_rel.curr(); | ||||
|     filter.put(CLIFOGIAC_ANNOES, p.codesprec);          // Scandisce anno precedente 
 | ||||
|     TCursor c(&clifogiac_rel, "", 1, &filter, &filter); // ANNO+CODCF+CODART+NRIGA
 | ||||
|     msg.format(FR("Ricostruzione saldi esercizio %04d: azzeramento giacenze clienti..."), codes); | ||||
|     c.scan(rel_reset_clifogiac, (void*)&p, msg); | ||||
| 
 | ||||
| 	  msg.format(FR("Ricostruzione saldi esercizio %04d: azzeramento giacenze clienti..."), codes); | ||||
| 	  c.scan(rel_reset_clifogiac, (void*)&p, msg); | ||||
|     filter.put(CLIFOGIAC_ANNOES, p.codes);              // Scandisce anno corrente
 | ||||
|     c.setregion(filter, filter); | ||||
|     msg.format(FR("Ricostruzione saldi esercizio %04d: ricalcolo dotazione iniziale..."), codes); | ||||
|     c.scan(rel_reset_newclifogiac, (void*)&p, msg); | ||||
|   } | ||||
| 
 | ||||
|   // Compattamento giacenze dopo cancellazione
 | ||||
| @ -1060,9 +1086,16 @@ bool rebuild_balances(int codes, const TTipo_valorizz tipo_valorizz, | ||||
|     //prefix().close_closeable_isamfiles(); // Altrimenti segnala -69 durante la pack
 | ||||
|   	TSystemisamfile mag(LF_MAG); | ||||
|     mag.pack(true, true); | ||||
|   } | ||||
| 
 | ||||
|    | ||||
|     /* Mi da sempre errore di compattamento
 | ||||
|     if (p.codesprec > 0) | ||||
|     { | ||||
|   	  TSystemisamfile clifogiac(LF_CLIFOGIAC); | ||||
|       clifogiac.pack(true, true); | ||||
|     } | ||||
|     */ | ||||
|   } | ||||
|      | ||||
|   // ricostruisce i saldi (ciclo sui movimenti)
 | ||||
|   bool ok = true; | ||||
|   { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user