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 | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										271
									
								
								lv/lvlib.cpp
									
									
									
									
									
								
							
							
						
						
									
										271
									
								
								lv/lvlib.cpp
									
									
									
									
									
								
							| @ -364,77 +364,6 @@ int TRecmag_lavanderie::readat(TBaseisamfile& f, TRecnotype nrec, word 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 | ||||
| { | ||||
| 	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); | ||||
| } | ||||
| 
 | ||||
| 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() | ||||
|                   : TVariable_rectype(LF_CLIFOGIAC) | ||||
| { | ||||
| @ -1668,14 +1675,14 @@ TGiac_per_cli::TGiac_per_cli() | ||||
|   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 contr = recset.get("CODCONT").as_int(); | ||||
|     const TDate dtcons = recset.get("DTCONS").as_date(); | ||||
|     const long clifo = recset->get("CODCF").as_int(); | ||||
|     const long contr = recset->get("CODCONT").as_int(); | ||||
|     const TDate dtcons = recset->get("DTCONS").as_date(); | ||||
|     if (clifo > 0 && contr > 0 && dtcons.ok()) | ||||
|     { | ||||
|       // Scrivere qui il calcolo della prossima data di consegna ...
 | ||||
| @ -1686,16 +1693,19 @@ bool TLV_report::get_usr_val(const TString& name, TVariant& var) const | ||||
|       return true; | ||||
|     } | ||||
|   } | ||||
|   return false; | ||||
| } | ||||
| 
 | ||||
|   if(name.starts_with("#DOTOD")) | ||||
| bool TLV_report::msg_lv_dot(TVariant& var, const char tipo) const | ||||
| { | ||||
|   TRecordset* recset = recordset(); | ||||
|   TReport_field* cf = curr_field(); | ||||
|   if(recset != NULL && cf != NULL) | ||||
|   { | ||||
|     TReport_field& cf  = *curr_field(); | ||||
|     TRecordset* row_recset = cf.section().recordset(); | ||||
| 
 | ||||
|     TRecordset& recset = *recordset(); | ||||
|     const long codcf   = recset.get("CODCF").as_int(); | ||||
|     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(); | ||||
|     TRecordset* row_recset = cf->section().recordset(); | ||||
|     const long codcf   = recset->get("CODCF").as_int(); | ||||
|     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
 | ||||
|     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	
 | ||||
|     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 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); | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										10
									
								
								lv/lvlib.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								lv/lvlib.h
									
									
									
									
									
								
							| @ -77,7 +77,6 @@ class TRecmag_lavanderie : public TVariable_rectype | ||||
| protected: | ||||
|   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);} | ||||
| 	void update(); | ||||
| 
 | ||||
| public: | ||||
| 	virtual int read(TBaseisamfile& f, word op = _isequal, word lockop = _nolock); | ||||
| @ -89,6 +88,10 @@ public: | ||||
| 	virtual int ndec(const char* fieldname) const; | ||||
| 	virtual bool exist(const char* fieldname) const; | ||||
|   virtual TObject* dup() const; | ||||
| 
 | ||||
|   void update(); | ||||
|   const real consmese(const TDate& dadata, const TDate& adata) const; | ||||
| 
 | ||||
|   TRecmag_lavanderie(); | ||||
| 	TRecmag_lavanderie(const TRecmag_lavanderie & 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;
 | ||||
| 
 | ||||
| protected: | ||||
|   //bool msg_lv_nexcons(TVariant& var);
 | ||||
|   //void msg_lv_dot(const TString& name, TVariant& var);
 | ||||
|   bool msg_lv_nextcons(TVariant& var) const; | ||||
|   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 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_06 = "Contratti in scadenza Da/A", "lv0 -1 lv0400b", "F" | ||||
| Item_07 = "Stampa lista dotazioni temporanee scadute", "lv0 -1 lv0400e", "F" | ||||
| Item_08 = "Contratti Cogeco", "lv0 -1 lv0400g", "F" | ||||
| 
 | ||||
| 
 | ||||
| [LVMENU_030] | ||||
| @ -96,7 +97,7 @@ Caption = "Stampe" | ||||
| Picture = <ba03> | ||||
| Module  = 41 | ||||
| Flags   = "" | ||||
| Item_01 = "Giri", "lv2 -2 lv2300a", "F" | ||||
| Item_01 = "Giri", "lv2 -2", "F" | ||||
| 
 | ||||
| [LVMENU_040] | ||||
| Caption = "Documenti" | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user