Prima patch PA
git-svn-id: svn://10.65.10.50/branches/R_10_00@22975 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
fb482d7a92
commit
313319491b
330
pa/pa0100.cpp
330
pa/pa0100.cpp
@ -1,4 +1,5 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <dongle.h>
|
||||
#include <progind.h>
|
||||
#include <utility.h>
|
||||
@ -6,10 +7,10 @@
|
||||
#include "../ve/velib05.h"
|
||||
|
||||
#include "pa0.h"
|
||||
#include "pa0100a.h"
|
||||
|
||||
#include "../fe/felib.h"
|
||||
|
||||
#include <clifo.h>
|
||||
#include <nditte.h>
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -33,6 +34,7 @@ protected:
|
||||
const TString& var2str(const TVariant& var) const;
|
||||
|
||||
public:
|
||||
void reset() { _fields.destroy(); }
|
||||
void set(const char* fld, const TVariant& var);
|
||||
void set(const char* fld, long var);
|
||||
void set(const char* fld, const char* var);
|
||||
@ -237,6 +239,101 @@ TPaf_record::TPaf_record(const char* table) : _table(table), _key(15, ',')
|
||||
CHECKS(_key.full(), "Invalid primary key for table ", table);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
// TPa_mask
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TPA_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
void fill();
|
||||
|
||||
public:
|
||||
TPA_mask() : TAutomask("pa0100a") {}
|
||||
};
|
||||
|
||||
void TPA_mask::fill()
|
||||
{
|
||||
TSheet_field& docs = sfield(F_DOCS);
|
||||
TString_array& sht = docs.rows_array();
|
||||
docs.hide();
|
||||
|
||||
sht.destroy();
|
||||
|
||||
TString query;
|
||||
query << "USE 17 SELECT (PADESTIN!='')&&(PARIFAMM!='')"
|
||||
<< "\nJOIN 20 INTO TIPOCF=TIPOCF CODCF==CODCF"
|
||||
<< "\nFROM TIPOCF=C\nTO TIPOCF=C";
|
||||
|
||||
TISAM_recordset clifo_pa(query);
|
||||
const TRecnotype n = clifo_pa.items();
|
||||
if (n > 0)
|
||||
{
|
||||
const TDate dal = get(F_DATAINI);
|
||||
TProgress_monitor pi(n, NULL);
|
||||
for (bool okc = clifo_pa.move_first(); okc; okc = clifo_pa.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
query.cut(0);
|
||||
query << "USE 33 KEY 2\nSELECT (BETWEEN(STATO,2,8))";
|
||||
if (!get_bool(F_SHOWALL))
|
||||
query << "&&(PAF!='X')";
|
||||
query << "\nFROM TIPOCF=C CODCF=#CLIENTE PROVV=D ANNO=2014 DATADOC=" << dal.date2ansi()
|
||||
<< "\nTO TIPOCF=C CODCF=#CLIENTE PROVV=D";
|
||||
TISAM_recordset doc_pa(query);
|
||||
doc_pa.set_var("#CLIENTE", clifo_pa.get(CLI_CODCF));
|
||||
for (bool okd = doc_pa.move_first(); okd; okd = doc_pa.move_next())
|
||||
{
|
||||
const TTipo_documento& td = cached_tipodoc(doc_pa.get(DOC_TIPODOC).as_string());
|
||||
if (!td.is_fattura())
|
||||
continue;
|
||||
TToken_string* row = new TToken_string;
|
||||
*row = doc_pa.get(DOC_PAF).as_bool() ? " " : "X";
|
||||
row->add(doc_pa.get(DOC_ANNO).as_int(), 1);
|
||||
row->add(doc_pa.get(DOC_CODNUM).as_string());
|
||||
row->add(doc_pa.get(DOC_NDOC).as_int());
|
||||
row->add(doc_pa.get(DOC_DATADOC).as_date());
|
||||
row->add(clifo_pa.get(CFV_CODCF).as_int());
|
||||
row->add(clifo_pa.get("20."CLI_RAGSOC).as_string());
|
||||
row->add(clifo_pa.get(CFV_PADESTIN).as_string());
|
||||
row->add(clifo_pa.get(CFV_PARIFAMM).as_string());
|
||||
|
||||
sht.add(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
docs.force_update();
|
||||
docs.show();
|
||||
}
|
||||
|
||||
bool TPA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_DATAINI:
|
||||
if (e == fe_init)
|
||||
o.set("01-06-2014");
|
||||
if (e == fe_modify)
|
||||
fill();
|
||||
break;
|
||||
case F_SHOWALL:
|
||||
if (e == fe_modify)
|
||||
fill();
|
||||
break;
|
||||
case F_DOCS:
|
||||
if (e == fe_init)
|
||||
fill();
|
||||
if (e == se_query_add || e == se_query_del)
|
||||
return false;
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
// TDoc2Paf
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -266,7 +363,9 @@ public:
|
||||
|
||||
const TString& TDoc2Paf::cessionario(const TDocumento& doc)
|
||||
{
|
||||
return doc.clifor().get(CLI_DESTIN);
|
||||
const TString& cess = doc.clifor().vendite().get(CFV_PADESTIN);
|
||||
CHECK(cess.full(), "Destinatario fattura elettronica non valido");
|
||||
return cess;
|
||||
}
|
||||
|
||||
const TString& TDoc2Paf::fattura(const TDocumento& doc)
|
||||
@ -280,11 +379,10 @@ const TString& TDoc2Paf::fattura(const TDocumento& doc)
|
||||
void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
{
|
||||
const TFirm& firm = prefix().firm();
|
||||
TString8 prginv; prginv.format("%05d", ini_get_int("./paf.ini", "Main", "PRGINV") + 1);
|
||||
ini_set_string("./paf.ini", "Main", "PRGINV", prginv);
|
||||
TString8 prginv; prginv.format("%08d", ini_get_int("./paf.ini", "Main", "PRGINV") + 1);
|
||||
|
||||
const TString8 hfatt = cessionario(doc);
|
||||
const TString80 bfatt = fattura(doc);
|
||||
const TString8 hfatt = cessionario(doc); // Codice univoco di 6 caratteri dell'ufficio P.A.
|
||||
const TString80 bfatt = fattura(doc); // Codice univoco di 20 caratteri del documento
|
||||
|
||||
// <DatiTrassmissione>
|
||||
TPaf_record paf0100f("PAF0100F");
|
||||
@ -297,6 +395,7 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf0100f.set("P1PRGINV", prginv);
|
||||
paf0100f.set("P1FTRASM", "SDI10");
|
||||
|
||||
paf0100f.set("P1CDEST", hfatt);
|
||||
TString80 tel; tel << firm.get(NDT_PTEL) << firm.get(NDT_TEL);
|
||||
paf0100f.set("P1TELEF", tel);
|
||||
paf0100f.set("P1MAIL", firm.get(NDT_MAIL));
|
||||
@ -308,7 +407,7 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf0200f.set("P2KHFATT", hfatt);
|
||||
paf0200f.set("P2KBFATT", bfatt);
|
||||
paf0200f.remove();
|
||||
paf0200f.set("P2PAESE", paf0100f.get("P1PAESE"));
|
||||
paf0200f.set("P2PAESE", paf0100f.get("P1PAESE")); // Sempre IT
|
||||
paf0200f.set("P2CODICE", _ditta.partita_IVA());
|
||||
paf0200f.set("P2FISCA", _ditta.codice_fiscale());
|
||||
if (_ditta.fisica())
|
||||
@ -328,6 +427,7 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf0200f.set("P2SPROV", _ditta.provincia_residenza());
|
||||
paf0200f.set("P2SNAZI", paf0100f.get("P1PAESE"));
|
||||
|
||||
/*
|
||||
// DatiStabile
|
||||
paf0200f.set("P2OINDI", _ditta.indirizzo_residenza());
|
||||
paf0200f.set("P2OCOMU", _ditta.comune_residenza());
|
||||
@ -335,16 +435,18 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf0200f.set("P2ONAZI", paf0100f.get("P1PAESE"));
|
||||
|
||||
paf0200f.insert();
|
||||
*/
|
||||
|
||||
// </CedentePrestatore>
|
||||
|
||||
// <CessionarioCommittente>
|
||||
TAnagrafica cliente('C', doc.get_long(DOC_CODCF));
|
||||
TAnagrafica cliente(doc.clifor());
|
||||
|
||||
TPaf_record paf0400f("PAF0400F");
|
||||
paf0400f.set("P4KHFATT", paf0100f.get("P1KHFATT"));
|
||||
paf0400f.set("P4KBFATT", paf0100f.get("P1KBFATT"));
|
||||
paf0400f.set("P4KHFATT", hfatt);
|
||||
paf0400f.set("P4KBFATT", bfatt);
|
||||
paf0400f.remove();
|
||||
paf0400f.set("P4PAESE", paf0100f.get("P1PAESE"));
|
||||
paf0400f.set("P4PAESE", "IT");
|
||||
paf0400f.set("P4CODICE", cliente.partita_IVA());
|
||||
paf0400f.set("P4FISCA", cliente.codice_fiscale());
|
||||
if (cliente.fisica())
|
||||
@ -368,17 +470,40 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
|
||||
// <DatiGenerali>
|
||||
TPaf_record paf0700f("PAF0700F");
|
||||
paf0700f.set("P7KHFATT", paf0100f.get("P1KHFATT"));
|
||||
paf0700f.set("P7KBFATT", paf0100f.get("P1KBFATT"));
|
||||
paf0700f.set("P7TDOC", doc.tipo().codice());
|
||||
paf0700f.set("P7KHFATT", hfatt);
|
||||
paf0700f.set("P7KBFATT", bfatt);
|
||||
paf0700f.remove();
|
||||
paf0700f.set("P7TDOC", doc.is_nota_credito() ? "TD04" : "TD01");
|
||||
paf0700f.set("P7DIVISA", "EUR"); // Aggiungere codice ISO 4217 a tabella divise (%VAL)
|
||||
paf0700f.set("P7DATA", doc.data());
|
||||
paf0700f.set("P7NUME", doc.numero());
|
||||
paf0700f.insert();
|
||||
|
||||
// <ScontoMaggiorazione>
|
||||
TPaf_record paf0900f("PAF0900F");
|
||||
paf0900f.set("P9KHFATT", hfatt);
|
||||
paf0900f.set("P9KBFATT", bfatt);
|
||||
paf0900f.remove();
|
||||
TToken_string sconto(doc.get(DOC_SCONTOPERC), '+');
|
||||
sconto.strip_spaces();
|
||||
long nlin_sconto = 1;
|
||||
FOR_EACH_TOKEN(sconto, str)
|
||||
{
|
||||
const real sconto = str;
|
||||
if (!sconto.is_zero())
|
||||
{
|
||||
paf0900f.set("P9NLIN", nlin_sconto++);
|
||||
paf0900f.set("P9TSCO", sconto > ZERO ? "SC" : "MG");
|
||||
paf0900f.set("P9PSCO", sconto);
|
||||
}
|
||||
paf0900f.insert();
|
||||
}
|
||||
// </ScontoMaggiorazione>
|
||||
|
||||
TPaf_record paf2700f("PAF2700F");
|
||||
paf2700f.set("PQKHFATT", paf0100f.get("P1KHFATT"));
|
||||
paf2700f.set("PQKBFATT", paf0100f.get("P1KBFATT"));
|
||||
paf2700f.set("PQKHFATT", hfatt);
|
||||
paf2700f.set("PQKBFATT", bfatt);
|
||||
paf2700f.remove();
|
||||
paf2700f.set("PQITDOC", doc.totale_doc());
|
||||
paf2700f.set("PQCAUS", doc.tipo().descrizione());
|
||||
paf2700f.set("PQART73", true);
|
||||
@ -387,14 +512,18 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
|
||||
// <DatiBeniServizi>
|
||||
TPaf_record paf1800f("PAF1800F");
|
||||
paf1800f.set("PIKHFATT", paf0100f.get("P1KHFATT"));
|
||||
paf1800f.set("PIKBFATT", paf0100f.get("P1KBFATT"));
|
||||
paf1800f.set("PIKHFATT", hfatt);
|
||||
paf1800f.set("PIKBFATT", bfatt);
|
||||
paf1800f.remove(); // Cancella tutte le righe documento
|
||||
|
||||
long pinlin = 1;
|
||||
long pinlin = 0;
|
||||
const int nrows = doc.rows();
|
||||
FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)
|
||||
{
|
||||
paf1800f.set("PINLIN", pinlin++);
|
||||
paf1800f.reset();
|
||||
paf1800f.set("PIKHFATT", hfatt);
|
||||
paf1800f.set("PIKBFATT", bfatt);
|
||||
paf1800f.set("PINLIN", ++pinlin);
|
||||
paf1800f.set("PIDESC", rdoc->get(RDOC_DESCR));
|
||||
if (rdoc->is_merce())
|
||||
{
|
||||
@ -404,6 +533,41 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
paf1800f.set("PIPRZT", rdoc->importo(true, false));
|
||||
const real aliquota = cache().get("%IVA", rdoc->get(RDOC_CODIVA), "R0");
|
||||
paf1800f.set("PIAIVA", aliquota);
|
||||
|
||||
// <ScontoMaggiorazione>
|
||||
TPaf_record paf2000f("PAF2000F");
|
||||
paf2000f.set("PJKHFATT", hfatt);
|
||||
paf2000f.set("PJKBFATT", bfatt);
|
||||
paf2000f.remove();
|
||||
TToken_string sconto(rdoc->get(RDOC_SCONTO), '+');
|
||||
sconto.strip_spaces();
|
||||
if (sconto.items())
|
||||
{
|
||||
/*
|
||||
long nlin_sconto = 1;
|
||||
FOR_EACH_TOKEN(sconto, str)
|
||||
{
|
||||
const real perc = str;
|
||||
if (!perc.is_zero())
|
||||
{
|
||||
paf2000f.set("PJNLIN", nlin_sconto++);
|
||||
paf2000f.set("PJTSCO", perc > ZERO ? "SC" : "MG");
|
||||
paf2000f.set("PJPSCO", perc);
|
||||
paf2000f.insert();
|
||||
}
|
||||
}
|
||||
*/
|
||||
const real perc = sconto;
|
||||
if (!perc.is_zero())
|
||||
{
|
||||
paf2000f.set("PJKNLIN", pinlin);
|
||||
paf2000f.set("PJTSCO", perc > ZERO ? "SC" : "MG");
|
||||
paf2000f.set("PJPSCO", perc);
|
||||
paf2000f.insert();
|
||||
}
|
||||
}
|
||||
|
||||
// </ScontoMaggiorazione>
|
||||
}
|
||||
paf1800f.insert();
|
||||
}
|
||||
@ -411,8 +575,8 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
|
||||
// <DatiRiepilogo>
|
||||
TPaf_record paf2200f("PAF2200F");
|
||||
paf2200f.set("PLKHFATT", paf0100f.get("P1KHFATT"));
|
||||
paf2200f.set("PLKBFATT", paf0100f.get("P1KBFATT"));
|
||||
paf2200f.set("PLKHFATT", hfatt);
|
||||
paf2200f.set("PLKBFATT", bfatt);
|
||||
paf2200f.remove(); // Cancella tutte le righe di riepilogo IVA
|
||||
|
||||
TAssoc_array& tiva = doc.tabella_iva(false);
|
||||
@ -421,19 +585,71 @@ void TDoc2Paf::elabora(TDocumentoEsteso& doc)
|
||||
const TRiepilogo_iva& riva = *(const TRiepilogo_iva*)itm;
|
||||
const real aliquota = riva.cod_iva().percentuale();
|
||||
paf2200f.set("PLALIVA", aliquota);
|
||||
const TString& tipo = riva.cod_iva().tipo();
|
||||
if (tipo.full())
|
||||
{
|
||||
if (tipo == "NS") paf2200f.set("PLNATU", "N2"); else
|
||||
if (tipo == "NI") paf2200f.set("PLNATU", "N3"); else
|
||||
if (tipo == "ES") paf2200f.set("PLNATU", "N4");
|
||||
}
|
||||
paf2200f.set("PLIMPO", riva.imponibile());
|
||||
paf2200f.set("PLIMPS", riva.imposta());
|
||||
const char* eiva = doc.get_bool(DOC_LIQDIFF) || doc.get_bool(DOC_IVAXCASSA) ? "E" : "I";
|
||||
// Esigibilità IVA: immediata o no?
|
||||
const char* eiva = doc.get_bool(DOC_LIQDIFF) || doc.get_bool(DOC_IVAXCASSA) ? "D" : "I";
|
||||
paf2200f.set("PLEIVA", eiva);
|
||||
|
||||
paf2200f.insert();
|
||||
}
|
||||
// </DatiRiepilogo>
|
||||
|
||||
// <DatiPagamento>
|
||||
TPaf_record paf2400f("PAF2400F");
|
||||
paf2400f.set("PNKHFATT", hfatt);
|
||||
paf2400f.set("PNKBFATT", bfatt);
|
||||
paf2400f.remove(); // Cancella i dati pagamento
|
||||
const TPagamento& pag = doc.pagamento();
|
||||
|
||||
doc.scadenze_recalc(); // Ricalcola array delle rate
|
||||
TString_array& scad = doc.scadenze();
|
||||
const int nrate = scad.items(); // Conta rate generate
|
||||
paf2400f.set("PNCPAG", nrate > 1 ? "TP01" : "TP02"); // A rate (TP01) o una soluzione(TP02)?
|
||||
paf2400f.insert();
|
||||
|
||||
TPaf_record paf2500f("PAF2500F");
|
||||
paf2500f.set("POKHFATT", hfatt);
|
||||
paf2500f.set("POKBFATT", bfatt);
|
||||
paf2500f.remove(); // Cancella tutte le rate
|
||||
for (int nr = 0; nr < nrate; nr++)
|
||||
{
|
||||
paf2500f.set("POKNLIN", long(nr+1)); // Numero riga
|
||||
const char* mod_pag = "MP01"; // Modalità di pagamento
|
||||
const int n = nr < pag.n_rate() ? nr : 0; // Si assicura che il numero riga sia accettabile
|
||||
switch (pag.tipo_rata(n))
|
||||
{
|
||||
case _bonfico: mod_pag = "MP05"; break; // bonifico
|
||||
case _rid : mod_pag = "MP09"; break; // RID
|
||||
case _ric_ban: mod_pag = "MP12"; break; // RIBA
|
||||
default : mod_pag = "MP01"; break; // contanti
|
||||
}
|
||||
paf2500f.set("POMPAGAM", mod_pag);
|
||||
|
||||
TToken_string& riga = scad.row(nr); // Data|Importo
|
||||
paf2500f.set("POUSCAD", TDate(riga.get(0))); // Data scadenza
|
||||
paf2500f.set("POIMPO", real(riga.get())); // Importo rata
|
||||
paf2500f.set("POCPAG", pag.code()); // Codice pagamento di CAMPO
|
||||
paf2500f.insert();
|
||||
}
|
||||
|
||||
// </DatiPagamento>
|
||||
|
||||
ini_set_string("./paf.ini", "Main", "PRGINV", prginv);
|
||||
}
|
||||
|
||||
void TDoc2Paf::elabora(const TRectype& rec)
|
||||
{
|
||||
TDocumentoEsteso doc(rec);
|
||||
elabora(doc);
|
||||
TDocumentoEsteso doc;
|
||||
if (doc.read(rec) == NOERR)
|
||||
elabora(doc);
|
||||
}
|
||||
|
||||
void TDoc2Paf::elabora(const TDoc_key& key)
|
||||
@ -489,51 +705,33 @@ void TDoc2Paf::main_loop()
|
||||
|
||||
if (!is_batch)
|
||||
{
|
||||
const char* title = TR("Fatture Pubblica Amministrazione");
|
||||
TArray_sheet sht(-1, 3, 78, -3,
|
||||
title, HR("@1|Anno|Cod.|Numero|Destinatario|Cliente|Ragione Sociale@50"));
|
||||
TPA_mask mask;
|
||||
|
||||
TISAM_recordset clifo_pa("USE 20 SELECT PADESTIN!=''\nTO TIPOCF=C");
|
||||
const TRecnotype n = clifo_pa.items();
|
||||
if (n > 0)
|
||||
for (;;)
|
||||
{
|
||||
TProgress_monitor pi(n, title);
|
||||
for (bool okc = clifo_pa.move_first(); okc; okc = clifo_pa.move_next())
|
||||
if (mask.run() == K_ENTER)
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
TISAM_recordset doc_pa("USE 33 KEY 2\nSELECT BETWEEN(STATO,2,5)\nFROM TIPOCF=C CODCF=#CLIENTE\nTO TIPOCF=C CODCF=#CLIENTE");
|
||||
doc_pa.set_var("#CLIENTE", clifo_pa.get(CLI_CODCF));
|
||||
for (bool okd = doc_pa.move_first(); okd; okd = doc_pa.move_next())
|
||||
TString_array& sht = mask.sfield(F_DOCS).rows_array();
|
||||
TProgress_monitor pi(sht.items(), NULL);
|
||||
int ndocs = 0;
|
||||
FOR_EACH_ARRAY_ROW(sht, r, riga)
|
||||
{
|
||||
const TTipo_documento& td = cached_tipodoc(doc_pa.get(DOC_TIPODOC).as_string());
|
||||
if (!td.is_fattura())
|
||||
continue;
|
||||
TToken_string* row = new TToken_string;
|
||||
row->add(doc_pa.get(DOC_ANNO).as_int(), 1);
|
||||
row->add(doc_pa.get(DOC_CODNUM).as_string());
|
||||
row->add(doc_pa.get(DOC_NDOC).as_int());
|
||||
row->add(clifo_pa.get(CLI_PADESTIN).as_string());
|
||||
const long codcf = doc_pa.get(DOC_CODCF).as_int();
|
||||
row->add(codcf);
|
||||
TString8 key; key.format("C|%ld", codcf);
|
||||
row->add(cache().get(LF_CLIFO, key, CLI_RAGSOC));
|
||||
|
||||
sht.add(row);
|
||||
if (!pi.add_status(1))
|
||||
break;
|
||||
if (riga->starts_with("X"))
|
||||
{
|
||||
const int anno = riga->get_int(1);
|
||||
const long ndoc = riga->get_long(3);
|
||||
const TFixed_string codnum(riga->get(2)); // lascio sapientemente per ultima la get di una stringa
|
||||
const TDoc_key key(anno, codnum, ndoc);
|
||||
elabora(key);
|
||||
ndocs++;
|
||||
}
|
||||
}
|
||||
message_box(FR("Sono stati elborati %d documenti"), ndocs);
|
||||
}
|
||||
}
|
||||
while (sht.run() == K_ENTER)
|
||||
{
|
||||
FOR_EACH_CHECKED_ROW(sht, r, riga)
|
||||
{
|
||||
const int anno = riga->get_int(1);
|
||||
const long ndoc = riga->get_long(3);
|
||||
const TFixed_string codnum(riga->get(2)); // lascio sapientemente per ultima la get di una stringa
|
||||
const TDoc_key key(anno, codnum, ndoc);
|
||||
elabora(key);
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -658,6 +856,10 @@ bool TDoc2Paf::create()
|
||||
else
|
||||
return cantread_box(n);
|
||||
|
||||
TRectype cfven(LF_CFVEN);
|
||||
if (cfven.type(CFV_PARIFAMM) != _alfafld)
|
||||
return error_box(TR("Database non convertito per fatturazione elettronica"));
|
||||
|
||||
_ditta.init(LF_NDITTE, prefix().get_codditta());
|
||||
|
||||
return TSkeleton_application::create();
|
||||
|
14
pa/pa0100a.h
Normal file
14
pa/pa0100a.h
Normal file
@ -0,0 +1,14 @@
|
||||
#define F_DATAINI 201
|
||||
#define F_SHOWALL 202
|
||||
#define F_DOCS 210
|
||||
|
||||
#define S_SELECTED 101
|
||||
#define S_ANNO 102
|
||||
#define S_CODNUM 103
|
||||
#define S_NDOC 104
|
||||
#define S_DATADOC 105
|
||||
#define S_CLIENTE 106
|
||||
#define S_RAGSOC 107
|
||||
#define S_UFFICIO 108
|
||||
#define S_RIFAMM 109
|
||||
|
95
pa/pa0100a.uml
Normal file
95
pa/pa0100a.uml
Normal file
@ -0,0 +1,95 @@
|
||||
#include "pa0100a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <elabar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Fatture Pubblica Amministrazione" 0 2 0 0
|
||||
|
||||
DATE F_DATAINI
|
||||
BEGIN
|
||||
PROMPT 1 0 "Data iniziale"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_SHOWALL
|
||||
BEGIN
|
||||
PROMPT 40 0 "Mostra anche i documenti già inviati"
|
||||
END
|
||||
|
||||
SPREADSHEET F_DOCS
|
||||
BEGIN
|
||||
PROMPT 0 1 ""
|
||||
ITEM "@1"
|
||||
ITEM "Anno"
|
||||
ITEM "Cod.\nNum.@4"
|
||||
ITEM "Num.\nDoc.@7"
|
||||
ITEM "Data\nDoc.@10"
|
||||
ITEM "Cliente"
|
||||
ITEM "Ragione Sociale@50"
|
||||
ITEM "Ufficio"
|
||||
ITEM "Riferimento\nAmministrazione@20"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Documento" -1 -1 78 8
|
||||
|
||||
BOOLEAN S_SELECTED
|
||||
BEGIN
|
||||
PROMPT 1 1 "Da elaborare"
|
||||
END
|
||||
|
||||
NUMBER S_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 1 2 "Anno "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_CODNUM 4
|
||||
BEGIN
|
||||
PROMPT 21 2 "Numerazione "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_NDOC 7
|
||||
BEGIN
|
||||
PROMPT 41 2 "Numero "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE S_DATADOC
|
||||
BEGIN
|
||||
PROMPT 61 2 "Data "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 1 3 "Cliente "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 21 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_UFFICIO 6
|
||||
BEGIN
|
||||
PROMPT 1 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_RIFAMM 20
|
||||
BEGIN
|
||||
PROMPT 21 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
51
pa/paf.ini
51
pa/paf.ini
@ -3,7 +3,7 @@ P1KHFATT = VARCHAR(20)
|
||||
P1KBFATT = VARCHAR(20)
|
||||
P1PAESE = VARCHAR(2)
|
||||
P1CODICE = VARCHAR(28)
|
||||
P1PRGINV = INTEGER
|
||||
P1PRGINV = VARCHAR(10)
|
||||
P1FTRASM = VARCHAR(5)
|
||||
P1CDEST = VARCHAR(6)
|
||||
P1TELEF = VARCHAR(12)
|
||||
@ -79,6 +79,19 @@ P7ERRORE = VARCHAR(5)
|
||||
|
||||
INDEX_1 = P7KHFATT,P7KBFATT
|
||||
|
||||
[PAF0900F]
|
||||
P9KHFATT = VARCHAR(20)
|
||||
P9KBFATT = VARCHAR(20)
|
||||
P9NLIN = INTEGER
|
||||
P9TSCO = VARCHAR(2)
|
||||
P9PSCO = NUMERIC
|
||||
P9ISCO = NUMERIC
|
||||
|
||||
P9GESTIONE = VARCHAR(1)
|
||||
|
||||
INDEX_1 = P9KHFATT,P9KBFATT,P9NLIN
|
||||
|
||||
|
||||
[PAF1800F]
|
||||
PIKHFATT = VARCHAR(20)
|
||||
PIKBFATT = VARCHAR(20)
|
||||
@ -96,6 +109,18 @@ PIERRORE = VARCHAR(5)
|
||||
|
||||
INDEX_1 = PIKHFATT,PIKBFATT,PINLIN
|
||||
|
||||
[PAF2000F]
|
||||
PJKHFATT = VARCHAR(20)
|
||||
PJKBFATT = VARCHAR(20)
|
||||
PJKNLIN = INTEGER
|
||||
PJTSCO = VARCHAR(2)
|
||||
PJPSCO = NUMERIC
|
||||
PJISCO = NUMERIC
|
||||
|
||||
PJGESTIONE = VARCHAR(1)
|
||||
|
||||
INDEX_1 = PJKHFATT,PJKBFATT,PJKNLIN
|
||||
|
||||
[PAF2200F]
|
||||
PLKHFATT = VARCHAR(20)
|
||||
PLKBFATT = VARCHAR(20)
|
||||
@ -110,6 +135,30 @@ PLERRORE = VARCHAR(5)
|
||||
|
||||
INDEX_1 = PLKHFATT,PLKBFATT,PLALIVA,PLNATU
|
||||
|
||||
[PAF2400F]
|
||||
PNKHFATT = VARCHAR(20)
|
||||
PNKBFATT = VARCHAR(20)
|
||||
PNCPAG = VARCHAR(4)
|
||||
|
||||
PNGESTIONE = VARCHAR(1)
|
||||
PNERRORE = VARCHAR(5)
|
||||
|
||||
INDEX_1 = PNKHFATT,PNKBFATT
|
||||
|
||||
[PAF2500F]
|
||||
POKHFATT = VARCHAR(20)
|
||||
POKBFATT = VARCHAR(20)
|
||||
POKNLIN = INTEGER
|
||||
POMPAGAM = VARCHAR(4)
|
||||
POUSCAD = VARCHAR(10)
|
||||
POIMPO = NUMERIC
|
||||
POCPAG = VARCHAR(15)
|
||||
|
||||
POGESTIONE = VARCHAR(1)
|
||||
POERRORE = VARCHAR(5)
|
||||
|
||||
INDEX_1 = POKHFATT,POKBFATT,POKNLIN
|
||||
|
||||
[PAF2700F]
|
||||
PQKHFATT = VARCHAR(20)
|
||||
PQKBFATT = VARCHAR(20)
|
||||
|
Loading…
x
Reference in New Issue
Block a user