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);
 | 
						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 ...
 | 
				
			||||||
@ -1686,16 +1693,19 @@ bool TLV_report::get_usr_val(const TString& name, TVariant& var) const
 | 
				
			|||||||
      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