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:
parent
ba9c4d6bdd
commit
8a66872b84
@ -7,13 +7,15 @@
|
||||
#include <doc.h>
|
||||
|
||||
#include "../ve/velib.h"
|
||||
#include "../ve/velib04.h"
|
||||
#include "lilib01.h"
|
||||
|
||||
#include "li0.h"
|
||||
#include "li0100a.h"
|
||||
|
||||
#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 ***********************/
|
||||
|
||||
@ -33,19 +35,18 @@ private:
|
||||
void next_page(int p);
|
||||
bool _filter_changed;
|
||||
int _plColumns;
|
||||
void addRow(TSheet_field& sheet, TISAM_recordset& rec);
|
||||
void resetColumns(TSheet_field& sheet);
|
||||
void addColumns(TSheet_field& sheet, const int col);
|
||||
void addRow(TSheet_field& sheet, const TDocumento &d);
|
||||
|
||||
public:
|
||||
void load_sheet();
|
||||
void setFilterChanged() { _filter_changed = true; }
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
void load_config();
|
||||
TVisLI_mask();
|
||||
};
|
||||
|
||||
|
||||
TVisLI_mask::TVisLI_mask()
|
||||
: TAutomask("li0100a"), _filter_changed(true)
|
||||
TVisLI_mask::TVisLI_mask() : TAutomask("li0100a"), _filter_changed(true)
|
||||
{
|
||||
if(get(F_DATAFIN).empty())
|
||||
set(F_DATAFIN, TDate(TODAY));
|
||||
@ -57,221 +58,83 @@ void TVisLI_mask::load_sheet()
|
||||
{
|
||||
_filter_changed = false;
|
||||
TSheet_field& sheet = sfield(F_RIGHE);
|
||||
sheet.hide(); // Nascondo lo sheet per guadagnare un 20% di velocità di caricamento, le ottimizzazioni da PRO!
|
||||
if(!sheet.empty())
|
||||
sheet.destroy();
|
||||
|
||||
resetColumns(sheet);
|
||||
|
||||
TString query = "USE DOC\n";
|
||||
if(get(F_TIPORIC) == "D")
|
||||
TLista_documenti din;
|
||||
int anno = get_int(F_ANNO);
|
||||
TDate dal = get_date(F_DATAINI);
|
||||
TDate al = get_date(F_DATAFIN);
|
||||
long dacodcf = get_long(F_DACODCF);
|
||||
long acodcf = get_long(F_ACODCF);
|
||||
TCursor cli(new TRelation(LF_CLIFO));
|
||||
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
|
||||
* Ho il filtro sul cliente? 2
|
||||
* Ho il filtro sulla data? 3
|
||||
* Ho il filtro sul codice numerazione? 5
|
||||
* In caso di tutto negativo uso la chiave classica
|
||||
*/
|
||||
int key = get(F_DACODCF).full() ? 2 : (get(F_DATAINI).full() ? 3 : (get(F_CODNUM).full() ? 5 : 1));
|
||||
query << "KEY " << key << "\n";
|
||||
from.put(CLI_TIPOCF, "C");
|
||||
from.put(CLI_CODCF, dacodcf);
|
||||
}
|
||||
if (acodcf > 0L)
|
||||
{
|
||||
to.put(CLI_TIPOCF, "C");
|
||||
to.put(CLI_CODCF, acodcf);
|
||||
}
|
||||
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)
|
||||
{
|
||||
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";
|
||||
const int ndocs = din.items();
|
||||
|
||||
// Creo recordset
|
||||
TISAM_recordset rec(query);
|
||||
|
||||
// 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);
|
||||
; for (int d = 0; d < ndocs; d++)
|
||||
addRow(sheet, din[d]);
|
||||
}
|
||||
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.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.
|
||||
// Ogni lettera di intento utilizzerà 2 colonne:
|
||||
// Num protocollo e QTA utilizzata
|
||||
|
||||
// Controllo preventivo che abbia effettivamente il plafond sul documento
|
||||
if(rec.get("G1:PLAFOND").is_empty())
|
||||
return;
|
||||
|
||||
// Creo una nuova riga
|
||||
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 plafs(d.get(DOC_PLAFOND), ',');
|
||||
|
||||
TToken_string lePlafs(rec.get("G1:PLAFOND").as_string(), ',');
|
||||
// Abilito le colonne che mi servono
|
||||
addColumns(sheet, lePlafs.items());
|
||||
|
||||
for(int i = 0; i < lePlafs.items() && i < PLA_COLS; i++)
|
||||
if (plafs.full())
|
||||
{
|
||||
TToken_string thisPlaf = lePlafs.get(i);
|
||||
row.add(thisPlaf.get(1), sheet.cid2index(CPC(i))); // _plnumprot
|
||||
row.add(thisPlaf.get(2), sheet.cid2index(CPC(i)+1)); // _plimporto
|
||||
}
|
||||
}
|
||||
const int r = sheet.set_row_cell(A_DATADOC,d.get(DOC_DATADOC)); // Data documento
|
||||
|
||||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
const int nplafs = plafs.items();
|
||||
|
||||
void TVisLI_mask::addColumns(TSheet_field& sheet, const int col)
|
||||
{
|
||||
return; // Disabled
|
||||
for(; _plColumns <= col && _plColumns <= PLA_COLS; _plColumns++)
|
||||
{
|
||||
sheet.show_column(CPC(_plColumns), true);
|
||||
sheet.show_column(CPC(_plColumns)+1, true);
|
||||
for (int i = 0; i < nplafs && i < PLA_COLS; i++)
|
||||
{
|
||||
TToken_string plaf(plafs.get(i));
|
||||
|
||||
sheet.set_row_cell(PLNPR(i), plaf.get(_plnumprot), r); // _plnumprot
|
||||
sheet.set_row_cell(PLIMP(i), plaf.get(_plimporto), r); // _plimporto
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -279,9 +142,7 @@ void TVisLI_mask::next_page(int p)
|
||||
{
|
||||
TAutomask::next_page(p);
|
||||
if (_filter_changed && curr_win() == sfield(F_RIGHE).parent())
|
||||
{
|
||||
load_sheet();
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
case F_CODNUM:
|
||||
case F_ANNO:
|
||||
if (e == fe_init)
|
||||
{
|
||||
if(e == fe_modify)
|
||||
{
|
||||
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());
|
||||
}
|
||||
}
|
||||
o.set(today.year());
|
||||
load_config();
|
||||
}
|
||||
break;
|
||||
|
||||
case F_TIPORIC:
|
||||
if(e == fe_modify)
|
||||
if( e == fe_modify)
|
||||
{
|
||||
bool en = o.get() == "D";
|
||||
enable(F_NUMPROT, !en);
|
||||
// Pulisco il campo se devo
|
||||
if(en) reset(F_NUMPROT);
|
||||
for(int i = START_DOC; i <= END_DOC; i++)
|
||||
const bool on = o.get() == "D";
|
||||
|
||||
enable(F_NUMPROT, !on);
|
||||
for(int i = F_DACODCF; i <= F_ARAGSOC; i++)
|
||||
{
|
||||
enable(i, en);
|
||||
// Pulisco i campi se devo
|
||||
if(!en) reset(i);
|
||||
enable(i, on);
|
||||
reset(i);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -370,6 +220,12 @@ bool TVisLI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
to_cli.enable_check();
|
||||
from_cli.check_type(CHECK_SEARCH);
|
||||
// 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)
|
||||
genera_li_storico(sto.get_int(F_ANNO_STO), sto.get_long(F_FROM_CLI), sto.get_long(F_TO_CLI));
|
||||
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 long numdoc = o.mask().get_long(A_NUMDOC);
|
||||
const bool enab = numdoc > 0;
|
||||
|
||||
if (e == fe_button && enab)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
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
|
||||
{
|
||||
public:
|
||||
|
@ -1,23 +1,12 @@
|
||||
#define START_MASK 401
|
||||
#define START_DOC 403
|
||||
#define END_DOC 414
|
||||
|
||||
#define F_TIPORIC 401
|
||||
#define F_NUMPROT 402
|
||||
#define F_DATAINI 403
|
||||
#define F_DATAFIN 404
|
||||
#define F_CODNUM 405
|
||||
#define F_DESNUM 406
|
||||
#define F_TIPODOC 407
|
||||
#define F_DESTIPODOC 408
|
||||
#define F_ANNO 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
|
||||
#define F_ANNO 405
|
||||
#define F_DACODCF 406
|
||||
#define F_DARAGSOC 407
|
||||
#define F_ACODCF 408
|
||||
#define F_ARAGSOC 409
|
||||
|
||||
// maschera ricostruzione storico
|
||||
#define F_ANNO_STO 101
|
||||
@ -25,9 +14,12 @@
|
||||
#define F_TO_CLI 103
|
||||
#define F_TIPO 104
|
||||
|
||||
#define DOCUMENTI_STATO 201
|
||||
#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_ANNO 102
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "li0100a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_RECALC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Carica"
|
||||
@ -9,7 +10,7 @@ END
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Precarica"
|
||||
PROMPT 1 1 "Ricostruisci Plafond"
|
||||
PICTURE TOOL_ELABORA
|
||||
END
|
||||
|
||||
@ -21,8 +22,9 @@ PAGE "Impostazioni" 0 2 0 0
|
||||
LISTBOX F_TIPORIC 20
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ricerca per "
|
||||
ITEM "D|Estremi documenti"
|
||||
ITEM "L|Lettera"
|
||||
ITEM "L|Lettera" MESSAGE ENABLE,1@|CLEAR,2@
|
||||
ITEM "D|Estremi documenti" MESSAGE CLEAR,1@|ENABLE,2@
|
||||
|
||||
END
|
||||
|
||||
NUMBER F_NUMPROT 6
|
||||
@ -45,7 +47,7 @@ BEGIN
|
||||
OUTPUT F_DARAGSOC LF_CLIFO->RAGSOC
|
||||
OUTPUT F_ACODCF CODCLI
|
||||
OUTPUT F_ARAGSOC LF_CLIFO->RAGSOC
|
||||
FLAGS "DU"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
DATE F_DATAINI
|
||||
@ -60,89 +62,22 @@ BEGIN
|
||||
WARNING "La data finale non può essere minore della data iniziale"
|
||||
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
|
||||
BEGIN
|
||||
PROMPT 1 6 "Esercizio "
|
||||
PROMPT 1 3 "Anno "
|
||||
CHECKTYPE REQUIRED
|
||||
NUM_EXPR #F_ANNO>0
|
||||
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"
|
||||
WARNING "Inserire un anno"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 4
|
||||
BEGIN
|
||||
PROMPT 0 8 "Clienti"
|
||||
PROMPT 0 5 "Clienti"
|
||||
END
|
||||
|
||||
NUMBER F_DACODCF 6
|
||||
BEGIN
|
||||
PROMPT 1 9 "Da Codice"
|
||||
PROMPT 1 6 "Da Codice"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT CODCF F_DACODCF
|
||||
@ -154,13 +89,13 @@ BEGIN
|
||||
OUTPUT F_DACODCF CODCF
|
||||
OUTPUT F_DARAGSOC RAGSOC
|
||||
CHEKTYPE NORMAL
|
||||
GROUP 1
|
||||
FLAGS ""
|
||||
GROUP 2
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_DARAGSOC 50 49
|
||||
BEGIN
|
||||
PROMPT 21 9 "R.Soc"
|
||||
PROMPT 21 6 "R.Soc"
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT RAGSOC F_DARAGSOC
|
||||
@ -170,14 +105,14 @@ BEGIN
|
||||
DISPLAY "Partita IVA@15" PAIV
|
||||
COPY OUTPUT F_DACODCF
|
||||
ADD RUN CG0 -1
|
||||
GROUP 1
|
||||
FLAGS ""
|
||||
GROUP 2
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
NUMBER F_ACODCF 6
|
||||
BEGIN
|
||||
PROMPT 1 10 "A Codice "
|
||||
PROMPT 1 7 "A Codice "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT CODCF F_ACODCF
|
||||
@ -189,13 +124,13 @@ BEGIN
|
||||
OUTPUT F_ACODCF CODCF
|
||||
OUTPUT F_ARAGSOC RAGSOC
|
||||
CHEKTYPE NORMAL
|
||||
GROUP 1
|
||||
FLAGS ""
|
||||
GROUP 2
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_ARAGSOC 50 49
|
||||
BEGIN
|
||||
PROMPT 21 10 "R.Soc"
|
||||
PROMPT 21 7 "R.Soc"
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT RAGSOC F_ARAGSOC
|
||||
@ -205,13 +140,22 @@ BEGIN
|
||||
DISPLAY "Partita IVA@15" PAIV
|
||||
COPY OUTPUT F_ACODCF
|
||||
ADD RUN CG0 -1
|
||||
GROUP 1
|
||||
FLAGS ""
|
||||
GROUP 2
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
SPREADSHEET DOCUMENTI_STATO 45 10
|
||||
BEGIN
|
||||
PROMPT 18 10 ""
|
||||
ITEM "Tipo Numerazione"
|
||||
ITEM "Da stato"
|
||||
ITEM "A stato"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING DLG_PROFILE 256
|
||||
BEGIN
|
||||
PROMPT 1 -1 "Profilo "
|
||||
PROMPT -1 -1 "Profilo "
|
||||
PSELECT
|
||||
FLAGS "H"
|
||||
END
|
||||
@ -260,6 +204,31 @@ ENDPAGE
|
||||
|
||||
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
|
||||
|
||||
DATE A_DATADOC
|
||||
|
@ -38,6 +38,10 @@ void lint_reset_msg();
|
||||
const TToken_string & lint_get_msg();
|
||||
// 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');
|
||||
// Ritorna la lista dei tipi
|
||||
TToken_string & tipi();
|
||||
// Ritorna la lista degli stati
|
||||
TToken_string & stati();
|
||||
|
||||
class TLi_manager : public TObject
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user