Patch level : 12.0 288
Files correlati : Commento : Aggiunto il programma per la gestione degli ordini evasi git-svn-id: svn://10.65.10.50/branches/R_10_00@23301 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									d5b125d7e9
								
							
						
					
					
						commit
						eda245be5f
					
				
							
								
								
									
										41
									
								
								src/ve/ve0900.uml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/ve/ve0900.uml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | ||||
| #include "veuml.h" | ||||
| 
 | ||||
| TOOLBAR "Toolbar" 0 0 0 2 | ||||
| 
 | ||||
| #include <relapbar.h> | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| PAGE "Forza ordini completati" 0 0 0 0 | ||||
| 
 | ||||
| STRING F_CODNUM 4 | ||||
| BEGIN | ||||
|   PROMPT 2 5 "Numerazione  " | ||||
|   FIELD CODNUM | ||||
|   HELP "Codice numerazione" | ||||
|   USE %NUM | ||||
|   INPUT CODTAB F_CODNUM | ||||
|   DISPLAY "Codice" CODTAB | ||||
|   DISPLAY "Descrizione@50" S0 | ||||
|   OUTPUT F_CODNUM CODTAB | ||||
|   OUTPUT F_DESNUM S0 | ||||
|   CHECKTYPE FORCED | ||||
|   FLAG "UPA" | ||||
|   WARNING "Numerazione assente" | ||||
|   KEY 1 2 | ||||
| END | ||||
| 
 | ||||
| NUMBER F_ANNO 4 | ||||
| BEGIN | ||||
|   PROMPT 2 7 "Anno    " | ||||
|   FIELD ANNO | ||||
|   CHECKTYPE REQUIRED | ||||
|   NUM_EXPR #F_ANNO>0 | ||||
|   FLAG "AP" | ||||
|   KEY 1 2 | ||||
|   WARNING "Inserire un anno valido" | ||||
| END | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| ENDMASK | ||||
| @ -281,7 +281,7 @@ void TCopydoc_app::main_loop() | ||||
|               real price = r.get_real(RDOC_PREZZO); | ||||
|               if (!price.is_zero()) | ||||
|               { | ||||
|                 price *= (100.0 + perc) / 100.0; | ||||
|                 price *= (CENTO + perc) / CENTO; | ||||
|                 r.put(RDOC_PREZZO, price); | ||||
|               } | ||||
|             } | ||||
|  | ||||
| @ -15,6 +15,7 @@ int main( int argc, char** argv ) | ||||
|   case  6: ve6600(argc, argv); break;         // collegamento contabilità industriosa
 | ||||
|   case  7: ve6700(argc, argv); break;         // copia documenti interattiva da ditta a ditta
 | ||||
|   case  8: ve6800(argc, argv); break;         // contabilizzazione analitica documenti
 | ||||
| 	case  9: ve6900(argc, argv); break;         // controllo ordini evasi
 | ||||
|   default: ve6100(argc, argv); break;         // contabilizzazione documenti
 | ||||
|   } | ||||
|   return 0; | ||||
|  | ||||
| @ -9,5 +9,6 @@ int ve6500 (int, char**); | ||||
| int ve6600 (int, char**); | ||||
| int ve6700 (int, char**); | ||||
| int ve6800 (int, char**); | ||||
| int ve6900 (int, char**); | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										178
									
								
								src/ve/ve6900.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								src/ve/ve6900.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,178 @@ | ||||
| /**************************************************
 | ||||
|  * File: ve6900.cpp																* | ||||
|  * Programma per il controllo degli ordini evasi	* | ||||
|  * Authors: Alessandro Bonazzi, Mattia Tollari		* | ||||
|  **************************************************/ | ||||
| 
 | ||||
| #include <automask.h> | ||||
| #include <progind.h> | ||||
| #include <relation.h> | ||||
| #include <sheet.h> | ||||
| #include <tabutil.h> | ||||
| #include <defmask.h> | ||||
| 
 | ||||
| #include "velib04.h" | ||||
| #include "../cg/cgsaldac.h" | ||||
| 
 | ||||
| #include "ve6900a.h" | ||||
| 
 | ||||
| 
 | ||||
| ///////////////////////////////////////////////
 | ||||
| //  MASCHERA																 //
 | ||||
| ///////////////////////////////////////////////
 | ||||
| class TControllo_ordini_mask : public TAutomask | ||||
| { | ||||
|   TString_array   _tipi_doc;   // Array di stringhe contenente i tipi documenti da elaborare
 | ||||
| 
 | ||||
| protected: | ||||
|   virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); | ||||
| 
 | ||||
| public: | ||||
|   // Controlla se lo stato ed il tipo del documento sono validi e rispettano la selezione
 | ||||
|   bool doc_tipo_stato_ok(const TRectype& doc); | ||||
|   // Constructor and Distructor
 | ||||
| 	TControllo_ordini_mask(): TAutomask("ve6900a") {} | ||||
| 	~TControllo_ordini_mask() {} | ||||
| }; | ||||
| 
 | ||||
| bool TControllo_ordini_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) | ||||
| { | ||||
|   switch (o.dlg()) | ||||
|   { | ||||
|   case DLG_USER: | ||||
|     if (e == fe_button) | ||||
|     { | ||||
|     } | ||||
|     break; | ||||
|   default: | ||||
|     break; | ||||
|   } | ||||
|   return true; | ||||
| } | ||||
| 
 | ||||
| bool TControllo_ordini_mask::doc_tipo_stato_ok(const TRectype& doc) | ||||
| // Verifica che il tipo documento corrente esista tra i tipi previsti dalla elaborazione
 | ||||
| // differita selezionata
 | ||||
| { | ||||
|   bool found = false; | ||||
|   const TString4 tipo = doc.get(DOC_TIPODOC); | ||||
|   const char stato = doc.get_char(DOC_STATO); | ||||
|   const int items = _tipi_doc.items(); | ||||
|   for (int i = 0; i < items && !found; i++) | ||||
|   { | ||||
|     TToken_string& t = _tipi_doc.row(i); | ||||
|     const TString4 tipox(t.get(0)); | ||||
|     const char statox = t.get(1)[0]; | ||||
|     if (tipo == tipox && stato == statox) | ||||
|       found = true; | ||||
|   } | ||||
|   return found; | ||||
| } | ||||
| 
 | ||||
| /////////////////////////////////////////////
 | ||||
| //  APPLICAZIONE													 //
 | ||||
| /////////////////////////////////////////////
 | ||||
| 
 | ||||
| // TControllo_ordini
 | ||||
| // Applicazione per il controllo degli ordini evasi
 | ||||
| class TControllo_ordini_app : public TSkeleton_application | ||||
| { | ||||
|   TControllo_ordini_mask*  _msk; | ||||
| 
 | ||||
| protected: // TApplication
 | ||||
|   // Controlla gli ordini
 | ||||
|   void check(); | ||||
| 
 | ||||
| public: | ||||
|   virtual bool create(); | ||||
|   virtual bool destroy(); | ||||
|   virtual void main_loop(); | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| void TControllo_ordini_app::check()  | ||||
| { | ||||
| 	// Creo la relazione alla tabella del Db
 | ||||
| 	TRelation rel(LF_DOC); | ||||
|   // Definisco i due TRecType di inizio e fine per lo scorrimento
 | ||||
|   TRectype recini(rel.curr()); | ||||
|   TRectype recfin(rel.curr()); | ||||
| 	// Imposto il cursore
 | ||||
|   rel.lfile().set_curr(new TDocumento); | ||||
| 	// Aggiungo dei filtri, in questo caso utilizzando la KEY 1 ho bisogno di
 | ||||
| 	// PROVV+ANNO+CODNUM
 | ||||
| 	// Inizio
 | ||||
| 	recini.put(DOC_PROVV, _msk->get(F_PROVV)); | ||||
|   recini.put(DOC_ANNO, _msk->get(F_DA_ANNO)); | ||||
| 	recini.put(DOC_CODNUM, _msk->get(F_CODNUM)); | ||||
| 	// Fine
 | ||||
| 	recfin.put(DOC_PROVV, _msk->get(F_PROVV)); | ||||
|   recfin.put(DOC_ANNO, _msk->get(F_A_ANNO)); | ||||
| 	recfin.put(DOC_CODNUM, _msk->get(F_CODNUM)); | ||||
| 	// Salviamo lo stato da impostare
 | ||||
| 	const TString4 stato = _msk->get(F_STATO); | ||||
| 	// Filtro sullo stato del documento
 | ||||
| 	TString filter("STATO<"); | ||||
| 	filter << stato; | ||||
| 	// Istanzio il cursore
 | ||||
|   TCursor cur(&rel, filter, 1, &recini, &recfin); | ||||
|   const long total = cur.items(); | ||||
| 	// Se esistono righe
 | ||||
|   if (total > 0) | ||||
|   { | ||||
|     TString msg = TR("Confermare l'aggiornamento di "); | ||||
|     msg.add_plural(total, TR("documento")); | ||||
|     if (yesno_box(msg)) | ||||
|     { | ||||
|       TProgress_monitor pi(total, title()); | ||||
| 			// Blocco il cursore per garantire l'integrità dei dati
 | ||||
|       cur.freeze(); | ||||
|       for (cur = 0; cur.pos() < total; ++cur) | ||||
|       { | ||||
| 				if (!pi.add_status()) | ||||
|             break; | ||||
| 				TDocumento& doc = (TDocumento&) cur.curr(); | ||||
| 				bool docEvaso = true; | ||||
| 				// Controllo che il documento sia completamente evadibile e non già segnato evaso
 | ||||
| 				for (int i = doc.physical_rows(); i > 0; i--) | ||||
| 					{ | ||||
| 						TRiga_documento& r = doc[i]; | ||||
| 						docEvaso &= (!r.is_evadibile() || r.is_evasa());              | ||||
| 					} | ||||
| 				// Imposto il nuovo stato
 | ||||
| 				if(docEvaso) | ||||
| 				{ | ||||
| 					doc.put(DOC_STATO, stato); | ||||
|           int err = doc.rewrite(); | ||||
| 				} | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| bool TControllo_ordini_app::create() | ||||
| { | ||||
|   open_files(LF_TABCOM, LF_TAB, LF_DOC, LF_RIGHEDOC, LF_MOVANA, LF_RMOVANA, 0); | ||||
|   _msk = new TControllo_ordini_mask(); | ||||
|   return TSkeleton_application::create(); | ||||
| } | ||||
| 
 | ||||
| bool TControllo_ordini_app::destroy() | ||||
| { | ||||
|   if (_msk) delete _msk; | ||||
|   return TSkeleton_application::destroy(); | ||||
| } | ||||
| 
 | ||||
| void TControllo_ordini_app::main_loop() | ||||
| { | ||||
|   while (_msk->run() == K_ENTER) | ||||
|     check(); | ||||
| } | ||||
| 
 | ||||
| int ve6900 (int argc, char **argv) | ||||
| { | ||||
|   TControllo_ordini_app a; | ||||
|   a.run(argc,argv, TR("Gestione ordini evasi")); | ||||
|   return true; | ||||
| } | ||||
							
								
								
									
										10
									
								
								src/ve/ve6900a.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/ve/ve6900a.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| // Include file per ve6900a.uml
 | ||||
| 
 | ||||
| #define F_PROVV								101 | ||||
| #define F_CODNUM							102 | ||||
| #define F_DESNUM							103 | ||||
| #define F_DA_ANNO             104 | ||||
| #define F_A_ANNO              105 | ||||
| #define F_STATO								106 | ||||
| #define F_DESCINI							107 | ||||
| 
 | ||||
							
								
								
									
										79
									
								
								src/ve/ve6900a.uml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								src/ve/ve6900a.uml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,79 @@ | ||||
| #include "ve6900a.h" | ||||
| 
 | ||||
| PAGE "Controllo ordini" -1 -1 100 11 | ||||
| 
 | ||||
| LISTBOX F_PROVV 11 | ||||
| BEGIN | ||||
|   FIELD PROVV | ||||
|   PROMPT 2 1 "Tipo       " | ||||
|   ITEM "D|Definitiva " | ||||
|   ITEM "P|Provvisoria" | ||||
|   FLAGS "P" | ||||
| END | ||||
| 
 | ||||
| STRING F_CODNUM 4 | ||||
| BEGIN | ||||
|   PROMPT 2 3 "Numerazione" | ||||
|   CHECKTYPE REQUIRED | ||||
|   USE %NUM SELECT I1==3 | ||||
|   INPUT CODTAB F_CODNUM | ||||
|   DISPLAY "Codice" CODTAB | ||||
|   DISPLAY "Descrizione@60" S0 | ||||
|   OUTPUT F_CODNUM CODTAB | ||||
|   OUTPUT F_DESNUM S0 | ||||
|    | ||||
| END | ||||
| 
 | ||||
| STRING F_DESNUM 50 | ||||
| BEGIN | ||||
|   PROMPT 23 3 "" | ||||
|   FLAGS "UD" | ||||
| END | ||||
| 
 | ||||
| NUMBER F_DA_ANNO 4 | ||||
| BEGIN | ||||
|   PROMPT 2 5 "Da anno    " | ||||
|   FIELD ANNO | ||||
|   CHECKTYPE REQUIRED | ||||
|   NUM_EXPR #F_DA_ANNO>0 | ||||
|   FLAG "AP" | ||||
|   WARNING "Inserire un anno valido" | ||||
| END | ||||
| 
 | ||||
| NUMBER F_A_ANNO 4 | ||||
| BEGIN | ||||
|   PROMPT 2 7 "A  anno    " | ||||
|   FIELD ANNO | ||||
|   CHECKTYPE REQUIRED | ||||
|   NUM_EXPR #F_A_ANNO>=#F_DA_ANNO | ||||
|   FLAG "AP" | ||||
|   WARNING "Inserire un anno valido" | ||||
| END | ||||
| 
 | ||||
| STRING F_STATO 1 | ||||
| BEGIN | ||||
|   PROMPT 2 9 "Stato evaso" | ||||
|   CHECKTYPE REQUIRED | ||||
|   USE %STD | ||||
|   INPUT CODTAB F_STATO | ||||
|   DISPLAY "Stato documento" CODTAB | ||||
|   DISPLAY "Descrizione@50" S0 | ||||
|   OUTPUT F_STATO CODTAB | ||||
|   OUTPUT F_DESCINI S0 | ||||
| END | ||||
| 
 | ||||
| STRING F_DESCINI 50 | ||||
| BEGIN | ||||
|   PROMPT 23 9 "" | ||||
|   FLAGS "D" | ||||
| END | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| TOOLBAR "topbar" 0 0 0 2 | ||||
| 
 | ||||
| #include <elabar.h> | ||||
| 
 | ||||
| ENDPAGE | ||||
| 
 | ||||
| ENDMASK | ||||
| @ -34,6 +34,7 @@ Item_05 = "Compattamento documenti", "ve5 -4", "F" | ||||
| Item_06 = "Invio e ricezione documenti", "ve5 -3", "F" | ||||
| Item_07 = "Lista ritenute per F24", "ve8 -0", "F" | ||||
| Item_08 = "Controllo IBAN su documenti", "ve4 -2", "F" | ||||
| Item_09 = "Controllo ordini evasi", "ve6 -9", "F" | ||||
| 
 | ||||
| [VEMENU_052] | ||||
| Caption = "Configurazione" | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user