Corretta generazione fatture P.A.
git-svn-id: svn://10.65.10.50/branches/R_10_00@23090 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
882301feaf
commit
10e094b7e8
184
pa/pa0100.cpp
184
pa/pa0100.cpp
@ -35,20 +35,26 @@ static bool chiave_paf(const TDocumento& doc, TString& cess, TString& numdoc)
|
|||||||
cess = doc.clifor().vendite().get(CFV_PADESTIN);
|
cess = doc.clifor().vendite().get(CFV_PADESTIN);
|
||||||
CHECK(cess.full(), "Destinatario fattura P.A. non valido");
|
CHECK(cess.full(), "Destinatario fattura P.A. non valido");
|
||||||
|
|
||||||
numdoc.cut(0) << doc.get_date(DOC_DATADOC).date2ansi() << '/'
|
const TCodice_numerazione& codnum = doc.codice_numerazione();
|
||||||
<< doc.numerazione() << '/' << doc.numero();
|
const long ndoc = doc.numero();
|
||||||
|
TString16 fullnumdoc; codnum.complete_num(ndoc, fullnumdoc);
|
||||||
|
|
||||||
|
numdoc.cut(0) << doc.get(DOC_ANNO) << '/' << codnum.codice() << '/' << fullnumdoc;
|
||||||
return cess.full();
|
return cess.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Crea la coppia di chiavi per il db PAF a partire da un semplice record di testata documento
|
// Crea la coppia di chiavi per il db PAF a partire da un semplice record di testata documento
|
||||||
static bool chiave_paf(const TRectype& doc, TString& cess, TString& numdoc)
|
static bool chiave_paf(const TRectype& doc, TString& cess, TString& numdoc)
|
||||||
{
|
{
|
||||||
TString16 key; key.format("C|%ld", doc.get_long(DOC_CODCF));
|
TString8 key; key.format("C|%ld", doc.get_long(DOC_CODCF));
|
||||||
cess = cache().get(LF_CFVEN, key, CFV_PADESTIN);
|
cess = cache().get(LF_CFVEN, key, CFV_PADESTIN);
|
||||||
CHECK(cess.full(), "Destinatario fattura P.A. non valido");
|
CHECK(cess.full(), "Destinatario fattura P.A. non valido");
|
||||||
|
|
||||||
numdoc.cut(0) << doc.get_date(DOC_DATADOC).date2ansi() << '/'
|
const TCodice_numerazione& codnum = cached_numerazione(doc.get(DOC_CODNUM));
|
||||||
<< doc.get(DOC_CODNUM) << '/' << doc.get(DOC_NDOC);
|
const long ndoc = doc.get_long(DOC_NDOC);
|
||||||
|
TString16 fullnumdoc; codnum.complete_num(ndoc, fullnumdoc);
|
||||||
|
numdoc.cut(0) << doc.get(DOC_ANNO) << '/' << codnum.codice() << '/' << fullnumdoc;
|
||||||
|
|
||||||
return cess.full();
|
return cess.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,6 +173,38 @@ TJava_profile::TJava_profile(const char* path) : _path(path), _dirty(false)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// TAncestor
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
struct TAncestor : public TObject
|
||||||
|
{
|
||||||
|
TString20 _numdoc;
|
||||||
|
TDate _datadoc;
|
||||||
|
|
||||||
|
TAncestor(const TRectype& rdoc);
|
||||||
|
};
|
||||||
|
|
||||||
|
TAncestor::TAncestor(const TRectype& rdoc)
|
||||||
|
{
|
||||||
|
const int anno = rdoc.get_int(RDOC_ANNO);
|
||||||
|
const TString4 codnum = rdoc.get(RDOC_CODNUM);
|
||||||
|
const long ndoc = rdoc.get_long(RDOC_NDOC);
|
||||||
|
const TCodice_numerazione& num = cached_numerazione(codnum);
|
||||||
|
|
||||||
|
TToken_string kdoc;
|
||||||
|
kdoc = rdoc.get(RDOC_PROVV);
|
||||||
|
kdoc.add(anno);
|
||||||
|
kdoc.add(codnum);
|
||||||
|
kdoc.add(ndoc);
|
||||||
|
const TRectype& doc = cache().get(LF_DOC, kdoc);
|
||||||
|
|
||||||
|
TString16 numdoc; num.complete_num(ndoc, numdoc);
|
||||||
|
_numdoc.format("%d/%s/%s", anno, (const char*)codnum, (const char*)numdoc);
|
||||||
|
_datadoc = doc.get_date(DOC_DATADOC);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// TPaf_record
|
// TPaf_record
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -321,7 +359,7 @@ const TString& TPaf_record::var2str(const TVariant& var) const
|
|||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Elimina il record in base ai cmapi chiave
|
// Elimina il record in base ai campi chiave
|
||||||
bool TPaf_record::remove()
|
bool TPaf_record::remove()
|
||||||
{
|
{
|
||||||
TString256 query;
|
TString256 query;
|
||||||
@ -462,7 +500,7 @@ void TPA_mask::fill()
|
|||||||
TProgress_monitor pi(n, NULL);
|
TProgress_monitor pi(n, NULL);
|
||||||
for (bool okc = clifo_pa.move_first(); okc; okc = clifo_pa.move_next())
|
for (bool okc = clifo_pa.move_first(); okc; okc = clifo_pa.move_next())
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1))
|
if (!pi.add_status())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
query.cut(0);
|
query.cut(0);
|
||||||
@ -555,6 +593,7 @@ bool TPA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
class TDoc2Paf : public TSkeleton_application
|
class TDoc2Paf : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TAnagrafica _ditta;
|
TAnagrafica _ditta;
|
||||||
|
TString16 _cofi;
|
||||||
TFilename _dbname;
|
TFilename _dbname;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -568,6 +607,7 @@ protected:
|
|||||||
bool parse_sconto(const TString& formula, TToken_string& sconti) const;
|
bool parse_sconto(const TString& formula, TToken_string& sconti) const;
|
||||||
bool get_bank(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
bool get_bank(const TDocumento& doc, TString& iban, TString& abi, TString& cab, TString& istituto) const;
|
||||||
const char* descrizione(const TRiga_documento& rdoc) const;
|
const char* descrizione(const TRiga_documento& rdoc) const;
|
||||||
|
const TRectype& cco(const TRectype& doc) const; // Contratto/Convenzione/Offerta
|
||||||
|
|
||||||
bool elabora(TDocumentoEsteso& doc);
|
bool elabora(TDocumentoEsteso& doc);
|
||||||
bool elabora(const TRectype& rec);
|
bool elabora(const TRectype& rec);
|
||||||
@ -660,26 +700,6 @@ const char* TDoc2Paf::descrizione(const TRiga_documento& rdoc) const
|
|||||||
return rdoc.get(RDOC_DESCR);
|
return rdoc.get(RDOC_DESCR);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct TAncestor : public TObject
|
|
||||||
{
|
|
||||||
TString16 _numdoc;
|
|
||||||
TDate _datadoc;
|
|
||||||
|
|
||||||
TAncestor(const TRectype& rdoc);
|
|
||||||
};
|
|
||||||
|
|
||||||
TAncestor::TAncestor(const TRectype& rdoc)
|
|
||||||
{
|
|
||||||
TToken_string kdoc;
|
|
||||||
kdoc = rdoc.get(RDOC_PROVV);
|
|
||||||
kdoc.add(rdoc.get(RDOC_ANNO));
|
|
||||||
kdoc.add(rdoc.get(RDOC_CODNUM));
|
|
||||||
kdoc.add(rdoc.get(RDOC_NDOC));
|
|
||||||
const TRectype& doc = cache().get(LF_DOC, kdoc);
|
|
||||||
_numdoc.format("%d/%s/%ld", doc.get_int(DOC_ANNO), (const char*)doc.get(DOC_CODNUM), doc.get_long(DOC_NDOC));
|
|
||||||
_datadoc = doc.get_date(DOC_DATADOC);
|
|
||||||
}
|
|
||||||
|
|
||||||
const TRectype* TDoc2Paf::find_parent_row(const TRectype& rdoc) const
|
const TRectype* TDoc2Paf::find_parent_row(const TRectype& rdoc) const
|
||||||
{
|
{
|
||||||
const long id = rdoc.get_long(RDOC_DAIDRIGA);
|
const long id = rdoc.get_long(RDOC_DAIDRIGA);
|
||||||
@ -724,10 +744,24 @@ int TDoc2Paf::find_ancestors(const TRiga_documento& rdoc, TArray& ancestors) con
|
|||||||
return ancestors.items();
|
return ancestors.items();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TRectype& TDoc2Paf::cco(const TRectype& doc) const
|
||||||
|
{
|
||||||
|
TString80 conkey;
|
||||||
|
const TString& con = doc.get(DOC_CONTRATTO);
|
||||||
|
if (con.full())
|
||||||
|
{
|
||||||
|
char tcon = doc.get_char(DOC_MODPAG);
|
||||||
|
if (tcon < 'C') tcon = 'C';
|
||||||
|
conkey.format("%c%6ld%s", tcon, doc.get_long(DOC_CODCF), (const char*)con);
|
||||||
|
}
|
||||||
|
return cache().get("&CON", conkey);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||||
{
|
{
|
||||||
TString8 hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A.
|
TString8 hfatt; // Codice univoco di 6 caratteri dell'ufficio P.A.
|
||||||
TString80 bfatt; // Codice univoco di 20 caratteri del documento
|
TString20 bfatt; // Codice univoco di 20 caratteri del documento
|
||||||
if (!chiave_paf(doc, hfatt, bfatt))
|
if (!chiave_paf(doc, hfatt, bfatt))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -741,7 +775,7 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
paf0100f.remove();
|
paf0100f.remove();
|
||||||
|
|
||||||
paf0100f.set("P1_TRASMITTPAESE", paese);
|
paf0100f.set("P1_TRASMITTPAESE", paese);
|
||||||
paf0100f.set("P1_TRASMITTCOD", _ditta.partita_IVA());
|
paf0100f.set("P1_TRASMITTCOD", _cofi);
|
||||||
paf0100f.set("P1_PRGINVIO", ""); // Ci pensa SiAggPA
|
paf0100f.set("P1_PRGINVIO", ""); // Ci pensa SiAggPA
|
||||||
paf0100f.set("P1_FMTTRASMISS", "SDI11"); // SDI11 si usa dal 2015 per lo split payment (prima era SDI10)
|
paf0100f.set("P1_FMTTRASMISS", "SDI11"); // SDI11 si usa dal 2015 per lo split payment (prima era SDI10)
|
||||||
|
|
||||||
@ -791,7 +825,13 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
paf0200f.set("P2_SEDEPROV", _ditta.provincia_residenza());
|
paf0200f.set("P2_SEDEPROV", _ditta.provincia_residenza());
|
||||||
paf0200f.set("P2_SEDENAZ", paese);
|
paf0200f.set("P2_SEDENAZ", paese);
|
||||||
paf0200f.set("P2_GESTIONE", "D");
|
paf0200f.set("P2_GESTIONE", "D");
|
||||||
paf0200f.insert();
|
|
||||||
|
TAnagrafica cliente(doc.clifor());
|
||||||
|
|
||||||
|
TString rifamm = cco(doc).get("S4");
|
||||||
|
if (rifamm.blank())
|
||||||
|
rifamm = doc.clifor().vendite().get(CFV_PARIFAMM);
|
||||||
|
paf0200f.set("P2_RIFAMMINISTR", rifamm);
|
||||||
|
|
||||||
TISAM_recordset unloc("USE UNLOC\nJOIN COMUNI INTO COM==COMCCIAA\nFROM CODDITTA=#DITTA\nTO CODDITTA=#DITTA");
|
TISAM_recordset unloc("USE UNLOC\nJOIN COMUNI INTO COM==COMCCIAA\nFROM CODDITTA=#DITTA\nTO CODDITTA=#DITTA");
|
||||||
unloc.set_var("#DITTA", firm.get(NDT_CODDITTA));
|
unloc.set_var("#DITTA", firm.get(NDT_CODDITTA));
|
||||||
@ -804,18 +844,26 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
paf0200f.set("P2_ISCRREAUFF", unloc.get("13->"COM_PROVCOM));
|
paf0200f.set("P2_ISCRREAUFF", unloc.get("13->"COM_PROVCOM));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TISAM_recordset anagiu("USE ANAGIU\nFROM CODANAGR=#CODICE\nTO CODANAGR=#CODICE");
|
if (_ditta.giuridica())
|
||||||
anagiu.set_var("#CODICE", firm.get(NDT_CODANAGR));
|
|
||||||
if (anagiu.move_first())
|
|
||||||
{
|
{
|
||||||
paf0200f.set("P2_ISCRREACAP", anagiu.get(ANG_CAPSOC));
|
TISAM_recordset anagiu("USE ANAGIU\nFROM CODANAGR=#CODICE\nTO CODANAGR=#CODICE");
|
||||||
|
anagiu.set_var("#CODICE", firm.get(NDT_CODANAGR));
|
||||||
|
if (anagiu.move_first())
|
||||||
|
{
|
||||||
|
paf0200f.set("P2_ISCRREACAP", anagiu.get(ANG_CAPSOC));
|
||||||
|
const int ss = anagiu.get(ANG_STATOSOC).as_int();
|
||||||
|
paf0200f.set("P2_ISCRREASLIQUID", (ss==2 || ss==3) ? "LS" : "LN");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
paf0200f.set("P2_ISCRREASLIQUID", "LN");
|
||||||
|
|
||||||
|
paf0200f.insert();
|
||||||
|
|
||||||
// </CedentePrestatore>
|
// </CedentePrestatore>
|
||||||
|
|
||||||
// <CessionarioCommittente>
|
// <CessionarioCommittente>
|
||||||
TAnagrafica cliente(doc.clifor());
|
|
||||||
|
|
||||||
TPaf_record paf0400f("PAF0400F");
|
TPaf_record paf0400f("PAF0400F");
|
||||||
paf0400f.set("P4_KEYHEADERFATT", hfatt);
|
paf0400f.set("P4_KEYHEADERFATT", hfatt);
|
||||||
@ -858,7 +906,10 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
paf0700f.set("P7_TIPODOC", doc.is_nota_credito() ? "TD04" : "TD01");
|
paf0700f.set("P7_TIPODOC", doc.is_nota_credito() ? "TD04" : "TD01");
|
||||||
paf0700f.set("P7_DIVISA", "EUR"); // Aggiungere codice ISO 4217 a tabella divise (%VAL)
|
paf0700f.set("P7_DIVISA", "EUR"); // Aggiungere codice ISO 4217 a tabella divise (%VAL)
|
||||||
paf0700f.set("P7_DATA", doc.data());
|
paf0700f.set("P7_DATA", doc.data());
|
||||||
paf0700f.set("P7_NUMERO", doc.numero());
|
|
||||||
|
const TCodice_numerazione& codnum = doc.codice_numerazione();
|
||||||
|
TString20 numdoc; codnum.complete_num(doc.numero(), numdoc);
|
||||||
|
paf0700f.set("P7_NUMERO", numdoc);
|
||||||
paf0700f.set("P7_GESTIONE", "D");
|
paf0700f.set("P7_GESTIONE", "D");
|
||||||
paf0700f.insert();
|
paf0700f.insert();
|
||||||
|
|
||||||
@ -902,8 +953,20 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
paf2700f.set("PQ_KEYBODYFATT", bfatt);
|
paf2700f.set("PQ_KEYBODYFATT", bfatt);
|
||||||
paf2700f.remove();
|
paf2700f.remove();
|
||||||
paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
|
paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
|
||||||
paf2700f.set("PQ_CAUSALE", doc.tipo().descrizione());
|
|
||||||
// paf2700f.set("PQ_ART73", true);
|
const TRectype& cont_conv_off = cco(doc);
|
||||||
|
TString causale = cont_conv_off.get("S1");
|
||||||
|
if (causale.full())
|
||||||
|
{
|
||||||
|
causale << ' ' << cont_conv_off.get("S2");
|
||||||
|
causale << ' ' << cont_conv_off.get("S3");
|
||||||
|
causale.strip_double_spaces();
|
||||||
|
causale.cut(200);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
causale = doc.tipo().descrizione();
|
||||||
|
paf2700f.set("PQ_CAUSALE", causale);
|
||||||
|
// paf2700f.set("PQ_ART73", true);
|
||||||
paf2700f.set("PQ_GESTIONE", "D");
|
paf2700f.set("PQ_GESTIONE", "D");
|
||||||
paf2700f.insert();
|
paf2700f.insert();
|
||||||
// </DatiGenerali>
|
// </DatiGenerali>
|
||||||
@ -935,18 +998,17 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
|||||||
const TString16 cup = doc.get(DOC_CUP);
|
const TString16 cup = doc.get(DOC_CUP);
|
||||||
const TString16 cig = doc.get(DOC_CIG);
|
const TString16 cig = doc.get(DOC_CIG);
|
||||||
const TString80 com = doc.get(DOC_CODCMS);
|
const TString80 com = doc.get(DOC_CODCMS);
|
||||||
|
|
||||||
TString80 con = doc.get(DOC_CONTRATTO);
|
TString80 con = doc.get(DOC_CONTRATTO);
|
||||||
if (con.full() || cup.full() || cig.full())
|
if (con.full() || cup.full() || cig.full())
|
||||||
{
|
{
|
||||||
char tcon = doc.get_char(DOC_MODPAG);
|
char tcon = doc.get_char(DOC_MODPAG);
|
||||||
if (tcon < 'C') tcon = 'C';
|
if (tcon < 'C') tcon = 'C';
|
||||||
|
|
||||||
TDate datadoc; // Data contratto non obbligatoria
|
TDate datadoc; // Data contratto non obbligatoria
|
||||||
if (con.full())
|
if (con.full())
|
||||||
{
|
{
|
||||||
TString80 conkey;
|
datadoc = cco(doc).get_date("D0");
|
||||||
conkey.format("%c%06ld%s", tcon, doc.codcf(), (const char*)con);
|
|
||||||
const TRectype& con = cache().get("&CON", conkey);
|
|
||||||
datadoc = con.get_date("D0");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1267,6 +1329,9 @@ bool TDoc2Paf::genera_xml()
|
|||||||
xvt_fsys_fupdate(*row, tmp);
|
xvt_fsys_fupdate(*row, tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
files.destroy();
|
||||||
|
if (list_files(PABASE"/*.ssa", files) != 1)
|
||||||
|
warning_box(FR("Nella cartella %s deve essere presente esattamente un file .ssa"), PABASE);
|
||||||
|
|
||||||
TFilename home;
|
TFilename home;
|
||||||
xvt_sys_get_env("USERPROFILE", home.get_buffer(), home.size());
|
xvt_sys_get_env("USERPROFILE", home.get_buffer(), home.size());
|
||||||
@ -1292,30 +1357,15 @@ bool TDoc2Paf::genera_xml()
|
|||||||
tmp = PABASE"\\SiaggPACAMPO.jar";
|
tmp = PABASE"\\SiaggPACAMPO.jar";
|
||||||
tmp.make_absolute_path();
|
tmp.make_absolute_path();
|
||||||
|
|
||||||
const int ssa_err = xvt_dongle_sa_test("FATTPA.pa");
|
|
||||||
if (ssa_err != 0)
|
|
||||||
{
|
|
||||||
TString80 msg;
|
|
||||||
switch (ssa_err)
|
|
||||||
{
|
|
||||||
case -100: msg = TR("File .ssa non valido o non trovato"); break;
|
|
||||||
case -101: msg = TR("Prodotto non trovato"); break;
|
|
||||||
case -103: msg = TR("Prodotto scaduto"); break;
|
|
||||||
case -201: msg = TR("Modulo non trovato"); break;
|
|
||||||
case -203: msg = TR("Modulo scaduto"); break;
|
|
||||||
default : break;
|
|
||||||
}
|
|
||||||
warning_box(FR("Non risulta attivo il modulo 'pa' del prodotto 'FATTPA'.\nErrore %d: %s"), ssa_err, (const char*)msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir);
|
DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir);
|
||||||
DIRECTORY new_dir; xvt_fsys_convert_str_to_dir(tmp.path(), &new_dir);
|
DIRECTORY new_dir; xvt_fsys_convert_str_to_dir(tmp.path(), &new_dir);
|
||||||
xvt_fsys_set_dir(&new_dir);
|
xvt_fsys_set_dir(&new_dir);
|
||||||
const bool good = goto_url(tmp);
|
const bool good = goto_url(tmp);
|
||||||
xvt_sys_sleep(3000);
|
if (good)
|
||||||
xvt_fsys_set_dir(&old_dir);
|
xvt_sys_sleep(3000);
|
||||||
if (!good)
|
else
|
||||||
error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp);
|
error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp);
|
||||||
|
xvt_fsys_set_dir(&old_dir);
|
||||||
|
|
||||||
return good;
|
return good;
|
||||||
}
|
}
|
||||||
@ -1351,8 +1401,11 @@ void TDoc2Paf::main_loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
TPA_mask mask;
|
TPA_mask mask;
|
||||||
|
mask.set(F_COFI, _cofi);
|
||||||
while (mask.run() == K_ENTER)
|
while (mask.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
|
_cofi = mask.get(F_COFI);
|
||||||
|
|
||||||
TString_array& sht = mask.sfield(F_DOCS).rows_array();
|
TString_array& sht = mask.sfield(F_DOCS).rows_array();
|
||||||
TProgress_monitor pi(sht.items(), NULL);
|
TProgress_monitor pi(sht.items(), NULL);
|
||||||
ndocs = 0;
|
ndocs = 0;
|
||||||
@ -1519,11 +1572,18 @@ bool TDoc2Paf::create()
|
|||||||
else
|
else
|
||||||
return cantread_box(ini);
|
return cantread_box(ini);
|
||||||
|
|
||||||
|
_cofi = ini_get_string(CONFIG_DITTA, "pa", "TRASMITTCOD");
|
||||||
|
if (_cofi.blank())
|
||||||
|
_cofi = _ditta.codice_fiscale();
|
||||||
|
|
||||||
return ok && TSkeleton_application::create();
|
return ok && TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDoc2Paf::destroy()
|
bool TDoc2Paf::destroy()
|
||||||
{
|
{
|
||||||
|
if (_cofi.full())
|
||||||
|
ini_set_string(CONFIG_DITTA, "pa", "TRASMITTCOD", _cofi);
|
||||||
|
|
||||||
xvt_sql_close(_db); _db = NULL;
|
xvt_sql_close(_db); _db = NULL;
|
||||||
return TSkeleton_application::destroy();
|
return TSkeleton_application::destroy();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#define F_DATAINI 201
|
#define F_DATAINI 201
|
||||||
#define F_SHOWALL 202
|
#define F_SHOWALL 202
|
||||||
|
#define F_COFI 203
|
||||||
#define F_DOCS 210
|
#define F_DOCS 210
|
||||||
|
|
||||||
#define S_SELECTED 101
|
#define S_SELECTED 101
|
||||||
|
@ -17,9 +17,15 @@ BEGIN
|
|||||||
PROMPT 40 0 "Mostra anche i documenti già inviati"
|
PROMPT 40 0 "Mostra anche i documenti già inviati"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_COFI 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Codice fiscale di chi effettua la trasmissione "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
SPREADSHEET F_DOCS
|
SPREADSHEET F_DOCS
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 1 ""
|
PROMPT 0 2 ""
|
||||||
ITEM "@1"
|
ITEM "@1"
|
||||||
ITEM "Anno"
|
ITEM "Anno"
|
||||||
ITEM "Cod.\nNum.@4"
|
ITEM "Cod.\nNum.@4"
|
||||||
|
@ -6,7 +6,11 @@
|
|||||||
#define F_CON_RAGSOC 112
|
#define F_CON_RAGSOC 112
|
||||||
#define F_CON_CODICE 103
|
#define F_CON_CODICE 103
|
||||||
#define F_CON_DESCRIZIONE 113
|
#define F_CON_DESCRIZIONE 113
|
||||||
#define F_CON_DATA 121
|
#define F_CON_DATA 104
|
||||||
|
#define F_CON_RIFAMM 105
|
||||||
|
#define F_CON_CAUS1 121
|
||||||
|
#define F_CON_CAUS2 122
|
||||||
|
#define F_CON_CAUS3 123
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Contratti per PA" 0 2 0 0
|
PAGE "Contratti per PA" 0 2 0 0
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 7
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "@bEstremi contratto/convenzione/ordine P.A."
|
PROMPT 1 0 "@bEstremi contratto/convenzione/ordine P.A."
|
||||||
END
|
END
|
||||||
@ -78,9 +78,15 @@ BEGIN
|
|||||||
KEY 1
|
KEY 1
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "@bDati contratto/convenzione/ordine P.A."
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_CON_DESCRIZIONE 70 50
|
STRING F_CON_DESCRIZIONE 70 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Descrizione "
|
PROMPT 2 6 "Descrizione "
|
||||||
FIELD S0
|
FIELD S0
|
||||||
USE &CON KEY 2 SELECT (CODTAB[1,1]==#F_CON_TIPO)&&(STR(CODTAB[2,7]=#F_CON_CODCF))
|
USE &CON KEY 2 SELECT (CODTAB[1,1]==#F_CON_TIPO)&&(STR(CODTAB[2,7]=#F_CON_CODCF))
|
||||||
JOIN LF_CLIFO INTO TIPOCF=CODTAB[1,1] CODCF=CODTAB[2,7]
|
JOIN LF_CLIFO INTO TIPOCF=CODTAB[1,1] CODCF=CODTAB[2,7]
|
||||||
@ -97,10 +103,39 @@ END
|
|||||||
|
|
||||||
DATA F_CON_DATA
|
DATA F_CON_DATA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Data "
|
PROMPT 2 7 "Data "
|
||||||
FIELD D0
|
FIELD D0
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_CON_RIFAMM 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 7 "Riferimento amministrazione "
|
||||||
|
FIELD S4
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 10 "@bCausale"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CON_CAUS1 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 14 11 ""
|
||||||
|
FIELD S1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CON_CAUS2 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 14 12 ""
|
||||||
|
FIELD S2
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CON_CAUS3 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 14 13 ""
|
||||||
|
FIELD S3
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user