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