Patch level : 12.0 1080

Files correlati     : ve1.exe , ve18001.rep

Commento        :
Aggiunto modulo "Stampa fido" in ve1 e relativo report
This commit is contained in:
smen 2021-09-23 09:55:00 +02:00
parent 9ad6b21451
commit 6ffea96726
12 changed files with 382 additions and 15 deletions

View File

@ -10,9 +10,11 @@ int main(int argc, char **argv)
case 1 : ve1200(argc, argv); break; //stampa scoperto, lista bolle
case 2 : ve1300(argc, argv); break; //stampa report documenti
case 3 : ve1400(argc, argv); break; //stampa tabelle vendita ed utilita' varie
case 4 : ve1500(argc, argv); break; //stampa di controllo documenti contabilizzati
case 5 : ve1600(argc, argv); break; //stampa di controllo bolle fatturate
case 6 : ve1700(argc, argv); break; //Lista documento con report
case 4 : ve1500(argc, argv); break; //stampa di controllo documenti contabilizzati
case 5 : ve1600(argc, argv); break; //stampa di controllo bolle fatturate
case 6 : ve1700(argc, argv); break; //Lista documento con report
case 7 : ve1800(argc, argv); break; //Fido
default: ve1100(argc, argv); break; //stampa documenti di vendita
}
return 0;

View File

@ -8,6 +8,7 @@ int ve1400(int argc, char* argv[]);
int ve1500(int argc, char* argv[]);
int ve1600(int argc, char* argv[]);
int ve1700(int argc, char* argv[]);
int ve1800(int argc, char* argv[]);
#endif // __VE1_H

View File

@ -57,3 +57,33 @@
: MESSAGE_ADD_ROW ( s1 s2 s3 -- )
DOC_ADD_ROW \ user defined word in ve1.exe
;
: SALDO_CONTABILE ( codcf -- )
1
SWAP
UTILIZZO
;
: ESPOSTO_SALDACONTO ( codcf -- )
2
SWAP
UTILIZZO
;
: ESPOSTO_CONTABILE ( codcf -- )
3
SWAP
UTILIZZO
;
: SALDO_DOCUMENTI ( codcf -- )
4
SWAP
UTILIZZO
;
: UTILIZZO_TOTALE ( codcf -- )
7
SWAP
UTILIZZO
;

View File

@ -4,3 +4,5 @@
#define F_ESERCIZIO 103
#define F_DATAINIZIO 104
#define F_DATAFINE 105

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="ve1300" name="ve16001" orientation="2" lpi="6" command="ve1 -5" class="ve1600">
<report libraries="ve1300" name="ve17001" orientation="2" lpi="6" command="ve1 -5" class="ve1600">
<description>Lista documenti</description>
<font face="Courier New" size="8" />
<section type="Head" height="5" pattern="1">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="ve1300" name="ve16002" orientation="2" lpi="6" command="ve1 -5" class="ve1600">
<report libraries="ve1300" name="ve17002" orientation="2" lpi="6" command="ve1 -5" class="ve1600">
<description>Lista documenti con dettaglio</description>
<font face="Courier New" size="8" />
<section type="Head" height="5" pattern="1">

84
src/ve/ve1800.cpp Normal file
View File

@ -0,0 +1,84 @@
#include <applicat.h>
#include <progind.h>
#include <recset.h>
#include <reprint.h>
#include "velib07.h"
#include "ve1.h"
#include "ve1800a.h"
#include <defmask.h>
#include <toolfld.h>
class TListaFido_app : public TKlarkKent_app
{
protected:
virtual void main_loop();
};
void TListaFido_app::main_loop()
{
TMask m("ve1800a");
TDocument_report report;
m.set(F_REPORT, "ve18001");
((TButton_tool&)m.field(DLG_PREVIEW)).set_exit_key('A');
((TButton_tool&)m.field(DLG_PRINT)).set_exit_key('P');
KEY k;
while ((k = m.run()) != K_QUIT)
{
TReport_book book;
TFilename report_name = m.get(F_REPORT);
if (report_name.blank())
report_name = "ve18001";
report.load(report_name);
TISAM_recordset * recset = (TISAM_recordset*)report.recordset();
if (m.get_bool(F_CONFIDO))
{
TString query = recset->query_text();
int pos = query.find("\n");
if (pos > 0)
{
query.insert(" SELECT FIDO>0", pos);
recset->set(query);
recset->requery();
}
}
long cod_fr = m.get_long(F_CODFR);
long cod_to = m.get_long(F_CODTO);
report.set_var("#CODFR", cod_fr);
report.set_var("#CODTO", cod_to);
recset->set_var("#CODFR", cod_fr);
recset->set_var("#CODTO", cod_to);
TDate al = m.get_date(F_ADATA);
if (al.ok())
report.set_datafido(al);
book.add(report);
if (book.pages() > 0)
if (k == 'A')
book.preview();
else
book.print();
}
}
int ve1800(int argc, char* argv[])
{
TListaFido_app app;
app.run(argc, argv, TR("Stampa Report Fido"));
return 0;
}

98
src/ve/ve18001.rep Normal file
View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report libraries="ve1300" page_merge="" save_printer="" name="ve18001" use_printer_font="" orientation="2" page_split="" lpi="6" command="ve1 -5" class="ve1800">
<description>Lista documenti con fido</description>
<font face="Courier New" size="8" />
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="" hidden="" height="5" page_break="" can_break="" pattern="1">
<field x="98" y="3" deactivated="" type="Testo" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="" pattern="1" hide_zero="" text="Disponibile" />
<field x="8" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="50" codval="" id="1" pattern="1" hide_zero="" text="">
<font face="Courier New" bold="1" size="8" />
<source>#SYSTEM.RAGSOC</source>
</field>
<field x="136" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="2" pattern="1" hide_zero="" text="">
<source>#SYSTEM.DATE</source>
</field>
<field x="162" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="3" pattern="1" hide_zero="" text="">
<source>#PAGE</source>
</field>
<field y="1.25" deactivated="" type="Testo" hidden="" align="center" link="" dynamic_height="" shade_offset="" width="170" codval="" id="4" pattern="1" hide_zero="" text="Lista Clienti con Fido">
<font face="Courier New" bold="1" size="10" />
</field>
<field border="2" y="2.8" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="170" codval="" height="0" id="5" pattern="1" hide_zero="" text="">
<prescript description="H0.5 PRESCRIPT">MESSAGE _SEPARATOR,157</prescript>
</field>
<field border="2" y="4.25" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="170" codval="" height="0" id="5" pattern="1" hide_zero="" text="">
<prescript description="H0.5 PRESCRIPT">MESSAGE _SEPARATOR,157</prescript>
</field>
<field y="3" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="6" pattern="1" hide_zero="" text="Codice" />
<field x="60" y="3" deactivated="" type="Testo" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="7" pattern="1" hide_zero="" text="Fido" />
<field x="7" y="3" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="50" codval="" id="8" pattern="1" hide_zero="" text="Ragione sociale" />
<field x="79" y="3" deactivated="" type="Testo" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="11" pattern="1" hide_zero="" text="Saldo" />
<field deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="8" codval="" id="13" pattern="1" hide_zero="" text="Ditta:" />
<field x="130" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="13" pattern="1" hide_zero="" text="Data:" />
<field x="156" deactivated="" type="Testo" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="13" pattern="1" hide_zero="" text="Pag." />
<field x="116" y="3" deactivated="" type="Testo" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="17" pattern="1" hide_zero="" text="Fuori fido" />
</section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="1" hidden="" page_break="" can_break="" pattern="1">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1</prescript>
</section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" height="4" page_break="" can_break="" pattern="1">
<field deactivated="" type="Immagine" hidden="" link="" dynamic_height="" shade_offset="" width="1" codval="" id="1" pattern="1" hide_zero="" text="">
<source>""</source>
</field>
</section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
<field deactivated="" type="Numero" valign="bottom" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="6" codval="" id="101" pattern="1" hide_zero="" text="">
<font face="Courier New" bold="1" size="8" />
<source>CODCF</source>
</field>
<field x="7" deactivated="" type="Stringa" valign="bottom" hidden="" link="" dynamic_height="" shade_offset="" width="50" codval="" id="102" pattern="1" hide_zero="" text="">
<source>RAGSOC</source>
</field>
<field x="60" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="103" pattern="1" hide_zero="" text="###.###.###,@@">
<source>FIDO</source>
</field>
<field x="79" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="104" pattern="1" hide_zero="" text="###.###.###,@@">
<prescript description="B1.104 PRESCRIPT">#101 @
UTILIZZO_TOTALE</prescript>
</field>
<field x="98" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="105" pattern="1" hide_zero="" text="###.###.###,@@">
<prescript description="B1.105 PRESCRIPT">#103 @
#104 @
-
DUP
0
&#3E;
IF
#THIS !
ELSE
DROP
0
#THIS !
THEN</prescript>
</field>
<field x="116" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="18" codval="" id="106" pattern="1" hide_zero="" text="###.###.###,@@">
<prescript description="B1.106 PRESCRIPT">#104 @
#103 @
-
DUP
0
&#3E;
IF
#THIS !
ELSE
DROP
0
#THIS !
THEN</prescript>
</field>
</section>
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="1" type="Foot" level="" hidden="" height="3" page_break="" can_break="" pattern="1" />
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="1" hidden="" height="11" page_break="" can_break="" pattern="1">
<field border="2" y="0.5" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="170" codval="" height="0" id="5" pattern="1" hide_zero="" text="">
<prescript description="F1.5 PRESCRIPT">MESSAGE _SEPARATOR,157</prescript>
</field>
</section>
<sql>USE CLIFO
FROM TIPOCF="C" CODCF=#CODFR
TO TIPOCF="C" CODCF=#CODTO</sql>
</report>

8
src/ve/ve1800a.h Normal file
View File

@ -0,0 +1,8 @@
#define F_CODFR 101
#define F_RAGSOCFR 102
#define F_CODTO 103
#define F_RAGSOCTO 104
#define F_ADATA 105
#define F_REPORT 106
#define F_CONFIDO 107

97
src/ve/ve1800a.uml Normal file
View File

@ -0,0 +1,97 @@
#include "ve1800a.h"
TOOLBAR "topbar" 0 0 0 2
#include <aprintbar.h>
ENDPAGE
PAGE "Lista documenti" -1 -1 60 21
NUMBER F_CODFR 6
BEGIN
PROMPT 2 3 "Da codice "
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_CODFR
DISPLAY "Codice@6R" CODCF
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
DISPLAY "Partita IVA@11" PAIV
OUTPUT F_CODFR CODCF
OUTPUT F_RAGSOCFR RAGSOC
CHECKTYPE SEARCH
FLAGS "GR"
END
STRING F_RAGSOCFR 50
BEGIN
PROMPT 22 3 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOCFR
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
COPY OUTPUT F_CODFR
CHECKTYPE SEARCH
END
NUMBER F_CODTO 6
BEGIN
PROMPT 2 5 "A codice "
COPY USE F_CODFR
INPUT TIPOCF "C"
INPUT CODCF F_CODTO
DISPLAY "Codice@6R" CODCF
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
DISPLAY "Partita IVA@11" PAIV
OUTPUT F_CODTO CODCF
OUTPUT F_RAGSOCTO RAGSOC
CHECKTYPE SEARCH
NUM_GE_IF_SET(F_CODFR)
WARNING "Il codice cliente dev'essere maggiore del precedente"
FLAGS "GR"
END
STRING F_RAGSOCTO 50
BEGIN
PROMPT 22 5 ""
COPY USE F_RAGSOCFR
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOCTO
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Sospeso@C" SOSPESO
DISPLAY "Codice@R" CODCF
DISPLAY "Codice fiscale@16" COFI
DISPLAY "Partita IVA@11" PAIV
COPY OUTPUT F_CODTO
CHECKTYPE SEARCH
END
DATE F_ADATA
BEGIN
PROMPT 2 7 "Alla data "
END
BOOLEAN F_CONFIDO
BEGIN
PROMPT 2 9 "Fido diverso da 0 "
END
STRING F_REPORT 50
BEGIN
PROMPT 2 -3 "Report "
RSELECT "ve1800"
CHECKTYPE NORMAL
END
ENDPAGE
ENDMASK

View File

@ -365,8 +365,10 @@ bool TDocument_report::set_recordset(const TString& query)
return TReport::set_recordset(new TMateriali_base_recordset(query));
if (query.find("SCALARE") > 0)
return TReport::set_recordset(new TScalare_recordset(query));
return TReport::set_recordset(new TDocument_recordset(query));
if(query.find("USE") > 0 && query.find("DOC") > query.find("USE"))
return TReport::set_recordset(new TDocument_recordset(query));
TReport::set_recordset(query);
return true;
}
bool TDocument_report::load(const char* name)
@ -385,17 +387,22 @@ bool TDocument_report::load(const char* name)
{
const TString use = recset->query_text();
if (use.find("MATBASE") > 0)
recset = new TMateriali_base_recordset(use);
sec->set_recordset(new TMateriali_base_recordset(use));
else
if (use.find("SCALARE") > 0)
recset = new TScalare_recordset(use);
sec->set_recordset(new TScalare_recordset(use));
else
recset = new TDocument_recordset(use);
sec->set_recordset(recset);
if (use.find("USE") > 0 && use.find("DOC") > use.find("USE"))
sec->set_recordset(new TDocument_recordset(use));
else
sec->set_recordset(use);
}
}
}
}
set_datafido(today);
return ok;
}
@ -724,11 +731,42 @@ bool TDocument_report::msg_riepilogo_iva(TVariant_stack& stack)
return true;
}
void TDocument_report::set_datafido(const TDate& data)
{
_data_fido = data.ok() ? data : today;
TEsercizi_contabili & esc = esercizi();
if (esc.date2esc(_data_fido) == 0)
_data_fido = esc[esc.last()].fine();
}
bool TDocument_report::msg_fido(TVariant_stack& stack)
{
real value;
long codcf = stack.pop().as_int();
int selector = stack.pop().as_int();
if (selector & 1)
value += calcola_saldo_contabile('C', codcf, _data_fido);
if (selector & 2)
value += calcola_esposto_da_saldaconto('C', codcf, _data_fido, 10);
if(selector & 4)
value += calcola_fido_da_documenti('C', codcf, _data_fido, EMPTY_STRING);
curr_field()->set(TVariant(value>0 ? value : ""));
return true;
}
size_t TDocument_report::get_usr_words(TString_array& words) const
{
TReport::get_usr_words(words);
const char* const name[] = { "DOC_CLIENTE", "DOC_PARENT_DOC", "DOC_PARENT_ROW",
"DOC_TABELLA_IVA", NULL};
"DOC_TABELLA_IVA", "UTILIZZO", NULL};
((TDocument_report*)this)->_first_msg = words.items(); // Calcola il primo numero disponibile
for (size_t i = 0; name[i] != NULL; i++)
@ -748,6 +786,7 @@ bool TDocument_report::execute_usr_word(unsigned int opcode, TVariant_stack& sta
case 1: msg_parent_doc(stack); break;
case 2: msg_parent_row(stack); break;
case 3: msg_riepilogo_iva(stack); break;
case 4: msg_fido(stack); break;
default: break;
}

View File

@ -108,6 +108,7 @@ public:
class TDocument_report : public TReport
{
size_t _first_msg;
TDate _data_fido;
protected:
virtual size_t get_usr_words(TString_array& words) const;
@ -115,16 +116,18 @@ protected:
bool msg_cliente(TVariant_stack& stack);
bool msg_parent_doc(TVariant_stack& stack);
bool msg_parent_row(TVariant_stack& stack);
bool msg_fido(TVariant_stack& stack);
bool msg_riepilogo_iva(TVariant_stack& stack);
void output_values(const TRectype& rec, const TString& output);
void reset_values(const TString& output);
public:
virtual bool set_recordset(const TString& query);
virtual bool set_recordset(TRecordset * set) { return TReport::set_recordset(set);}
bool load(const char* name);
virtual bool set_recordset(TRecordset * set) { return TReport::set_recordset(set);}
void set_datafido(const TDate& data);
bool load(const char* name);
};
///////////////////////////////////////////////
@ -133,6 +136,9 @@ public:
//metodo per il calcolo del fido cliente
real calcola_fido_cliente (long codcf, const TDate& datacalc, const TDoc_key& ignore);
real calcola_saldo_contabile(const char tipocf, const long codcf, const TDate& datacalc);
real calcola_esposto_da_saldaconto(const char tipocf, const long codcf, const TDate& datacalc, const int riskdays);
real calcola_fido_da_documenti(const char tipocf, const long codcf, const TDate& datacalc, const TDoc_key& ignore);
#endif