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);
|
||||
}
|
||||
|
||||
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 ...
|
||||
@ -1683,19 +1690,22 @@ bool TLV_report::get_usr_val(const TString& name, TVariant& var) const
|
||||
TDate next_dtcons = dtcons;
|
||||
next_dtcons += 7;
|
||||
var = next_dtcons;
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if(name.starts_with("#DOTOD"))
|
||||
{
|
||||
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();
|
||||
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)
|
||||
{
|
||||
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