Patch level : 10.0 patch ???
Files correlati : lvmenu lv0400g.msk e rep Ricompilazione Demo : [ ] Commento : Aggiunta la nuova stampa contratti git-svn-id: svn://10.65.10.50/branches/R_10_00@21608 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									c050a7d07a
								
							
						
					
					
						commit
						a36c502a4b
					
				
							
								
								
									
										7
									
								
								lv/lv0400g.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								lv/lv0400g.h
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | //Definizione campi per maschera lv0400g
 | ||||||
|  | //Stampa Contratti da Cliente a Cliente
 | ||||||
|  | #define F_DACODCF     201 | ||||||
|  | #define F_DARAGSOC    202 | ||||||
|  | #define F_ACODCF      203 | ||||||
|  | #define F_ARAGSOC     204 | ||||||
|  | #define F_ANNOES      207 | ||||||
							
								
								
									
										123
									
								
								lv/lv0400g.rep
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										123
									
								
								lv/lv0400g.rep
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,123 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||||
|  | <report name="lv0400g" lpi="6"> | ||||||
|  |  <font face="Courier New" size="10" /> | ||||||
|  |  <section type="Head" pattern="1" /> | ||||||
|  |  <section type="Head" level="1" pattern="1" /> | ||||||
|  |  <section type="Body" pattern="1" /> | ||||||
|  |  <section type="Body" level="1" page_break="1" pattern="1"> | ||||||
|  |   <field x="1" type="Testo" align="center" width="91" height="1.5" pattern="1" text="Stampa Contratti per Cliente"> | ||||||
|  |    <font italic="1" face="Times New Roman" bold="1" size="12" /> | ||||||
|  |   </field> | ||||||
|  |   <field border="2" x="1" y="1.75" type="Linea" width="91" height="0" pattern="1" /> | ||||||
|  |   <field x="1" y="2.5" type="Testo" width="7" height="1.25" pattern="1" text="Cliente:"> | ||||||
|  |    <font face="Times New Roman" size="10" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="6.5" y="2.5" type="Numero" align="right" width="6" height="1.25" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="10" /> | ||||||
|  |    <source>LVCONDV.CODCF</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="13.5" y="2.5" type="Stringa" width="50" height="1.25" pattern="1"> | ||||||
|  |    <font face="Times New Roman" bold="1" size="10" /> | ||||||
|  |    <source>CLIFO.RAGSOC</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="76" y="2.5" type="Testo" width="10" height="1.25" pattern="1" text="Sconto:"> | ||||||
|  |    <font face="Times New Roman" size="10" /> | ||||||
|  |   </field> | ||||||
|  |   <field border="2" x="1" y="4" type="Linea" width="91" height="0" pattern="1" /> | ||||||
|  |   <field x="1" y="4.5" type="Testo" align="right" width="10" pattern="1" text="Art."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="12" y="4.5" type="Testo" width="25" pattern="1" text="Descrizione"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="39" y="4.5" type="Testo" align="right" width="4" pattern="1" text="Col."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="45" y="4.5" type="Testo" align="right" width="4" pattern="1" text="Dot."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="51" y="4.5" type="Testo" align="right" width="4" pattern="1" text="D.Temp."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="57" y="4.5" type="Testo" align="right" width="4" pattern="1" text="C.Mese"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="63" y="4.5" type="Testo" align="right" width="4" pattern="1" text="C.Anno"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="69" y="4.5" type="Testo" align="right" width="4" pattern="1" text="Prz."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="75" y="4.5" type="Testo" align="right" width="4" pattern="1" text="Cicl."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="81" y="4.5" type="Testo" align="right" width="4" pattern="1" text="V.Conv."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="87" y="4.5" type="Testo" align="right" width="4" pattern="1" text="% Forf."> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |  </section> | ||||||
|  |  <section type="Head" level="11" pattern="1" /> | ||||||
|  |  <section type="Body" level="11" pattern="1"> | ||||||
|  |   <sql>USE LVRCONDV | ||||||
|  | JOIN ANAMAG INTO CODART==CODART | ||||||
|  | FROM CODCF=#PARENT.CODCF CODCONT=#PARENT.CODCONT | ||||||
|  | TO CODCF=#PARENT.CODCF CODCONT=#PARENT.CODCONT | ||||||
|  | 
 | ||||||
|  | </sql> | ||||||
|  |   <field x="1" type="Stringa" align="right" width="10" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>LVRCONDV.CODART</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="12" type="Stringa" dynamic_height="1" width="25" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>ANAMAG.DESCR+ANAMAG.DESCRAGG</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="39" type="Testo" align="right" width="4" pattern="1" text="0"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |   </field> | ||||||
|  |   <field x="45" type="Numero" align="right" width="4" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>#DOTOD</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="51" type="Numero" align="right" width="4" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>#DOTMP</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="57" type="Numero" align="right" width="4" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>#CONSMESE</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="63" type="Numero" align="right" width="4" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>#CONSANNO</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="69" type="Prezzo" align="right" width="4" pattern="1" text="#########,@@"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>LVRCONDV.PREZZO</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="75" type="Numero" align="right" width="4" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>LVRCONDV.MINCIC</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="81" type="Prezzo" align="right" width="4" pattern="1" text="#########,@@"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>LVRCONDV.VALCONV</source> | ||||||
|  |   </field> | ||||||
|  |   <field x="87" type="Numero" align="right" width="4" pattern="1"> | ||||||
|  |    <font face="Times New Roman" size="7" /> | ||||||
|  |    <source>LVRCONDV.FORFPERCL</source> | ||||||
|  |   </field> | ||||||
|  |  </section> | ||||||
|  |  <section type="Foot" level="11" pattern="1"> | ||||||
|  |   <field type="Testo" width="10" pattern="1" text="Totale" /> | ||||||
|  |  </section> | ||||||
|  |  <section type="Foot" pattern="1" /> | ||||||
|  |  <section type="Foot" level="1" pattern="1" /> | ||||||
|  |  <sql>USE LVCONDV | ||||||
|  | JOIN CLIFO INTO TIPOCF=="C" CODCF==CODCF | ||||||
|  | FROM CODCF=#F_CODCF_FROM | ||||||
|  | TO CODCF=#F_CODCF_TO | ||||||
|  | </sql> | ||||||
|  | </report> | ||||||
							
								
								
									
										83
									
								
								lv/lv0400g.uml
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										83
									
								
								lv/lv0400g.uml
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,83 @@ | |||||||
|  | #include "lv0400g.h" | ||||||
|  | 
 | ||||||
|  | TOOLBAR "topbar" 0 0 0 2 | ||||||
|  | #include "printbar.h" | ||||||
|  | ENDPAGE | ||||||
|  | 
 | ||||||
|  | PAGE "Stampa Contratti per Cliente" -1 -1 40 5 | ||||||
|  | 
 | ||||||
|  | GROUPBOX DLG_NULL 85 5 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 1 1 "@b Parametri Estrazione" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | NUMBER F_DACODCF 6 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 2 "Da Cliente "  | ||||||
|  |   FLAGS "U" | ||||||
|  |   KEY 1 | ||||||
|  |   USE LF_CLIFO  | ||||||
|  |   INPUT TIPOCF "C" | ||||||
|  |   INPUT CODCF F_DACODCF | ||||||
|  |   DISPLAY "Codice" CODCF | ||||||
|  |   DISPLAY "Ragione Sociale@50" RAGSOC | ||||||
|  |   OUTPUT F_DACODCF CODCF | ||||||
|  |   OUTPUT F_DARAGSOC RAGSOC | ||||||
|  |   CHECKTYPE REQUIRED  | ||||||
|  |   FIELD #F_CODCF_FROM | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_DARAGSOC 50  | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 30 2 "" | ||||||
|  |   KEY 2 | ||||||
|  |   USE LF_CLIFO KEY 2 | ||||||
|  |   INPUT TIPOCF "C" | ||||||
|  |   INPUT RAGSOC F_DARAGSOC | ||||||
|  |   DISPLAY "Ragione Sociale@50" RAGSOC | ||||||
|  |   DISPLAY "Codice" CODCF | ||||||
|  |   COPY OUTPUT F_DACODCF | ||||||
|  |   CHECKTYPE REQUIRED   | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | NUMBER F_ACODCF 6 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 3 "A Cliente  "  | ||||||
|  |   FLAGS "U" | ||||||
|  |   KEY 1 | ||||||
|  |   USE LF_CLIFO  | ||||||
|  |   INPUT TIPOCF "C" | ||||||
|  |   INPUT CODCF F_ACODCF | ||||||
|  |   DISPLAY "Codice" CODCF | ||||||
|  |   DISPLAY "Ragione Sociale@50" RAGSOC | ||||||
|  |   OUTPUT F_ACODCF CODCF | ||||||
|  |   OUTPUT F_ARAGSOC RAGSOC | ||||||
|  |   CHECKTYPE REQUIRED  | ||||||
|  |   FIELD #F_CODCF_TO | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | STRING F_ARAGSOC 50  | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 30 3 "" | ||||||
|  |   KEY 2 | ||||||
|  |   USE LF_CLIFO KEY 2 | ||||||
|  |   INPUT TIPOCF "C" | ||||||
|  |   INPUT RAGSOC F_ARAGSOC | ||||||
|  |   DISPLAY "Ragione Sociale@50" RAGSOC | ||||||
|  |   DISPLAY "Codice" CODCF | ||||||
|  |   COPY OUTPUT F_ACODCF | ||||||
|  |   CHECKTYPE REQUIRED   | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | NUMBER F_ANNOES 4 | ||||||
|  | BEGIN | ||||||
|  |   PROMPT 2 6 "Anno Es" | ||||||
|  |   FLAGS "A" | ||||||
|  |   FIELD #F_ANNO | ||||||
|  |   FLAGS "H" | ||||||
|  | END | ||||||
|  | 
 | ||||||
|  | ENDPAGE | ||||||
|  | ENDMASK | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										277
									
								
								lv/lvlib.cpp
									
									
									
									
									
								
							
							
						
						
									
										277
									
								
								lv/lvlib.cpp
									
									
									
									
									
								
							| @ -364,77 +364,6 @@ int TRecmag_lavanderie::readat(TBaseisamfile& f, TRecnotype nrec, word lockop) | |||||||
| 	return TVariable_rectype::readat(f, nrec, lockop); | 	return TVariable_rectype::readat(f, nrec, lockop); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TRecmag_lavanderie::update() |  | ||||||
| { |  | ||||||
| 	if (_update_time > 0L) |  | ||||||
| 		return; |  | ||||||
| 
 |  | ||||||
| 	_update_time = 1L; |  | ||||||
| 
 |  | ||||||
|   TString query, filter; |  | ||||||
| 	const int anno = get_int(CLIFOGIAC_ANNOES); |  | ||||||
| 	const TString4 tipocf(get(CLIFOGIAC_TIPOCF)); |  | ||||||
| 	const long codcf = get_long(CLIFOGIAC_CODCF); |  | ||||||
|   const int indsped = get_int(CLIFOGIAC_INDSPED); |  | ||||||
| 	const TString80 codart(get(CLIFOGIAC_CODART)); |  | ||||||
| 	const TString80 livello(get(CLIFOGIAC_LIVELLO)); |  | ||||||
|   const TDate oggi(TODAY); |  | ||||||
|   TDate imese; |  | ||||||
| 	TEsercizi_contabili & esc = esercizi(); |  | ||||||
| 	const TArticolo & artrec = cached_article(codart); |  | ||||||
| 
 |  | ||||||
| 	if (anno >= esc.date2esc(oggi)) |  | ||||||
| 	{ |  | ||||||
| 		imese = oggi; |  | ||||||
| 		imese.set_day(1); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 		imese = esc.esercizio(anno).fine(); |  | ||||||
|    |  | ||||||
| /*	query="USE MOVMAG KEY 2\n";
 |  | ||||||
|   query << "SELECT (TIPOCF='C')&&(CODCF==" << codcf << ")&&(STR(CODINDSP==" << indsped << "))&&(BETWEEN(DATACOMP," << imese.date2ansi() << "," << oggi.date2ansi() << "))\n"; |  | ||||||
|   query << "FROM ANNOES=" << anno << "\n"; |  | ||||||
|   query << "TO ANNOES=" << anno << "\n"; */ |  | ||||||
| 	query="USE MOVMAG KEY 5\n"; |  | ||||||
|   query << "FROM  TIPOCF='C'" |  | ||||||
| 				<< " CODCF=" << codcf |  | ||||||
| 				<< " CODINDSP=" << indsped |  | ||||||
| 				<< " DATACOMP=" << imese.string()	<< "\n"; |  | ||||||
|   query << "TO TIPOCF='C'" |  | ||||||
| 				<< " CODCF=" << codcf |  | ||||||
| 				<< " CODINDSP=" << indsped |  | ||||||
| 			  << " DATACOMP="	<< oggi.string() << "\n"; |  | ||||||
| 
 |  | ||||||
|   TISAM_recordset recmag(query); |  | ||||||
| 	TString8 codcausmov; |  | ||||||
| 	 |  | ||||||
| 	_consmese = ZERO; |  | ||||||
|   for (bool ok = recmag.move_first(); ok; ok = recmag.move_next()) |  | ||||||
|   { |  | ||||||
|     TString queryrmag("USE RMOVMAG\n"); |  | ||||||
| 		queryrmag << " SELECT (CODART=\"" << codart << "\")&&(LIVGIAC=\"" << livello << "\")\n"; |  | ||||||
| 		queryrmag << "FROM NUMREG=" << recmag.get(MOVMAG_NUMREG) << "\n" |  | ||||||
|               << "TO NUMREG=" << recmag.get(MOVMAG_NUMREG) << "\n"; |  | ||||||
|      |  | ||||||
| 		codcausmov = recmag.get(MOVMAG_CODCAUS).as_string(); |  | ||||||
|     TISAM_recordset recrmag(queryrmag); |  | ||||||
| 
 |  | ||||||
|     for (bool ok=recrmag.move_first(); ok; ok=recrmag.move_next()) |  | ||||||
|     { |  | ||||||
|       const TString& codcaus = recrmag.get(RMOVMAG_CODCAUS).as_string(); |  | ||||||
| 			const TCausale_magazzino & tcaus = cached_causale_magazzino(codcaus.full() ? codcaus : codcausmov); |  | ||||||
|       int sgn_consmese = tcaus.sgn(s_consmese); |  | ||||||
|        |  | ||||||
| 			if (sgn_consmese != 0) |  | ||||||
| 			{ |  | ||||||
| 				const real qta = ((TArticolo &)artrec).convert_to_um(recrmag.get(RMOVMAG_QUANT).as_real(), NULL, recrmag.get(RMOVMAG_UM).as_string()); |  | ||||||
| 
 |  | ||||||
| 				_consmese += real(qta * sgn_consmese); |  | ||||||
| 			} |  | ||||||
|     } |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int TRecmag_lavanderie::name2index(const char* fieldname) const | int TRecmag_lavanderie::name2index(const char* fieldname) const | ||||||
| { | { | ||||||
| 	if (strcmp(fieldname, "CONSMESE") == 0) | 	if (strcmp(fieldname, "CONSMESE") == 0) | ||||||
| @ -491,6 +420,84 @@ const TString & TRecmag_lavanderie::get_str(const char* fieldname) const | |||||||
| 	return TVariable_rectype::get_str(fieldname); | 	return TVariable_rectype::get_str(fieldname); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | const real TRecmag_lavanderie::consmese(const TDate& dadata, const TDate& adata) const | ||||||
|  | { | ||||||
|  |   TString query; | ||||||
|  | 
 | ||||||
|  |   const int anno = get_int(CLIFOGIAC_ANNOES);	 | ||||||
|  | 	const long codcf = get_long(CLIFOGIAC_CODCF); | ||||||
|  |   const int indsped = get_int(CLIFOGIAC_INDSPED); | ||||||
|  | 	const TString80 codart(get(CLIFOGIAC_CODART)); | ||||||
|  | 	const TString80 livello(get(CLIFOGIAC_LIVELLO)); | ||||||
|  | 	const TArticolo & artrec = cached_article(codart); | ||||||
|  |    | ||||||
|  |   /*	query="USE MOVMAG KEY 2\n";
 | ||||||
|  |   query << "SELECT (TIPOCF='C')&&(CODCF==" << codcf << ")&&(STR(CODINDSP==" << indsped << "))&&(BETWEEN(DATACOMP," << imese.date2ansi() << "," << oggi.date2ansi() << "))\n"; | ||||||
|  |   query << "FROM ANNOES=" << anno << "\n"; | ||||||
|  |   query << "TO ANNOES=" << anno << "\n"; */ | ||||||
|  | 
 | ||||||
|  |   query << "USE MOVMAG KEY 5\n" | ||||||
|  |         << "FROM  TIPOCF=C CODCF=" << codcf << " CODINDSP=" << indsped << " DATACOMP=#DADATA\n" | ||||||
|  |         << "TO TIPOCF=C CODCF="    << codcf << " CODINDSP=" << indsped << " DATACOMP=#ADATA\n"; | ||||||
|  | 
 | ||||||
|  |   TISAM_recordset recmag(query); | ||||||
|  |   recmag.set_var("#DADATA", dadata); | ||||||
|  |   recmag.set_var("#ADATA",  adata); | ||||||
|  | 
 | ||||||
|  | 	TString8 codcausmov; | ||||||
|  | 	 | ||||||
|  | 	real consmese = ZERO; | ||||||
|  |   for (bool ok = recmag.move_first(); ok; ok = recmag.move_next()) | ||||||
|  |   { | ||||||
|  |     TString queryrmag("USE RMOVMAG\n"); | ||||||
|  | 		queryrmag << " SELECT (CODART=\"" << codart << "\")&&(LIVGIAC=\"" << livello << "\")\n"; | ||||||
|  | 		queryrmag << "FROM NUMREG=" << recmag.get(MOVMAG_NUMREG) << "\n" | ||||||
|  |               << "TO NUMREG=" << recmag.get(MOVMAG_NUMREG) << "\n"; | ||||||
|  |      | ||||||
|  | 		codcausmov = recmag.get(MOVMAG_CODCAUS).as_string(); | ||||||
|  |     TISAM_recordset recrmag(queryrmag); | ||||||
|  | 
 | ||||||
|  |     for (bool ok = recrmag.move_first(); ok; ok = recrmag.move_next()) | ||||||
|  |     { | ||||||
|  |       const TString& codcaus = recrmag.get(RMOVMAG_CODCAUS).as_string(); | ||||||
|  | 			const TCausale_magazzino& tcaus = cached_causale_magazzino(codcaus.full() ? codcaus : codcausmov); | ||||||
|  |       int sgn_consmese = tcaus.sgn(s_consmese); | ||||||
|  |        | ||||||
|  | 			if (sgn_consmese != 0) | ||||||
|  | 			{ | ||||||
|  | 				const real qta = ((TArticolo &)artrec).convert_to_um(recrmag.get(RMOVMAG_QUANT).as_real(), NULL, recrmag.get(RMOVMAG_UM).as_string()); | ||||||
|  | 
 | ||||||
|  | 				consmese += real(qta * sgn_consmese); | ||||||
|  | 			} | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   return consmese; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void TRecmag_lavanderie::update() | ||||||
|  | { | ||||||
|  | 	if (_update_time > 0L) | ||||||
|  | 		return; | ||||||
|  | 
 | ||||||
|  | 	_update_time = 1L; | ||||||
|  |   | ||||||
|  | 	const int anno = get_int(CLIFOGIAC_ANNOES); | ||||||
|  | 	TEsercizi_contabili & esc = esercizi(); | ||||||
|  |    | ||||||
|  |   const TDate oggi(TODAY); | ||||||
|  |   TDate imese; | ||||||
|  | 
 | ||||||
|  | 	if (anno >= esc.date2esc(oggi)) | ||||||
|  | 	{ | ||||||
|  | 		imese = oggi; | ||||||
|  | 		imese.set_day(1); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 		imese = esc.esercizio(anno).fine(); | ||||||
|  |    | ||||||
|  | 	_consmese = consmese(imese, oggi); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| TRecmag_lavanderie::TRecmag_lavanderie() | TRecmag_lavanderie::TRecmag_lavanderie() | ||||||
|                   : TVariable_rectype(LF_CLIFOGIAC) |                   : TVariable_rectype(LF_CLIFOGIAC) | ||||||
| { | { | ||||||
| @ -1668,14 +1675,14 @@ TGiac_per_cli::TGiac_per_cli() | |||||||
|   return true; |   return true; | ||||||
| }*/ | }*/ | ||||||
| 
 | 
 | ||||||
| bool TLV_report::get_usr_val(const TString& name, TVariant& var) const | bool TLV_report::msg_lv_nextcons(TVariant& var) const | ||||||
| { | { | ||||||
|   if(name == "#NEXTCONS") |   TRecordset* recset = recordset(); | ||||||
|  |   if(recset != NULL) | ||||||
|   { |   { | ||||||
|     TRecordset& recset = *recordset(); |     const long clifo = recset->get("CODCF").as_int(); | ||||||
|     const long clifo = recset.get("CODCF").as_int(); |     const long contr = recset->get("CODCONT").as_int(); | ||||||
|     const long contr = recset.get("CODCONT").as_int(); |     const TDate dtcons = recset->get("DTCONS").as_date(); | ||||||
|     const TDate dtcons = recset.get("DTCONS").as_date(); |  | ||||||
|     if (clifo > 0 && contr > 0 && dtcons.ok()) |     if (clifo > 0 && contr > 0 && dtcons.ok()) | ||||||
|     { |     { | ||||||
|       // Scrivere qui il calcolo della prossima data di consegna ...
 |       // Scrivere qui il calcolo della prossima data di consegna ...
 | ||||||
| @ -1683,19 +1690,22 @@ bool TLV_report::get_usr_val(const TString& name, TVariant& var) const | |||||||
|       TDate next_dtcons = dtcons; |       TDate next_dtcons = dtcons; | ||||||
|       next_dtcons += 7; |       next_dtcons += 7; | ||||||
|       var = next_dtcons; |       var = next_dtcons; | ||||||
|       return true;    |       return true; | ||||||
|     }     |     } | ||||||
|   } |   } | ||||||
|  |   return false; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|   if(name.starts_with("#DOTOD")) | bool TLV_report::msg_lv_dot(TVariant& var, const char tipo) const | ||||||
|   {    | { | ||||||
|     TReport_field& cf  = *curr_field(); |   TRecordset* recset = recordset(); | ||||||
|     TRecordset* row_recset = cf.section().recordset(); |   TReport_field* cf = curr_field(); | ||||||
| 
 |   if(recset != NULL && cf != NULL) | ||||||
|     TRecordset& recset = *recordset(); |   { | ||||||
|     const long codcf   = recset.get("CODCF").as_int(); |     TRecordset* row_recset = cf->section().recordset(); | ||||||
|     const long codcont = recset.get("CODCONT").as_int(); |     const long codcf   = recset->get("CODCF").as_int(); | ||||||
|     const TString80 codart = row_recset != NULL ? row_recset->get("CODART").as_string() : recset.get("CODART").as_string(); |     const long codcont = recset->get("CODCONT").as_int(); | ||||||
|  |     const TString80 codart = row_recset != NULL ? row_recset->get("CODART").as_string() : recset->get("CODART").as_string(); | ||||||
|      |      | ||||||
|     //instanzio un TArticolo_lavanderie per poter recuperare i dati di interesse
 |     //instanzio un TArticolo_lavanderie per poter recuperare i dati di interesse
 | ||||||
|     TArticolo_lavanderie& artrec = cached_article_laundry(codart, 'C', codcf, 0);  //per adesso 0, poi lo modifico
 |     TArticolo_lavanderie& artrec = cached_article_laundry(codart, 'C', codcf, 0);  //per adesso 0, poi lo modifico
 | ||||||
| @ -1706,10 +1716,97 @@ bool TLV_report::get_usr_val(const TString& name, TVariant& var) const | |||||||
| 
 | 
 | ||||||
|     //estraggo il record corrispondente su LF_CLIFOGIAC	
 |     //estraggo il record corrispondente su LF_CLIFOGIAC	
 | ||||||
|     const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc); |     const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc); | ||||||
|     const TVariant x = reclav.get("DOTOD"); |      | ||||||
|     cf.set(x); |     switch(tipo) | ||||||
|  |     { | ||||||
|  |     case 'C': var = reclav.get(CLIFOGIAC_CONSANNO); break; | ||||||
|  |     case 'O': var = reclav.get(CLIFOGIAC_DOTOD);    break; | ||||||
|  |     case 'T': var = reclav.get(CLIFOGIAC_DOTTM);    break; | ||||||
|  |     default : break; | ||||||
|  |     } | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |   return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool TLV_report::msg_lv_consmese(TVariant& var) const | ||||||
|  | { | ||||||
|  |   TRecordset* recset = recordset(); | ||||||
|  |   TReport_field* cf = curr_field(); | ||||||
|  | 
 | ||||||
|  |   if(recset != NULL && cf != NULL) | ||||||
|  |   { | ||||||
|  |     TRecordset* row_recset = cf->section().recordset(); | ||||||
|  |     const long codcf   = recset->get("CODCF").as_int(); | ||||||
|  |     const TString80 codart = row_recset != NULL ? row_recset->get("CODART").as_string() : recset->get("CODART").as_string(); | ||||||
|  | 
 | ||||||
|  |     TArticolo_lavanderie& artrec = cached_article_laundry(codart, 'C', codcf, 0); | ||||||
|  | 
 | ||||||
|  |     //setto datasc a oggi e fisso l'anno esercizio
 | ||||||
|  |     TEsercizi_contabili& esc = esercizi(); | ||||||
|  |     const int last_esc = esc.last(); | ||||||
|  |     const TDate oggi(TODAY); | ||||||
|  | 
 | ||||||
|  |     //cerco la data di inizio dell'ultimo periodo di fatturazione;
 | ||||||
|  |     //in pratica devo cercare la data dell'ultima bolla di questo cliente fatturata e incrementarla di un giorno
 | ||||||
|  |     TString query; | ||||||
|  |     query << "USE DOC KEY 4\n" | ||||||
|  |           << "FROM TIPOCF=C CODCF=" << codcf << " PROVV=D ANNO=" << last_esc << "CODNUM=\"F01\"\n" | ||||||
|  |           << "TO TIPOCF=C CODCF="   << codcf << " PROVV=D ANNO=" << last_esc << "CODNUM=\"F01\"\n"; | ||||||
|  |       | ||||||
|  |     TISAM_recordset fatture(query); | ||||||
|  | 
 | ||||||
|  |     if(fatture.empty()) | ||||||
|  |     { | ||||||
|  |       query.cut(0); | ||||||
|  |       query << "USE DOC KEY 4\n" | ||||||
|  |             << "FROM TIPOCF=C CODCF=" << codcf << " PROVV=D ANNO=" << last_esc - 1 << "CODNUM=\"F01\"\n" | ||||||
|  |             << "TO TIPOCF=C CODCF="   << codcf << " PROVV=D ANNO=" << last_esc - 1 << "CODNUM=\"F01\"\n"; | ||||||
|  |        | ||||||
|  |      TISAM_recordset tmp(query); | ||||||
|  |      fatture = tmp; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     TString note = fatture.get(DOC_NOTE).as_string(); note.strip_spaces(); | ||||||
|  |     TString16 data = note.right(10); | ||||||
|  |     TString4 anno = "20"; anno << data.right(2); | ||||||
|  |     TDate dadata(atoi(data.left(2)), atoi(data.mid(2,3)), atoi(anno)); | ||||||
|  | 
 | ||||||
|  |     if (dadata.ok()) | ||||||
|  |       ++dadata; | ||||||
|  |     else | ||||||
|  |     { | ||||||
|  |       dadata = oggi; | ||||||
|  |       dadata.set_day(1); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     //estraggo il record corrispondente su LF_CLIFOGIAC	
 | ||||||
|  |     const TRecmag_lavanderie& reclav = artrec.find_rec(last_esc); | ||||||
|  | 
 | ||||||
|  |     var = reclav.consmese(dadata, oggi); | ||||||
|  | 
 | ||||||
|  |     return true; | ||||||
|  |   } | ||||||
|  |   return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool TLV_report::get_usr_val(const TString& name, TVariant& var) const | ||||||
|  | { | ||||||
|  |   if(name == "#NEXTCONS") | ||||||
|  |     return msg_lv_nextcons(var); | ||||||
|  | 
 | ||||||
|  |   if(name.starts_with("#DOTOD")) | ||||||
|  |     return msg_lv_dot(var, 'O'); | ||||||
|  | 
 | ||||||
|  |   if(name.starts_with("#DOTMP")) | ||||||
|  |     return msg_lv_dot(var, 'T'); | ||||||
|  | 
 | ||||||
|  |   if(name.starts_with("#CONSMESE")) | ||||||
|  |     return msg_lv_consmese(var); | ||||||
|  | 
 | ||||||
|  |   if(name.starts_with("#CONSANNO")) | ||||||
|  |     return msg_lv_dot(var, 'C'); | ||||||
|  | 
 | ||||||
|   return TDocument_report::get_usr_val(name, var); |   return TDocument_report::get_usr_val(name, var); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								lv/lvlib.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								lv/lvlib.h
									
									
									
									
									
								
							| @ -77,7 +77,6 @@ class TRecmag_lavanderie : public TVariable_rectype | |||||||
| protected: | protected: | ||||||
|   virtual const TString & get_str(const char* fieldname) const ; |   virtual const TString & get_str(const char* fieldname) const ; | ||||||
| 	virtual void put_str(const char* fieldname, const char* val) { return TRectype::put_str(fieldname, val);} | 	virtual void put_str(const char* fieldname, const char* val) { return TRectype::put_str(fieldname, val);} | ||||||
| 	void update(); |  | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
| 	virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock); | 	virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock); | ||||||
| @ -89,6 +88,10 @@ public: | |||||||
| 	virtual int ndec(const char* fieldname) const; | 	virtual int ndec(const char* fieldname) const; | ||||||
| 	virtual bool exist(const char* fieldname) const; | 	virtual bool exist(const char* fieldname) const; | ||||||
|   virtual TObject* dup() const; |   virtual TObject* dup() const; | ||||||
|  | 
 | ||||||
|  |   void update(); | ||||||
|  |   const real consmese(const TDate& dadata, const TDate& adata) const; | ||||||
|  | 
 | ||||||
|   TRecmag_lavanderie(); |   TRecmag_lavanderie(); | ||||||
| 	TRecmag_lavanderie(const TRecmag_lavanderie & rec) : TVariable_rectype(rec), _update_time(0L) {} | 	TRecmag_lavanderie(const TRecmag_lavanderie & rec) : TVariable_rectype(rec), _update_time(0L) {} | ||||||
| 	TRecmag_lavanderie(const TRectype & rec) : TVariable_rectype(rec), _update_time(0L) {} | 	TRecmag_lavanderie(const TRectype & rec) : TVariable_rectype(rec), _update_time(0L) {} | ||||||
| @ -349,8 +352,9 @@ class TLV_report : public TDocument_report | |||||||
|   //size_t _first_lv_msg;
 |   //size_t _first_lv_msg;
 | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|   //bool msg_lv_nexcons(TVariant& var);
 |   bool msg_lv_nextcons(TVariant& var) const; | ||||||
|   //void msg_lv_dot(const TString& name, TVariant& var);
 |   bool msg_lv_dot(TVariant& var, const char tipo) const; | ||||||
|  |   bool msg_lv_consmese(TVariant& var) const; | ||||||
| 
 | 
 | ||||||
|   //virtual size_t get_usr_words(TString_array& words) const;
 |   //virtual size_t get_usr_words(TString_array& words) const;
 | ||||||
|   //virtual bool execute_usr_word(unsigned int opcode, TVariant_stack& stack);
 |   //virtual bool execute_usr_word(unsigned int opcode, TVariant_stack& stack);
 | ||||||
|  | |||||||
| @ -73,6 +73,7 @@ Item_04 = "Periodi di sospensione", "lv0 -1 lv0500d", "F" | |||||||
| Item_05 = "Elenco Clienti per Articolo", "lv0 -1 lv0400d", "F" | Item_05 = "Elenco Clienti per Articolo", "lv0 -1 lv0400d", "F" | ||||||
| Item_06 = "Contratti in scadenza Da/A", "lv0 -1 lv0400b", "F" | Item_06 = "Contratti in scadenza Da/A", "lv0 -1 lv0400b", "F" | ||||||
| Item_07 = "Stampa lista dotazioni temporanee scadute", "lv0 -1 lv0400e", "F" | Item_07 = "Stampa lista dotazioni temporanee scadute", "lv0 -1 lv0400e", "F" | ||||||
|  | Item_08 = "Contratti Cogeco", "lv0 -1 lv0400g", "F" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| [LVMENU_030] | [LVMENU_030] | ||||||
| @ -96,7 +97,7 @@ Caption = "Stampe" | |||||||
| Picture = <ba03> | Picture = <ba03> | ||||||
| Module  = 41 | Module  = 41 | ||||||
| Flags   = "" | Flags   = "" | ||||||
| Item_01 = "Giri", "lv2 -2 lv2300a", "F" | Item_01 = "Giri", "lv2 -2", "F" | ||||||
| 
 | 
 | ||||||
| [LVMENU_040] | [LVMENU_040] | ||||||
| Caption = "Documenti" | Caption = "Documenti" | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user