Patch level : 12.0 988

Files correlati     : li0.exe li0100a.msk
Commento            :

riepilogo documenti/lettere – nel punto di menu non è possibile scegliere le numerazioni, nel mio caso vengono riepilogate e nel caso di ricalcolo e riporto probabilmente anche considerate le fatture provvisorie che giustamente hanno preso il numero lettera.

Riepilogo documenti/lettere – maiuscolo + f12 mi accende precarica se lo clicco mi chiede anno e cliente, ma l’ho già scelto nella richiesta parametri della pagina precedente, mi aspetterei che i dati della lettera vengano scritti sui documenti che ho a video in quel momento.
This commit is contained in:
Alessandro Bonazzi 2020-08-18 00:07:23 +02:00
parent ba9c4d6bdd
commit 8a66872b84
4 changed files with 179 additions and 334 deletions

View File

@ -7,13 +7,15 @@
#include <doc.h> #include <doc.h>
#include "../ve/velib.h" #include "../ve/velib.h"
#include "../ve/velib04.h"
#include "lilib01.h" #include "lilib01.h"
#include "li0.h" #include "li0.h"
#include "li0100a.h" #include "li0100a.h"
#define PLA_COLS 10 // n° colonne di lettere di intento #define PLA_COLS 10 // n° colonne di lettere di intento
#define CPC(x) (START_PLA + x*2) #define PLNPR(x) (START_PLA + x * 2)
#define PLIMP(x) (START_PLA + x * 2 + 1)
/* Utility ***********************/ /* Utility ***********************/
@ -33,19 +35,18 @@ private:
void next_page(int p); void next_page(int p);
bool _filter_changed; bool _filter_changed;
int _plColumns; int _plColumns;
void addRow(TSheet_field& sheet, TISAM_recordset& rec); void addRow(TSheet_field& sheet, const TDocumento &d);
void resetColumns(TSheet_field& sheet);
void addColumns(TSheet_field& sheet, const int col);
public: public:
void load_sheet(); void load_sheet();
void setFilterChanged() { _filter_changed = true; } void setFilterChanged() { _filter_changed = true; }
bool on_field_event(TOperable_field& o, TField_event e, long jolly); bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void load_config();
TVisLI_mask(); TVisLI_mask();
}; };
TVisLI_mask::TVisLI_mask() TVisLI_mask::TVisLI_mask() : TAutomask("li0100a"), _filter_changed(true)
: TAutomask("li0100a"), _filter_changed(true)
{ {
if(get(F_DATAFIN).empty()) if(get(F_DATAFIN).empty())
set(F_DATAFIN, TDate(TODAY)); set(F_DATAFIN, TDate(TODAY));
@ -57,221 +58,83 @@ void TVisLI_mask::load_sheet()
{ {
_filter_changed = false; _filter_changed = false;
TSheet_field& sheet = sfield(F_RIGHE); TSheet_field& sheet = sfield(F_RIGHE);
sheet.hide(); // Nascondo lo sheet per guadagnare un 20% di velocità di caricamento, le ottimizzazioni da PRO! TLista_documenti din;
if(!sheet.empty()) int anno = get_int(F_ANNO);
sheet.destroy(); TDate dal = get_date(F_DATAINI);
TDate al = get_date(F_DATAFIN);
resetColumns(sheet); long dacodcf = get_long(F_DACODCF);
long acodcf = get_long(F_ACODCF);
TString query = "USE DOC\n"; TCursor cli(new TRelation(LF_CLIFO));
if(get(F_TIPORIC) == "D") TRectype from(cli.curr());
TRectype to(cli.curr());
anno = today.year();
if (!dal.ok())
dal.set_start_year(anno);
if (!al.ok())
al.set_end_year(anno);
if (dacodcf > 0L)
{ {
/* Facciamo una scelta intelligente per ottimizzare sempre la chiave da usare from.put(CLI_TIPOCF, "C");
* Ho il filtro sul cliente? 2 from.put(CLI_CODCF, dacodcf);
* Ho il filtro sulla data? 3 }
* Ho il filtro sul codice numerazione? 5 if (acodcf > 0L)
* In caso di tutto negativo uso la chiave classica {
*/ to.put(CLI_TIPOCF, "C");
int key = get(F_DACODCF).full() ? 2 : (get(F_DATAINI).full() ? 3 : (get(F_CODNUM).full() ? 5 : 1)); to.put(CLI_CODCF, acodcf);
query << "KEY " << key << "\n"; }
cli.setregion(from, to);
TString queryFrom, queryTo; const int items = cli.items();
sheet.destroy();
for (cli = 0L; cli.pos() < items; ++cli)
{
din.read('D', 'C', cli.curr().get_long(CLI_CODCF), anno, tipi(), stati(), dal, al);
switch (key) const int ndocs = din.items();
{
case 2:
{
// 2: TIPOCF+CODCF+PROVV+ANNO+DATADOC+CODNUM+NDOC
queryFrom.cut(0) << "FROM TIPOCF='C' CODCF=#DACODCF PROVV='D'";
queryTo.cut(0) << "TO TIPOCF='C' CODCF=#ACODCF PROVV='D'";
if(get(F_ANNO).full())
{
queryFrom << " ANNO=#DAANNO";
queryTo << " ANNO=#AANNO";
if(get(F_DATAINI).full())
{
queryFrom << " DATADOC=#DADATA";
if(get(F_CODNUM).full())
queryFrom << " CODNUM=#DACODNUM";
}
if(get(F_DATAFIN).full())
{
queryTo << " DATADOC=#ADATA";
if(get(F_CODNUM).full())
queryTo << " CODNUM=#ACODNUM";
}
}
}
break;
case 3:
{
// 3: DATADOC+PROVV+ANNO+CODNUM+NDOC
queryFrom.cut(0) << "DATADOC=#DADATA PROVV='D'";
queryTo.cut(0) << "DATADOC=#ADATA PROVV='D'";
if(get(F_ANNO).full())
{
queryFrom << " ANNO=#DAANNO";
queryTo << " ANNO=#AANNO";
if(get(F_CODNUM).full())
{
queryFrom << " CODNUM=#DACODNUM";
queryTo << " CODNUM=#ACODNUM";
}
}
}
break;
case 5:
{
// 5: PROVV+CODNUM+ANNO+NDOC
queryFrom.cut(0) << "PROVV='D' CODNUM=#DACODNUM";
queryTo.cut(0) << "PROVV='D' CODNUM=#ACODNUM";
if(get(F_ANNO).full())
{
queryFrom << " ANNO=#DAANNO";
queryTo << " ANNO=#AANNO";
}
}
break;
case 1:
default:
{
// 1: PROVV+ANNO+CODNUM+NDOC
queryFrom.cut(0) << "PROVV='D'";
queryTo.cut(0) << "PROVV='D'";
if(get(F_ANNO).full())
{
queryFrom << " ANNO=#DAANNO";
queryTo << " ANNO=#AANNO";
}
}
break;
}
// Campi solo filtrabili con SELECT **************************
// TIPODOC+STATO
TString querySel;
bool tipo = get(F_TIPODOC).full();
bool stato = get(F_STATO).full();
querySel << ((tipo || stato) ? "\nSELECT " : "") << (tipo ? "TIPODOC==#TIPODOC&&" : "") << (stato ? "STR(STATO==#STATO)" : "");
if(tipo && !stato)
querySel.cut(querySel.len()-2);
// Unisco query
query << querySel << "\nFROM " << queryFrom << "\nTO " << queryTo << "\n";
// Creo recordset ; for (int d = 0; d < ndocs; d++)
TISAM_recordset rec(query); addRow(sheet, din[d]);
// Uso il metodo di TISAM_recordset per valorizzare la query, è più sicuro
if(get(F_DATAINI).full())
rec.set_var("#DADATA", get_date(F_DATAINI));
if(get(F_DATAFIN).full())
rec.set_var("#ADATA", get_date(F_DATAFIN));
if(get(F_CODNUM).full())
{
rec.set_var("#DACODNUM", get(F_CODNUM));
rec.set_var("#ACODNUM", get(F_CODNUM));
}
if(get(F_TIPODOC).full())
rec.set_var("#TIPODOC", get(F_TIPODOC));
if(get(F_ANNO).full())
{
rec.set_var("#DAANNO", get(F_ANNO));
rec.set_var("#AANNO", get(F_ANNO));
}
if(get(F_STATO).full())
rec.set_var("#STATO", get(F_STATO));
if(get(F_DACODCF).full())
rec.set_var("#DACODCF", get(F_DACODCF));
if(get(F_ACODCF).full())
rec.set_var("#ACODCF", get(F_ACODCF));
// Aggiungo le righe allo sheet
for(bool ok = rec.move_first(); ok; ok = rec.move_next())
addRow(sheet, rec);
} }
else
{
TString16 key; key << get(F_ANNO) << "|" << get(F_NUMPROT);
TRectype letint = cache().get(LF_LETINT, key);
// 2: TIPOCF+CODCF+PROVV+ANNO+DATADOC+CODNUM+NDOC
query << "KEY 2\n"
"FROM TIPOCF='C' CODCF=" << letint.get("CODCLI") << " PROVV='D' ANNO=" << letint.get("ANNO") << " DATADOC=" << letint.get("DAL") << "\n"
"TO TIPOCF='C' CODCF=" << letint.get("CODCLI") << " PROVV='D' ANNO=" << letint.get("ANNO") << " DATADOC="<< letint.get("ANNO") << "1231";
TISAM_recordset rec(query);
for(bool ok = rec.move_first(); ok; ok = rec.move_next())
{
TToken_string lePlafs(rec.get("G1:PLAFOND").as_string(), ',');
for(int i = 0; i < lePlafs.items(); i++)
{
TToken_string thisPlaf = lePlafs.get(i);
if(strcmp(thisPlaf.get(1), get(F_NUMPROT)) == 0) // 1 -> _plnumprot from lilib.h
{
addRow(sheet, rec);
break;
}
}
}
}
// Forzo aggiornamento e mostro sheet
sheet.force_update(); sheet.force_update();
sheet.show();
} }
void TVisLI_mask::addRow(TSheet_field& sheet, TISAM_recordset& rec) void TVisLI_mask::addRow(TSheet_field& sheet, const TDocumento &d)
{ {
// Per ogni documento che aggiungo valuto quante lettere di intento utilizzo. // Per ogni documento che aggiungo valuto quante lettere di intento utilizzo.
// Ogni lettera di intento utilizzerà 2 colonne: // Ogni lettera di intento utilizzerà 2 colonne:
// Num protocollo e QTA utilizzata // Num protocollo e QTA utilizzata
// Controllo preventivo che abbia effettivamente il plafond sul documento // Controllo preventivo che abbia effettivamente il plafond sul documento
if(rec.get("G1:PLAFOND").is_empty())
return;
// Creo una nuova riga TToken_string plafs(d.get(DOC_PLAFOND), ',');
TToken_string& row = sheet.row(-1);
// Data documento
row.add(rec.get("DATADOC").as_date(), sheet.cid2index(A_DATADOC)); // Anno documento
row.add(rec.get("ANNO").as_int(), sheet.cid2index(A_ANNO)); // Numero documento
row.add(rec.get("NDOC").as_string(), sheet.cid2index(A_NUMDOC)); // Numero documento
row.add(rec.get("CODNUM").as_string(), sheet.cid2index(A_CODNUM)); // Tipo documento
row.add(rec.get("TIPODOC").as_string(), sheet.cid2index(A_TIPODOC)); // Stato documento
row.add(rec.get("STATO").as_string(), sheet.cid2index(A_STATODOC)); // Tipo cliente
row.add("C", sheet.cid2index(A_TIPOCF)); // Codice cliente
row.add(rec.get("CODCF").as_int(), sheet.cid2index(A_CODCF)); // Ragione Sociale
TToken_string key("C"); key.add(rec.get("CODCF").as_string());
row.add(cache().get(LF_CLIFO, key, CLI_RAGSOC), sheet.cid2index(A_RAGSOC));
// Totale documento
row.add(rec.get("G1:TOTDOC").as_real(), sheet.cid2index(A_TOTDOC));
TToken_string lePlafs(rec.get("G1:PLAFOND").as_string(), ','); if (plafs.full())
// Abilito le colonne che mi servono
addColumns(sheet, lePlafs.items());
for(int i = 0; i < lePlafs.items() && i < PLA_COLS; i++)
{ {
TToken_string thisPlaf = lePlafs.get(i); const int r = sheet.set_row_cell(A_DATADOC,d.get(DOC_DATADOC)); // Data documento
row.add(thisPlaf.get(1), sheet.cid2index(CPC(i))); // _plnumprot
row.add(thisPlaf.get(2), sheet.cid2index(CPC(i)+1)); // _plimporto sheet.set_row_cell(A_ANNO, d.get_int(DOC_ANNO),r); // Anno documento
} sheet.set_row_cell(A_NUMDOC, d.get_long(DOC_NDOC), r); // Numero documento
} sheet.set_row_cell(A_CODNUM, d.get(DOC_CODNUM), r); // Tipo documento
sheet.set_row_cell(A_TIPODOC, d.get(DOC_TIPODOC), r); // Stato documento
sheet.set_row_cell(A_STATODOC, d.get(DOC_STATO), r); // Tipo cliente
sheet.set_row_cell(A_TIPOCF, "C", r); // Codice cliente
sheet.set_row_cell(A_CODCF, d.get(DOC_CODCF), r); // Ragione Sociale
sheet.set_row_cell(A_RAGSOC, d.clifor().get(CLI_RAGSOC), r);
// Totale documento
sheet.set_row_cell(A_TOTDOC, d.totale_doc(), r);
void TVisLI_mask::resetColumns(TSheet_field& sheet) const int nplafs = plafs.items();
{
return; // Disabled
// Disabilito tutte le colonne che non uso
for (int i = 0; i < PLA_COLS * 2; i++)
sheet.show_column(START_PLA+i, false);
}
void TVisLI_mask::addColumns(TSheet_field& sheet, const int col) for (int i = 0; i < nplafs && i < PLA_COLS; i++)
{ {
return; // Disabled TToken_string plaf(plafs.get(i));
for(; _plColumns <= col && _plColumns <= PLA_COLS; _plColumns++)
{ sheet.set_row_cell(PLNPR(i), plaf.get(_plnumprot), r); // _plnumprot
sheet.show_column(CPC(_plColumns), true); sheet.set_row_cell(PLIMP(i), plaf.get(_plimporto), r); // _plimporto
sheet.show_column(CPC(_plColumns)+1, true); }
} }
} }
@ -279,9 +142,7 @@ void TVisLI_mask::next_page(int p)
{ {
TAutomask::next_page(p); TAutomask::next_page(p);
if (_filter_changed && curr_win() == sfield(F_RIGHE).parent()) if (_filter_changed && curr_win() == sfield(F_RIGHE).parent())
{
load_sheet(); load_sheet();
}
} }
bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
@ -290,35 +151,24 @@ bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
switch(id) switch(id)
{ {
case F_CODNUM: case F_ANNO:
if (e == fe_init)
{ {
if(e == fe_modify) o.set(today.year());
{ load_config();
TMask& m = o.mask();
const TString4& codnum = o.get();
if(codnum.full())
{
const TCodice_numerazione & cod_num = cached_numerazione(codnum);
m.set(F_DESNUM, cod_num.descrizione());
m.set(F_TIPODOC, cod_num.tipo_doc(0));
const TTipo_documento tipodoc(cod_num.tipo_doc(0));
m.set(F_DESTIPODOC, tipodoc.descrizione());
}
}
} }
break; break;
case F_TIPORIC: case F_TIPORIC:
if(e == fe_modify) if( e == fe_modify)
{ {
bool en = o.get() == "D"; const bool on = o.get() == "D";
enable(F_NUMPROT, !en);
// Pulisco il campo se devo enable(F_NUMPROT, !on);
if(en) reset(F_NUMPROT); for(int i = F_DACODCF; i <= F_ARAGSOC; i++)
for(int i = START_DOC; i <= END_DOC; i++)
{ {
enable(i, en); enable(i, on);
// Pulisco i campi se devo reset(i);
if(!en) reset(i);
} }
} }
break; break;
@ -370,6 +220,12 @@ bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
to_cli.enable_check(); to_cli.enable_check();
from_cli.check_type(CHECK_SEARCH); from_cli.check_type(CHECK_SEARCH);
// Lancio la maschera // Lancio la maschera
sto.disable(F_ANNO_STO);
sto.disable(F_FROM_CLI);
sto.disable(F_TO_CLI);
sto.set(F_ANNO_STO, get_int(F_ANNO));
sto.set(F_FROM_CLI, get_long(F_DACODCF));
sto.set(F_TO_CLI, get_long(F_ACODCF));
if (sto.run() == K_ENTER) if (sto.run() == K_ENTER)
genera_li_storico(sto.get_int(F_ANNO_STO), sto.get_long(F_FROM_CLI), sto.get_long(F_TO_CLI)); genera_li_storico(sto.get_int(F_ANNO_STO), sto.get_long(F_FROM_CLI), sto.get_long(F_TO_CLI));
return false; return false;
@ -383,6 +239,7 @@ bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
const TString codnum = o.mask().get(A_CODNUM); const TString codnum = o.mask().get(A_CODNUM);
const long numdoc = o.mask().get_long(A_NUMDOC); const long numdoc = o.mask().get_long(A_NUMDOC);
const bool enab = numdoc > 0; const bool enab = numdoc > 0;
if (e == fe_button && enab) if (e == fe_button && enab)
{ {
o.disable(); // Tecnica anti doppio click! o.disable(); // Tecnica anti doppio click!
@ -398,13 +255,36 @@ bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
break; break;
} }
if (e == fe_modify && jolly == 0 && id >= START_MASK && id <= END_MASK) if (e == fe_modify && jolly == 0 && id >= F_TIPORIC && id <= F_ARAGSOC)
{
setFilterChanged(); setFilterChanged();
}
return true; return true;
} }
void TVisLI_mask::load_config()
{
TToken_string tipidoc(ini_get_string(CONFIG_DITTA, "li", "TIPIDOC"));
TSheet_field &docs = sfield(DOCUMENTI_STATO);
docs.destroy();
for (int i = 0; i < tipidoc.items(); i++)
{
TString td = tipidoc.get(i);
TToken_string stati(ini_get_string(CONFIG_DITTA, "li", td));
for (int j = 0; j < stati.items(); j++)
{
TToken_string s(stati.get(j), ',');
const int r = docs.set_row_cell(F_TIPODOC_C, td);
docs.set_row_cell(F_STATODOCDA_C, s.get(0), r);
docs.set_row_cell(F_STATODOCA_C, s.get(1), r);
}
}
docs.force_update();
}
class TVisLI_app : public TSkeleton_application class TVisLI_app : public TSkeleton_application
{ {
public: public:

View File

@ -1,23 +1,12 @@
#define START_MASK 401
#define START_DOC 403
#define END_DOC 414
#define F_TIPORIC 401 #define F_TIPORIC 401
#define F_NUMPROT 402 #define F_NUMPROT 402
#define F_DATAINI 403 #define F_DATAINI 403
#define F_DATAFIN 404 #define F_DATAFIN 404
#define F_CODNUM 405 #define F_ANNO 405
#define F_DESNUM 406 #define F_DACODCF 406
#define F_TIPODOC 407 #define F_DARAGSOC 407
#define F_DESTIPODOC 408 #define F_ACODCF 408
#define F_ANNO 409 #define F_ARAGSOC 409
#define F_STATO 410
#define F_DACODCF 411
#define F_DARAGSOC 412
#define F_ACODCF 413
#define F_ARAGSOC 414
#define END_MASK 499
// maschera ricostruzione storico // maschera ricostruzione storico
#define F_ANNO_STO 101 #define F_ANNO_STO 101
@ -25,9 +14,12 @@
#define F_TO_CLI 103 #define F_TO_CLI 103
#define F_TIPO 104 #define F_TIPO 104
#define DOCUMENTI_STATO 201
#define F_RIGHE 301 #define F_RIGHE 301
#define START_SHEET 101 #define F_TIPODOC_C 101
#define F_STATODOCDA_C 102
#define F_STATODOCA_C 103
#define A_DATADOC 101 #define A_DATADOC 101
#define A_ANNO 102 #define A_ANNO 102

View File

@ -1,6 +1,7 @@
#include "li0100a.h" #include "li0100a.h"
TOOLBAR "topbar" 0 0 0 2 TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_RECALC 2 2 BUTTON DLG_RECALC 2 2
BEGIN BEGIN
PROMPT 1 1 "Carica" PROMPT 1 1 "Carica"
@ -9,7 +10,7 @@ END
BUTTON DLG_OK 2 2 BUTTON DLG_OK 2 2
BEGIN BEGIN
PROMPT 1 1 "Precarica" PROMPT 1 1 "Ricostruisci Plafond"
PICTURE TOOL_ELABORA PICTURE TOOL_ELABORA
END END
@ -21,8 +22,9 @@ PAGE "Impostazioni" 0 2 0 0
LISTBOX F_TIPORIC 20 LISTBOX F_TIPORIC 20
BEGIN BEGIN
PROMPT 1 1 "Ricerca per " PROMPT 1 1 "Ricerca per "
ITEM "D|Estremi documenti" ITEM "L|Lettera" MESSAGE ENABLE,1@|CLEAR,2@
ITEM "L|Lettera" ITEM "D|Estremi documenti" MESSAGE CLEAR,1@|ENABLE,2@
END END
NUMBER F_NUMPROT 6 NUMBER F_NUMPROT 6
@ -45,7 +47,7 @@ BEGIN
OUTPUT F_DARAGSOC LF_CLIFO->RAGSOC OUTPUT F_DARAGSOC LF_CLIFO->RAGSOC
OUTPUT F_ACODCF CODCLI OUTPUT F_ACODCF CODCLI
OUTPUT F_ARAGSOC LF_CLIFO->RAGSOC OUTPUT F_ARAGSOC LF_CLIFO->RAGSOC
FLAGS "DU" GROUP 1
END END
DATE F_DATAINI DATE F_DATAINI
@ -60,89 +62,22 @@ BEGIN
WARNING "La data finale non può essere minore della data iniziale" WARNING "La data finale non può essere minore della data iniziale"
END END
GROUPBOX DLG_NULL 80 5
BEGIN
PROMPT 0 3 "Documento"
END
STRING F_CODNUM 5
BEGIN
PROMPT 1 4 "Numerazione "
HELP "Codice numerazione"
USE %NUM
INPUT CODTAB F_CODNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM CODTAB
OUTPUT F_DESNUM S0
FLAG "UPA"
WARNING "Numerazione assente"
KEY 1 2
END
STRING F_DESNUM 50
BEGIN
PROMPT 24 4 ""
HELP "Descrizione numerazione"
USE %NUM KEY 2
INPUT S0 F_DESNUM
DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODNUM
END
STRING F_TIPODOC 5
BEGIN
PROMPT 1 5 "Tipo "
HELP "Codice tipo documento"
USE %TIP
INPUT CODTAB F_TIPODOC
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC CODTAB
OUTPUT F_DESTIPODOC S0
FLAG "UP"
END
STRING F_DESTIPODOC 50
BEGIN
PROMPT 24 5 ""
HELP "Descrizione tipo documento"
USE %TIP KEY 2
INPUT S0 F_DESTIPODOC
DISPLAY "Descrizione@60" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC
END
NUMBER F_ANNO 4 NUMBER F_ANNO 4
BEGIN BEGIN
PROMPT 1 6 "Esercizio " PROMPT 1 3 "Anno "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
NUM_EXPR #F_ANNO>0 WARNING "Inserire un anno"
FLAG "AP"
WARNING "Inserire un anno valido"
END
STRING F_STATO 1
BEGIN
PROMPT 24 6 "Stato "
USE %STD
INPUT CODTAB F_STATO
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO CODTAB
FLAG "U"
END END
GROUPBOX DLG_NULL 80 4 GROUPBOX DLG_NULL 80 4
BEGIN BEGIN
PROMPT 0 8 "Clienti" PROMPT 0 5 "Clienti"
END END
NUMBER F_DACODCF 6 NUMBER F_DACODCF 6
BEGIN BEGIN
PROMPT 1 9 "Da Codice" PROMPT 1 6 "Da Codice"
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" SELECT INPUT TIPOCF "C" SELECT
INPUT CODCF F_DACODCF INPUT CODCF F_DACODCF
@ -154,13 +89,13 @@ BEGIN
OUTPUT F_DACODCF CODCF OUTPUT F_DACODCF CODCF
OUTPUT F_DARAGSOC RAGSOC OUTPUT F_DARAGSOC RAGSOC
CHEKTYPE NORMAL CHEKTYPE NORMAL
GROUP 1 GROUP 2
FLAGS "" FLAGS "D"
END END
STRING F_DARAGSOC 50 49 STRING F_DARAGSOC 50 49
BEGIN BEGIN
PROMPT 21 9 "R.Soc" PROMPT 21 6 "R.Soc"
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "C" SELECT INPUT TIPOCF "C" SELECT
INPUT RAGSOC F_DARAGSOC INPUT RAGSOC F_DARAGSOC
@ -170,14 +105,14 @@ BEGIN
DISPLAY "Partita IVA@15" PAIV DISPLAY "Partita IVA@15" PAIV
COPY OUTPUT F_DACODCF COPY OUTPUT F_DACODCF
ADD RUN CG0 -1 ADD RUN CG0 -1
GROUP 1 GROUP 2
FLAGS "" FLAGS "D"
END END
NUMBER F_ACODCF 6 NUMBER F_ACODCF 6
BEGIN BEGIN
PROMPT 1 10 "A Codice " PROMPT 1 7 "A Codice "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" SELECT INPUT TIPOCF "C" SELECT
INPUT CODCF F_ACODCF INPUT CODCF F_ACODCF
@ -189,13 +124,13 @@ BEGIN
OUTPUT F_ACODCF CODCF OUTPUT F_ACODCF CODCF
OUTPUT F_ARAGSOC RAGSOC OUTPUT F_ARAGSOC RAGSOC
CHEKTYPE NORMAL CHEKTYPE NORMAL
GROUP 1 GROUP 2
FLAGS "" FLAGS "D"
END END
STRING F_ARAGSOC 50 49 STRING F_ARAGSOC 50 49
BEGIN BEGIN
PROMPT 21 10 "R.Soc" PROMPT 21 7 "R.Soc"
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF "C" SELECT INPUT TIPOCF "C" SELECT
INPUT RAGSOC F_ARAGSOC INPUT RAGSOC F_ARAGSOC
@ -205,13 +140,22 @@ BEGIN
DISPLAY "Partita IVA@15" PAIV DISPLAY "Partita IVA@15" PAIV
COPY OUTPUT F_ACODCF COPY OUTPUT F_ACODCF
ADD RUN CG0 -1 ADD RUN CG0 -1
GROUP 1 GROUP 2
FLAGS "" FLAGS "D"
END
SPREADSHEET DOCUMENTI_STATO 45 10
BEGIN
PROMPT 18 10 ""
ITEM "Tipo Numerazione"
ITEM "Da stato"
ITEM "A stato"
FLAGS "D"
END END
STRING DLG_PROFILE 256 STRING DLG_PROFILE 256
BEGIN BEGIN
PROMPT 1 -1 "Profilo " PROMPT -1 -1 "Profilo "
PSELECT PSELECT
FLAGS "H" FLAGS "H"
END END
@ -260,6 +204,31 @@ ENDPAGE
ENDMASK ENDMASK
PAGE "Riga tipo numerazione" -1 -1 78 8
STRING F_TIPODOC_C 4
BEGIN
PROMPT 2 1 "Tipo Documento "
FIELD TIPODOC
END
STRING F_STATODOCDA_C 4
BEGIN
PROMPT 2 2 "Da Numerazione "
FIELD CODTAB
END
STRING F_STATODOCA_C 4
BEGIN
PROMPT 2 3 "A Numerazione "
FIELD CODTAB
END
ENDPAGE
ENDMASK
PAGE "Riga" -1 -1 69 14 PAGE "Riga" -1 -1 69 14
DATE A_DATADOC DATE A_DATADOC

View File

@ -38,6 +38,10 @@ void lint_reset_msg();
const TToken_string & lint_get_msg(); const TToken_string & lint_get_msg();
// Ricostruisce il plafond dall'anno // Ricostruisce il plafond dall'anno
void genera_li_storico(const int anno, const long from_cli = 0L, const long to_cli = 0L, const char tipocf = 'C'); void genera_li_storico(const int anno, const long from_cli = 0L, const long to_cli = 0L, const char tipocf = 'C');
// Ritorna la lista dei tipi
TToken_string & tipi();
// Ritorna la lista degli stati
TToken_string & stati();
class TLi_manager : public TObject class TLi_manager : public TObject
{ {