Patch level : 10.0
Files correlati : ha0.exe ha0200a.msk ha2.exe ha2200a.msk Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@22490 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
ce559da866
commit
2d49557540
@ -68,6 +68,7 @@
|
|||||||
#define F_E_COD_ESSELUNGA 305
|
#define F_E_COD_ESSELUNGA 305
|
||||||
#define F_E_TIPOEMISSIONE 306
|
#define F_E_TIPOEMISSIONE 306
|
||||||
#define F_E_DATACONF 307
|
#define F_E_DATACONF 307
|
||||||
|
#define F_E_PRIVATPATH 308
|
||||||
|
|
||||||
//==============================
|
//==============================
|
||||||
//pagina 4
|
//pagina 4
|
||||||
|
@ -560,7 +560,7 @@ PAGE "Configurazione Esselunga" 0 2 0 0
|
|||||||
|
|
||||||
STRING F_E_PATH 255 39
|
STRING F_E_PATH 255 39
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Percorso files da spedire "
|
PROMPT 2 2 "Percorso file FATTURE da spedire "
|
||||||
DSELECT
|
DSELECT
|
||||||
FLAGS "M"
|
FLAGS "M"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
@ -568,6 +568,17 @@ BEGIN
|
|||||||
FIELD Esselunga_Path
|
FIELD Esselunga_Path
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_E_PRIVATPATH 255 39
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Percorso file PRIVAT da spedire "
|
||||||
|
DSELECT
|
||||||
|
FLAGS "M"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Selezionare una cartella valida!"
|
||||||
|
FIELD Esselunga_PrivatPath
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
STRING F_E_PIVA_HARDY 12
|
STRING F_E_PIVA_HARDY 12
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Partita IVA Hardy "
|
PROMPT 2 4 "Partita IVA Hardy "
|
||||||
|
@ -225,25 +225,6 @@ long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recs
|
|||||||
TConfig config(CONFIG_DITTA, "ha");
|
TConfig config(CONFIG_DITTA, "ha");
|
||||||
const TString4 tipo_doc_to_elab = config.get("TipoFatt");
|
const TString4 tipo_doc_to_elab = config.get("TipoFatt");
|
||||||
|
|
||||||
/*
|
|
||||||
//e adesso cerca le numerazioni che contengono il tipo preso dalla configurazione
|
|
||||||
TString_array num_doc;
|
|
||||||
const int numerazioni_valide = find_numerazioni(tipo_doc_to_elab, num_doc);
|
|
||||||
if (numerazioni_valide > 0)
|
|
||||||
{
|
|
||||||
query << "&&(";
|
|
||||||
|
|
||||||
for (int i = 0; i < numerazioni_valide; i++)
|
|
||||||
{
|
|
||||||
if (i > 0)
|
|
||||||
query << "||";
|
|
||||||
|
|
||||||
query << "(CODNUM='" << num_doc[i] << "')";
|
|
||||||
}
|
|
||||||
|
|
||||||
query << ")";
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// Inutile testare tutte le numerazioni, basta il tipo documento
|
// Inutile testare tutte le numerazioni, basta il tipo documento
|
||||||
query << "&&(" << DOC_TIPODOC << "=='" << tipo_doc_to_elab << "')";
|
query << "&&(" << DOC_TIPODOC << "=='" << tipo_doc_to_elab << "')";
|
||||||
|
|
||||||
|
@ -140,9 +140,10 @@ long THardy_esselunga::genera_recordset(const TMask& mask, TISAM_recordset& recs
|
|||||||
|
|
||||||
TFilename THardy_esselunga::scrivi_testata(const TMask& mask)
|
TFilename THardy_esselunga::scrivi_testata(const TMask& mask)
|
||||||
{
|
{
|
||||||
const TString4 dipendenza = mask.get(F_DIPENDENZA);
|
|
||||||
TConfig config(CONFIG_DITTA, "ha");
|
TConfig config(CONFIG_DITTA, "ha");
|
||||||
TFilename file_privat = config.get("Esselunga_Path");
|
TFilename file_privat = config.get("Esselunga_PrivatPath");
|
||||||
|
|
||||||
|
const TString& dipendenza = mask.get(F_DIPENDENZA);
|
||||||
if (dipendenza[0] == 'D')
|
if (dipendenza[0] == 'D')
|
||||||
file_privat.add("CDMI");
|
file_privat.add("CDMI");
|
||||||
else
|
else
|
||||||
@ -192,15 +193,15 @@ void THardy_esselunga::elabora(const TMask& mask)
|
|||||||
const long codcf_esselunga = check_cliente(codcf, dipendenza);
|
const long codcf_esselunga = check_cliente(codcf, dipendenza);
|
||||||
if ( codcf_esselunga > 0)
|
if ( codcf_esselunga > 0)
|
||||||
{
|
{
|
||||||
TDocumento* doc = new TDocumento(recset.cursor()->curr());
|
TDocumento doc(recset.cursor()->curr());
|
||||||
// passo tutte le righe del documento all'AS400recordset
|
// passo tutte le righe del documento all'AS400recordset
|
||||||
TString16 numdoc;
|
TString16 numdoc;
|
||||||
const TString& num = doc->numerazione();
|
const TString& num = doc.numerazione();
|
||||||
numdoc.format("%012d",doc->numero());
|
numdoc.format("%012d",doc.numero());
|
||||||
numdoc << cache().get("%NUM", num, "S7");
|
numdoc << cache().get("%NUM", num, "S7");
|
||||||
numdoc.strip("/");
|
numdoc.strip("/");
|
||||||
numdoc = numdoc.right(12);
|
numdoc = numdoc.right(12);
|
||||||
FOR_EACH_PHYSICAL_RDOC(*doc, r, rigadoc)
|
FOR_EACH_PHYSICAL_RDOC(doc, r, rigadoc)
|
||||||
{
|
{
|
||||||
const TString& codart = rigadoc->get(RDOC_CODART);
|
const TString& codart = rigadoc->get(RDOC_CODART);
|
||||||
const TString& codart_esselunga = cache_ca.decode(codart);
|
const TString& codart_esselunga = cache_ca.decode(codart);
|
||||||
|
@ -22,8 +22,6 @@
|
|||||||
#include "ha2.h"
|
#include "ha2.h"
|
||||||
#include "ha2200a.h"
|
#include "ha2200a.h"
|
||||||
|
|
||||||
const char* const APPNAME = TR("Esselunga: generazione file Fatture");
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TAutomask
|
// TAutomask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -280,7 +278,7 @@ TFatture_recordset::TFatture_recordset()
|
|||||||
add_field("DET.TIPOREC", AN, 3, 1, true, "DET");
|
add_field("DET.TIPOREC", AN, 3, 1, true, "DET");
|
||||||
add_field("DET.NUMRIGA", NU, 6, 4, true);
|
add_field("DET.NUMRIGA", NU, 6, 4, true);
|
||||||
add_field("DET.IDSOTTOR", AN, 3, 10);
|
add_field("DET.IDSOTTOR", AN, 3, 10);
|
||||||
add_field("DET.NUMSRIGA", AN, 6, 13); // AN perche'e' un campo che non c'e' mai e non deve essere zerofilled
|
add_field("DET.NUMSRIGA", AN, 6, 13); // AN perche' e' un campo che non c'e' mai e non deve essere zerofilled
|
||||||
add_field("DET.CODEANCU", AN, 35, 19, true);
|
add_field("DET.CODEANCU", AN, 35, 19, true);
|
||||||
add_field("DET.TIPCODCU", AN, 3, 54, true, "EN");
|
add_field("DET.TIPCODCU", AN, 3, 54, true, "EN");
|
||||||
add_field("DET.CODEANTU", AN, 35, 57);
|
add_field("DET.CODEANTU", AN, 35, 57);
|
||||||
@ -406,11 +404,16 @@ TFatture_recordset::TFatture_recordset()
|
|||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
class THardy_esselunga_fat : public TSkeleton_application
|
class THardy_esselunga_fat : public TSkeleton_application
|
||||||
{
|
{
|
||||||
|
TCodArtEsselunga_cache _cache_ca;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
long genera_recordset(const TMask& mask, TISAM_recordset& recset);
|
long genera_recordset(const TMask& mask, TISAM_recordset& recset);
|
||||||
void elabora(const TMask& mask);
|
void elabora(const TMask& mask);
|
||||||
void check_date(const TDate& datafine, TDate& dataini);
|
void check_date(const TDate& datafine, TDate& dataini);
|
||||||
TString4 check_cliente(const long codcf);
|
TString4 check_cliente(const long codcf);
|
||||||
|
|
||||||
|
void segnala_documento(const TDocumento& doc, TLog_report& log, const char* msg) const;
|
||||||
|
bool esistono_righe_esselunga(const TDocumento& doc) const;
|
||||||
void add_rec_testata(TFatture_recordset& fat, TDocumento& doc);
|
void add_rec_testata(TFatture_recordset& fat, TDocumento& doc);
|
||||||
void add_rec_sommario(TFatture_recordset& fat, TDocumento& doc);
|
void add_rec_sommario(TFatture_recordset& fat, TDocumento& doc);
|
||||||
void add_recs_dettaglio(TFatture_recordset& fat, TDocumento& doc);
|
void add_recs_dettaglio(TFatture_recordset& fat, TDocumento& doc);
|
||||||
@ -497,11 +500,12 @@ void THardy_esselunga_fat::add_rec_testata(TFatture_recordset& fat, TDocumento&
|
|||||||
fat.new_rec("FTX");
|
fat.new_rec("FTX");
|
||||||
|
|
||||||
fat.new_rec("PAT");
|
fat.new_rec("PAT");
|
||||||
fat.set("PAT.DESCRIZ", doc.pagamento().name());
|
const TPagamento& pag = doc.pagamento();
|
||||||
fat.set("PAT.DATASCAD", TVariant(doc.pagamento().data_rata(0)));
|
fat.set("PAT.DESCRIZ", pag.name());
|
||||||
|
fat.set("PAT.DATASCAD", TVariant(pag.data_rata(0)));
|
||||||
fat.set("PAT.IMPORTO", TVariant(doc.totale_doc()));
|
fat.set("PAT.IMPORTO", TVariant(doc.totale_doc()));
|
||||||
TString8 tp = doc.pagamento().tipo_prima_rata();
|
TString8 tp = pag.tipo_prima_rata();
|
||||||
real imp = doc.pagamento().importo_rata(0);
|
real imp = pag.importo_rata(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void THardy_esselunga_fat::add_rec_sommario(TFatture_recordset& fat, TDocumento& doc)
|
void THardy_esselunga_fat::add_rec_sommario(TFatture_recordset& fat, TDocumento& doc)
|
||||||
@ -549,13 +553,24 @@ void THardy_esselunga_fat::add_rec_sommario(TFatture_recordset& fat, TDocumento&
|
|||||||
fat.set("TMA.TOTANT1", "");
|
fat.set("TMA.TOTANT1", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool THardy_esselunga_fat::esistono_righe_esselunga(const TDocumento& doc) const
|
||||||
|
{
|
||||||
|
FOR_EACH_PHYSICAL_RDOC((TDocumento&)doc, r, rigadoc)
|
||||||
|
{
|
||||||
|
const TString& codart = rigadoc->get(RDOC_CODART);
|
||||||
|
const TString& codart_esselunga = ((TCodArtEsselunga_cache&)_cache_ca).decode(codart);
|
||||||
|
if (codart_esselunga.full())
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void THardy_esselunga_fat::add_recs_dettaglio(TFatture_recordset& fat, TDocumento& doc)
|
void THardy_esselunga_fat::add_recs_dettaglio(TFatture_recordset& fat, TDocumento& doc)
|
||||||
{
|
{
|
||||||
TCodArtEsselunga_cache cache_ca;
|
|
||||||
FOR_EACH_PHYSICAL_RDOC(doc, r, rigadoc)
|
FOR_EACH_PHYSICAL_RDOC(doc, r, rigadoc)
|
||||||
{
|
{
|
||||||
const TString16 codart = rigadoc->get(RDOC_CODART);
|
const TString16 codart = rigadoc->get(RDOC_CODART);
|
||||||
const TString& codart_esselunga = cache_ca.decode(codart);
|
const TString& codart_esselunga = _cache_ca.decode(codart);
|
||||||
if (codart_esselunga.blank())
|
if (codart_esselunga.blank())
|
||||||
continue;
|
continue;
|
||||||
const TRectype& rec_anamag = cache().get(LF_ANAMAG, codart);
|
const TRectype& rec_anamag = cache().get(LF_ANAMAG, codart);
|
||||||
@ -576,7 +591,6 @@ void THardy_esselunga_fat::add_recs_dettaglio(TFatture_recordset& fat, TDocument
|
|||||||
fat.set("DES.DESCR", rigadoc->get(RDOC_DESCR));
|
fat.set("DES.DESCR", rigadoc->get(RDOC_DESCR));
|
||||||
|
|
||||||
//fat.new_rec("RFN"); // solo per note di debito e di credito (chiedere a Robbi)
|
//fat.new_rec("RFN"); // solo per note di debito e di credito (chiedere a Robbi)
|
||||||
|
|
||||||
|
|
||||||
fat.new_rec("TAX");
|
fat.new_rec("TAX");
|
||||||
fat.set("TAX.ALIQIVA", rigadoc->iva().percentuale());
|
fat.set("TAX.ALIQIVA", rigadoc->iva().percentuale());
|
||||||
@ -638,6 +652,25 @@ void THardy_esselunga_fat::add_recs_dettaglio(TFatture_recordset& fat, TDocument
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void THardy_esselunga_fat::segnala_documento(const TDocumento& doc, TLog_report& log, const char* msg) const
|
||||||
|
{
|
||||||
|
TString s;
|
||||||
|
s << TR("Doc. ") << doc.get(DOC_CODNUM) << ' '
|
||||||
|
<< doc.get(DOC_ANNO) << '/' << doc.get(DOC_NDOC) << " : ";
|
||||||
|
|
||||||
|
if (msg && *msg)
|
||||||
|
{
|
||||||
|
s << msg;
|
||||||
|
log.log(1, s);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s << TR("Elaborato con successo");
|
||||||
|
log.log(0, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void THardy_esselunga_fat::elabora(const TMask& mask)
|
void THardy_esselunga_fat::elabora(const TMask& mask)
|
||||||
{
|
{
|
||||||
TLog_report log;
|
TLog_report log;
|
||||||
@ -648,41 +681,53 @@ void THardy_esselunga_fat::elabora(const TMask& mask)
|
|||||||
TISAM_recordset recset("");
|
TISAM_recordset recset("");
|
||||||
const long items = genera_recordset(mask, recset);
|
const long items = genera_recordset(mask, recset);
|
||||||
if (items == 0)
|
if (items == 0)
|
||||||
log.log(1, "Non esistono documenti che soddisfano i parametri selezionati.");
|
log.log(1, "Non esistono documenti che soddisfino i parametri selezionati.");
|
||||||
// lettura dei documenti da recordset
|
// lettura dei documenti da recordset
|
||||||
TProgind pi(recset.items(), TR("Elaborazione documenti in corso..."), true, true);
|
TProgind pi(recset.items(), TR("Elaborazione documenti in corso..."));
|
||||||
TFatture_recordset fatture;
|
TFatture_recordset fatture;
|
||||||
TCodArtEsselunga_cache cache_ca;
|
TCodArtEsselunga_cache cache_ca;
|
||||||
const bool definitivo = mask.get_bool(F_DEFINITIVO);
|
const bool definitivo = mask.get_bool(F_DEFINITIVO);
|
||||||
|
const bool forzatura = mask.get_bool(F_FORZATURA);
|
||||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1))
|
if (!pi.addstatus(1))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
const long codcf = recset.get(DOC_CODCF).as_int();
|
const long codcf = recset.get(DOC_CODCF).as_int();
|
||||||
// verificare se il cliente ha tutti i parametri per poter essere inviato (invio e codice cliente per hardy)
|
// verificare se il cliente ha tutti i parametri per poter essere inviato (invio e codice cliente per Hardy)
|
||||||
const TString4 codcf_esselunga = check_cliente(codcf);
|
const TString4 codcf_esselunga = check_cliente(codcf);
|
||||||
if (codcf_esselunga.not_empty())
|
if (codcf_esselunga.full())
|
||||||
{
|
{
|
||||||
TDocumento* doc = new TDocumento(recset.cursor()->curr());
|
TDocumento doc(recset.cursor()->curr());
|
||||||
add_rec_testata(fatture, *doc);
|
if (doc.get_bool("HA_FATTURE") && !forzatura)
|
||||||
add_recs_dettaglio(fatture, *doc);
|
continue;
|
||||||
add_rec_sommario(fatture, *doc);
|
|
||||||
if (definitivo)
|
if (esistono_righe_esselunga(doc))
|
||||||
doc->put("HA_FATTURE", "X");
|
{
|
||||||
|
add_rec_testata(fatture, doc);
|
||||||
|
add_recs_dettaglio(fatture, doc);
|
||||||
|
add_rec_sommario(fatture, doc);
|
||||||
|
if (definitivo)
|
||||||
|
{
|
||||||
|
doc.put("HA_FATTURE", "X");
|
||||||
|
doc.rewrite();
|
||||||
|
}
|
||||||
|
segnala_documento(doc, log, NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
segnala_documento(doc, log, "Non contiene righe valide per Esselunga");
|
||||||
} // if check_cliente...
|
} // if check_cliente...
|
||||||
} //for (bool ok = recset.move_first()...
|
} //for (bool ok = recset.move_first()...
|
||||||
|
|
||||||
fatture.save_as(file_fatture, fmt_text);
|
fatture.save_as(file_fatture, fmt_text);
|
||||||
log.print_or_preview();
|
log.preview();
|
||||||
}
|
}
|
||||||
|
|
||||||
TString4 THardy_esselunga_fat::check_cliente(const long codcf)
|
TString4 THardy_esselunga_fat::check_cliente(const long codcf)
|
||||||
{
|
{
|
||||||
TString4 codcf_hardy = "";
|
TString4 codcf_hardy;
|
||||||
TString key;
|
TString8 key; key << codcf;
|
||||||
key.format("%ld", codcf);
|
const TRectype& rec_cliente = cache().get("&CEL", key);
|
||||||
const TRectype rec_cliente = cache().get("&CEL", key);
|
|
||||||
const bool invio = rec_cliente.get_bool("B0");
|
const bool invio = rec_cliente.get_bool("B0");
|
||||||
const char dipendenza = rec_cliente.get("S1")[0];
|
const char dipendenza = rec_cliente.get("S1")[0];
|
||||||
if (invio)
|
if (invio)
|
||||||
@ -709,6 +754,6 @@ bool THardy_esselunga_fat::create()
|
|||||||
int ha2200 (int argc, char* argv[])
|
int ha2200 (int argc, char* argv[])
|
||||||
{
|
{
|
||||||
THardy_esselunga_fat elabapp;
|
THardy_esselunga_fat elabapp;
|
||||||
elabapp.run(argc, argv, APPNAME);
|
elabapp.run(argc, argv, TR("Esselunga: generazione file Fatture"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
@ -4,6 +4,7 @@
|
|||||||
#define F_DATAFIN 204
|
#define F_DATAFIN 204
|
||||||
#define F_DEFINITIVO 205
|
#define F_DEFINITIVO 205
|
||||||
#define F_SHEETDOC 206
|
#define F_SHEETDOC 206
|
||||||
|
#define F_FORZATURA 207
|
||||||
// campi dello sheet
|
// campi dello sheet
|
||||||
#define F_S_CODNUM 101
|
#define F_S_CODNUM 101
|
||||||
#define F_S_DESNUM 102
|
#define F_S_DESNUM 102
|
||||||
|
@ -16,41 +16,15 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Esselunga: generazione file Fatture" -1 -1 78 18
|
PAGE "Esselunga: generazione file Fatture" -1 -1 78 18
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 3
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 0 "@bDitta"
|
|
||||||
END
|
|
||||||
|
|
||||||
NUMBER F_CODDITTA 5
|
|
||||||
BEGIN
|
|
||||||
PROMPT 2 1 "Codice "
|
|
||||||
FLAGS "GDF"
|
|
||||||
USE LF_NDITTE
|
|
||||||
INPUT CODDITTA F_CODDITTA
|
|
||||||
OUTPUT F_RAGSOC RAGSOC
|
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
END
|
|
||||||
|
|
||||||
STRING F_RAGSOC 50
|
|
||||||
BEGIN
|
|
||||||
PROMPT 17 1 "Rag.Soc. "
|
|
||||||
FLAGS "D"
|
|
||||||
END
|
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 3 "@bParametri"
|
|
||||||
END
|
|
||||||
|
|
||||||
DATE F_DATAINI
|
DATE F_DATAINI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Documenti dal "
|
PROMPT 1 0 "Data iniziale "
|
||||||
HELP "Data di inizio per trasferimento documenti"
|
HELP "Data di inizio per trasferimento documenti"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATAFIN
|
DATE F_DATAFIN
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 30 4 "al "
|
PROMPT 1 1 "Data finale "
|
||||||
HELP "Data di fine per trasferimento documenti"
|
HELP "Data di fine per trasferimento documenti"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
||||||
@ -60,12 +34,17 @@ END
|
|||||||
|
|
||||||
BOOLEAN F_DEFINITIVO
|
BOOLEAN F_DEFINITIVO
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Trasferimento definitivo"
|
PROMPT 35 0 "Trasferimento definitivo"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_FORZATURA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 1 "Includere documenti già trasferiti"
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_SHEETDOC 78
|
SPREADSHEET F_SHEETDOC 78
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Scelta documenti"
|
PROMPT 1 2 "Scelta documenti"
|
||||||
ITEM "Cod. num."
|
ITEM "Cod. num."
|
||||||
ITEM "Descrizione num.@50"
|
ITEM "Descrizione num.@50"
|
||||||
END
|
END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user