Patch level : 12.0 nopatch
Files correlati : Commento : Implementazione invio regolarizzazioni al 07/11/2021
This commit is contained in:
parent
4405d1fb25
commit
5e3ae2faaa
@ -363,7 +363,7 @@ const char* get_ini_codcaus()
|
|||||||
return ini_get_string(FILE_CONFIG, FILE_SECTION, F1_CAUS);
|
return ini_get_string(FILE_CONFIG, FILE_SECTION, F1_CAUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* get_codcaus(const char * tipodoc, const char* codcf)
|
const char* get_codcaus(const char * tipodoc, const long codcf)
|
||||||
{
|
{
|
||||||
TLocalisamfile cfven(LF_CFVEN);
|
TLocalisamfile cfven(LF_CFVEN);
|
||||||
cfven.put(CFV_TIPOCF, "F");
|
cfven.put(CFV_TIPOCF, "F");
|
||||||
|
@ -137,7 +137,7 @@ public:
|
|||||||
TFppro& fppro_db();
|
TFppro& fppro_db();
|
||||||
|
|
||||||
const char* get_ini_codcaus();
|
const char* get_ini_codcaus();
|
||||||
const char* get_codcaus(const char * tipodoc, const char* codcf);
|
const char* get_codcaus(const char * tipodoc, const long codcf);
|
||||||
bool get_endatareg();
|
bool get_endatareg();
|
||||||
TString get_datainireg();
|
TString get_datainireg();
|
||||||
TString get_dataendreg();
|
TString get_dataendreg();
|
||||||
|
@ -114,7 +114,7 @@ bool TEstrazione::check_documento_vendita(const TLocalisamfile& mov, _Out_ bool&
|
|||||||
const TDocumento doc(mov.get(MOV_DPROVV)[0], mov.get_int(MOV_DANNO), mov.get(MOV_DCODNUM), mov.get_int(MOV_DNDOC));
|
const TDocumento doc(mov.get(MOV_DPROVV)[0], mov.get_int(MOV_DANNO), mov.get(MOV_DCODNUM), mov.get_int(MOV_DNDOC));
|
||||||
|
|
||||||
exist_doc = true;
|
exist_doc = true;
|
||||||
if (chiave_paf(doc, hfatt, bfatt))
|
if (chiave_paf_doc(doc, hfatt, bfatt))
|
||||||
{
|
{
|
||||||
query << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';";
|
query << "SELECT * FROM PAF0100F WHERE P1_KEYHEADERFATT = '" << hfatt << "' AND P1_KEYBODYFATT = '" << bfatt << "';";
|
||||||
fp_db().sq_set_exec(query);
|
fp_db().sq_set_exec(query);
|
||||||
|
@ -58,7 +58,7 @@ DATE F_DATAEND
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 50 1 "Data finale "
|
PROMPT 50 1 "Data finale "
|
||||||
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
||||||
WARNING "La data finale non può essere minore della data iniziale"
|
WARNING "La data finale non pu essere minore della data iniziale"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#define SQL_FLD "sql/"
|
#define SQL_FLD "sql/"
|
||||||
#define MANCATA_SEND "S" // Se la mail di mancata consegna è già stata inviata P1_ERRINT è segnato con "S"
|
#define MANCATA_SEND "S" // Se la mail di mancata consegna gi stata inviata P1_ERRINT segnato con "S"
|
||||||
|
|
||||||
// Typedef per aiutare a capire cosa sono le chiavi
|
// Typedef per aiutare a capire cosa sono le chiavi
|
||||||
typedef TString MCodice_riga;
|
typedef TString MCodice_riga;
|
||||||
@ -283,7 +283,9 @@ public:
|
|||||||
|
|
||||||
TFp_mail_sender() { _error = -1; }
|
TFp_mail_sender() { _error = -1; }
|
||||||
TFp_mail_sender(const int anno, const long ndoc, const TFixed_string& codnum, const TFixed_string& tipodoc, const long codcf, TString mail, bool accord, TString ragsoc, bool sent)
|
TFp_mail_sender(const int anno, const long ndoc, const TFixed_string& codnum, const TFixed_string& tipodoc, const long codcf, TString mail, bool accord, TString ragsoc, bool sent)
|
||||||
{ set_doc(anno, ndoc, codnum, tipodoc, codcf, mail, accord, ragsoc, sent); }
|
{
|
||||||
|
set_doc(anno, ndoc, codnum, tipodoc, codcf, mail, accord, ragsoc, sent);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class TFPRiga_documento : public TRiga_documento
|
class TFPRiga_documento : public TRiga_documento
|
||||||
@ -422,7 +424,7 @@ inline TFP_custom_cache& cached_custom_fp()
|
|||||||
return *carmelo;
|
return *carmelo;
|
||||||
}
|
}
|
||||||
|
|
||||||
class TFP_expression : public TObject // ma perchè non derivano da expre documento cazzone ? se sono più espressioni prima si separa la token string
|
class TFP_expression : public TObject // ma perch non derivano da expre documento cazzone ? se sono pi espressioni prima si separa la token string
|
||||||
{
|
{
|
||||||
enum TFP_operator { error, eq, neq, gt, ls, gteq, lseq, and, or };
|
enum TFP_operator { error, eq, neq, gt, ls, gteq, lseq, and, or };
|
||||||
|
|
||||||
@ -504,7 +506,7 @@ private:
|
|||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool _is_valuta_estera{ false }; // Se il documento è in valuta estera
|
bool _is_valuta_estera{ false }; // Se il documento in valuta estera
|
||||||
TString4 _cod_val;
|
TString4 _cod_val;
|
||||||
real _cambio;
|
real _cambio;
|
||||||
} _doc_cambio;
|
} _doc_cambio;
|
||||||
@ -523,7 +525,7 @@ private:
|
|||||||
protected:
|
protected:
|
||||||
|
|
||||||
/**< Funzioni di controllo */
|
/**< Funzioni di controllo */
|
||||||
/**< Controlli di testata, non è const per il calcolo della codizione di pagamento */
|
/**< Controlli di testata, non const per il calcolo della codizione di pagamento */
|
||||||
bool check_initial(TDocumentoEsteso& doc);
|
bool check_initial(TDocumentoEsteso& doc);
|
||||||
/**< Controllo di riga */
|
/**< Controllo di riga */
|
||||||
bool check_row(const TRiga_documento& rdoc);
|
bool check_row(const TRiga_documento& rdoc);
|
||||||
|
@ -77,7 +77,7 @@ string getline(ifstream& f)
|
|||||||
bool check_tables()
|
bool check_tables()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Da questo programma in poi verrà utilizzato un sistema diverso per la creazione e aggiornamento delle tabelle
|
* Da questo programma in poi verr utilizzato un sistema diverso per la creazione e aggiornamento delle tabelle
|
||||||
* Verranno utilizzati dei file.sql aggiornati con il numero di patch, leggermente scomodo durante la creazione ma facile per i controlli successivamente
|
* Verranno utilizzati dei file.sql aggiornati con il numero di patch, leggermente scomodo durante la creazione ma facile per i controlli successivamente
|
||||||
*/
|
*/
|
||||||
SLIST files = xvt_fsys_list_files(".sql", "sql/fp0/", false);
|
SLIST files = xvt_fsys_list_files(".sql", "sql/fp0/", false);
|
||||||
@ -232,7 +232,7 @@ bool get_coddest(const char tipocf, const long codcf, TString& coddest, TString&
|
|||||||
{
|
{
|
||||||
if (pec.full() || get_esp_pri_empty())
|
if (pec.full() || get_esp_pri_empty())
|
||||||
coddest = "0000000";
|
coddest = "0000000";
|
||||||
// Controllo se è straniero
|
// Controllo se straniero
|
||||||
else if (anag.estero() && anag.stato_partita_IVA() != "IT")
|
else if (anag.estero() && anag.stato_partita_IVA() != "IT")
|
||||||
{
|
{
|
||||||
coddest = get_esp_est() ? get_esp_est_cod() : "";
|
coddest = get_esp_est() ? get_esp_est_cod() : "";
|
||||||
@ -842,7 +842,7 @@ const TString& TDoc_fp::descrizione(const TRiga_documento& rdoc)
|
|||||||
if (tmp.len() > 900)
|
if (tmp.len() > 900)
|
||||||
{
|
{
|
||||||
TString err;
|
TString err;
|
||||||
err << "Il documento " << rdoc.doc().anno() << " " << rdoc.doc().codice_numerazione().codice() << " " << rdoc.doc().numero() << " ha la riga numero " << rdoc.numero() << " più lunga di quanto supportato dal formato dell'agenzia delle entrate, verrà troncata a 900 caratteri";
|
err << "Il documento " << rdoc.doc().anno() << " " << rdoc.doc().codice_numerazione().codice() << " " << rdoc.doc().numero() << " ha la riga numero " << rdoc.numero() << " pi lunga di quanto supportato dal formato dell'agenzia delle entrate, verr troncata a 900 caratteri";
|
||||||
log(1, err);
|
log(1, err);
|
||||||
}
|
}
|
||||||
return tmp.left(900);
|
return tmp.left(900);
|
||||||
@ -1039,7 +1039,7 @@ bool TDoc_fp::initialize(TDocumentoEsteso& doc)
|
|||||||
return false;
|
return false;
|
||||||
// Preparo il log
|
// Preparo il log
|
||||||
log(-1, _bfatt);
|
log(-1, _bfatt);
|
||||||
// Controllo se il documento è almeno in stato di stampa
|
// Controllo se il documento almeno in stato di stampa
|
||||||
if (doc.stato() < doc.tipo().stato_finale_stampa())
|
if (doc.stato() < doc.tipo().stato_finale_stampa())
|
||||||
{
|
{
|
||||||
log(3, "Il documento non e' stato ancora stampato, verra' saltato");
|
log(3, "Il documento non e' stato ancora stampato, verra' saltato");
|
||||||
@ -1085,8 +1085,8 @@ const TRectype& TDoc_fp::cco(const TRectype& doc) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
static TLocalisamfile tabmod(LF_TABMOD);
|
static TLocalisamfile tabmod(LF_TABMOD);
|
||||||
// Controllo se non sono già sul record, così evito read inutili
|
// Controllo se non sono gi sul record, cos evito read inutili
|
||||||
// Lo sto facendo a mano perchè usare cache() metterebbe FP nella colonna "MOD"
|
// Lo sto facendo a mano perch usare cache() metterebbe FP nella colonna "MOD"
|
||||||
if (tabmod.get("MOD") != "PA" || tabmod.get("COD") != "CON" || tabmod.get("CODTAB") != conkey)
|
if (tabmod.get("MOD") != "PA" || tabmod.get("COD") != "CON" || tabmod.get("CODTAB") != conkey)
|
||||||
{
|
{
|
||||||
tabmod.zero();
|
tabmod.zero();
|
||||||
@ -1193,7 +1193,7 @@ const TString & TDoc_fp::natura(const char* codiva) const
|
|||||||
}
|
}
|
||||||
const char* TDoc_fp::get_esigibilita_iva(const TDocumentoEsteso& doc)
|
const char* TDoc_fp::get_esigibilita_iva(const TDocumentoEsteso& doc)
|
||||||
{
|
{
|
||||||
// Esigibilità IVA: Immediata, Differita, Split payment
|
// Esigibilit IVA: Immediata, Differita, Split payment
|
||||||
const char* eiva = "I";
|
const char* eiva = "I";
|
||||||
if (doc.is_split_payment())
|
if (doc.is_split_payment())
|
||||||
eiva = "S";
|
eiva = "S";
|
||||||
@ -1205,7 +1205,7 @@ void TDoc_fp::set_IVA(TString codiva, TPaf_record& paf) const
|
|||||||
{
|
{
|
||||||
if (codiva.empty())
|
if (codiva.empty())
|
||||||
codiva = _codivadefault;
|
codiva = _codivadefault;
|
||||||
// É necessario il cast a real?
|
// necessario il cast a real?
|
||||||
paf.set("PI_ALIQUOTAIVA", static_cast<real>(cache().get("%IVA", codiva, "R0")));
|
paf.set("PI_ALIQUOTAIVA", static_cast<real>(cache().get("%IVA", codiva, "R0")));
|
||||||
paf.set("PI_NATURA", natura(codiva));
|
paf.set("PI_NATURA", natura(codiva));
|
||||||
}
|
}
|
||||||
@ -1258,7 +1258,7 @@ const TString& TDoc_fp::converti_prezzo(const real& prezzo) const
|
|||||||
}
|
}
|
||||||
void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TFPRiga_documento* rdoc) const
|
void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TFPRiga_documento* rdoc) const
|
||||||
{
|
{
|
||||||
// Setto l'unità di misura
|
// Setto l'unit di misura
|
||||||
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA));
|
||||||
const real qta = rdoc->quantita();
|
const real qta = rdoc->quantita();
|
||||||
// Prendendo la stringa non ho problemi in scrittura della query, a volte accadono cose stupide
|
// Prendendo la stringa non ho problemi in scrittura della query, a volte accadono cose stupide
|
||||||
@ -1267,7 +1267,7 @@ void TDoc_fp::set_qta_prezzo(TPaf_record& paf1800f, TFPRiga_documento* rdoc) con
|
|||||||
real prezzo_tot = rdoc->imponibile(false);
|
real prezzo_tot = rdoc->imponibile(false);
|
||||||
if (qta < ZERO)
|
if (qta < ZERO)
|
||||||
{
|
{
|
||||||
// Metto la qualità senza il segno
|
// Metto la qualit senza il segno
|
||||||
qta_string = qta_string.mid(1);
|
qta_string = qta_string.mid(1);
|
||||||
// E i prezzi in negativo
|
// E i prezzi in negativo
|
||||||
prezzo_unit = -abs(prezzo_unit);
|
prezzo_unit = -abs(prezzo_unit);
|
||||||
@ -1338,7 +1338,7 @@ bool TDoc_fp::add_riepilogo_iva(TPaf_record& paf2200f, const TCodiceIVA& cod_iva
|
|||||||
paf2200f.set("PL_IMPONIBILE", converti_prezzo(imponibile + riepilogo_agg.imponibile));
|
paf2200f.set("PL_IMPONIBILE", converti_prezzo(imponibile + riepilogo_agg.imponibile));
|
||||||
// Imposta
|
// Imposta
|
||||||
paf2200f.set("PL_IMPOSTA", converti_prezzo(imposta + riepilogo_agg.imposta));
|
paf2200f.set("PL_IMPOSTA", converti_prezzo(imposta + riepilogo_agg.imposta));
|
||||||
// Esigibilità IVA
|
// Esigibilit IVA
|
||||||
paf2200f.set("PL_ESIGIVA", eiva);
|
paf2200f.set("PL_ESIGIVA", eiva);
|
||||||
if (*eiva == 'S')
|
if (*eiva == 'S')
|
||||||
paf2200f.set("PL_RIFNORMATIVO", "Scissione pagamenti art.17-ter DPR 633/72");
|
paf2200f.set("PL_RIFNORMATIVO", "Scissione pagamenti art.17-ter DPR 633/72");
|
||||||
@ -1399,7 +1399,7 @@ bool TDoc_fp::export_info_articolo(TFPRiga_documento* rdoc, TPaf_record& paf1900
|
|||||||
paf1900f.set("PY_KEYNLINEA", riga_xml);
|
paf1900f.set("PY_KEYNLINEA", riga_xml);
|
||||||
ok &= add_row_art(riga_art, "Codice articolo interno", codartmag, paf1900f);
|
ok &= add_row_art(riga_art, "Codice articolo interno", codartmag, paf1900f);
|
||||||
}
|
}
|
||||||
// Se il codice articolo del magazzino è diverso quello è del cliente
|
// Se il codice articolo del magazzino diverso quello del cliente
|
||||||
if (codart.full() && codart != codartmag)
|
if (codart.full() && codart != codartmag)
|
||||||
{
|
{
|
||||||
reset(paf1900f);
|
reset(paf1900f);
|
||||||
@ -1705,14 +1705,14 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
// <DatiCassaPrevidenziale>
|
// <DatiCassaPrevidenziale>
|
||||||
// Non la mettiamo!
|
// Non la mettiamo!
|
||||||
// </DatiCassaPrevidenziale>
|
// </DatiCassaPrevidenziale>
|
||||||
// Non inserisco più adesso il paf0700f ma lo faccio alla fine (per inserire le ritenute)
|
// Non inserisco pi adesso il paf0700f ma lo faccio alla fine (per inserire le ritenute)
|
||||||
/*
|
/*
|
||||||
* Lo sconto in testata è stato disabilitato in quanto su Campo influenza solo le righe merci mentre dovrebbe modificare tutte le righe
|
* Lo sconto in testata stato disabilitato in quanto su Campo influenza solo le righe merci mentre dovrebbe modificare tutte le righe
|
||||||
*/
|
*/
|
||||||
// <DatiGenerali>
|
// <DatiGenerali>
|
||||||
TPaf_record& paf2700f = _paf_container.get_paf("PAF2700F");
|
TPaf_record& paf2700f = _paf_container.get_paf("PAF2700F");
|
||||||
// Disabilitata la scrittura del totale del documento, questo causa problemi se è presente uno sconto in testata e l'addebito del bollo.
|
// Disabilitata la scrittura del totale del documento, questo causa problemi se presente uno sconto in testata e l'addebito del bollo.
|
||||||
// Campo calcola prima il totale, poi lo sconta e ci applica il bollo mentre lo SDI sconta a bollo già applicato.
|
// Campo calcola prima il totale, poi lo sconta e ci applica il bollo mentre lo SDI sconta a bollo gi applicato.
|
||||||
paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
|
paf2700f.set("PQ_IMPTOTDOC", doc.totale_doc());
|
||||||
const TRectype& cont_conv_off = cco(doc);
|
const TRectype& cont_conv_off = cco(doc);
|
||||||
if (_has_cust)
|
if (_has_cust)
|
||||||
@ -1757,7 +1757,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
|
|
||||||
// Codice commessa, spostato nel campo S5 di TABCOM
|
// Codice commessa, spostato nel campo S5 di TABCOM
|
||||||
TString80 com = cco(doc).get("S5");
|
TString80 com = cco(doc).get("S5");
|
||||||
// Se è una commessa della sanità bisogna aggiungere un cancelletto davanti e dietro
|
// Se una commessa della sanit bisogna aggiungere un cancelletto davanti e dietro
|
||||||
if (cco(doc).get_bool("B0"))
|
if (cco(doc).get_bool("B0"))
|
||||||
{
|
{
|
||||||
com.add_front_and_back("#");
|
com.add_front_and_back("#");
|
||||||
@ -1931,7 +1931,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
if (rdoc->get(RDOC_QTA).is_zero())
|
if (rdoc->get(RDOC_QTA).is_zero())
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("La riga merce %d ha quantità nulla", riga);
|
msg.format("La riga merce %d ha quantit nulla", riga);
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
}
|
}
|
||||||
set_qta_prezzo(paf1800f, rdoc);
|
set_qta_prezzo(paf1800f, rdoc);
|
||||||
@ -1948,7 +1948,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
|
* Ogni riga si pu rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
|
||||||
*/
|
*/
|
||||||
if (!riftesta)
|
if (!riftesta)
|
||||||
{
|
{
|
||||||
@ -2012,7 +2012,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
if (qta.is_zero())
|
if (qta.is_zero())
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("La riga spese a quantità %d ha quantità nulla (campo %s)", riga, static_cast<const char*>(rdoc->field_qta()));
|
msg.format("La riga spese a quantit %d ha quantit nulla (campo %s)", riga, static_cast<const char*>(rdoc->field_qta()));
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
qta = UNO;
|
qta = UNO;
|
||||||
}
|
}
|
||||||
@ -2036,7 +2036,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(qta_inverse ? -abs(prz) : abs(prz)));
|
paf1800f.set("PI_PREZZOUNIT", converti_prezzo(qta_inverse ? -abs(prz) : abs(prz)));
|
||||||
paf1800f.set("PI_PRZTOTALE", converti_prezzo(imp));
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(imp));
|
||||||
set_IVA(*rdoc, paf1800f);
|
set_IVA(*rdoc, paf1800f);
|
||||||
// Controllo se è una ritenuta fiscale
|
// Controllo se una ritenuta fiscale
|
||||||
if (sp.tipo_ritenuta() == 'F')
|
if (sp.tipo_ritenuta() == 'F')
|
||||||
{
|
{
|
||||||
paf1800f.set("PI_RITENUTA", "SI");
|
paf1800f.set("PI_RITENUTA", "SI");
|
||||||
@ -2056,7 +2056,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
else if (rdoc->is_sconto() || rdoc->is_sconto_perc())
|
else if (rdoc->is_sconto() || rdoc->is_sconto_perc())
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << "Il documento " << doc.codice_numerazione().codice() << " " << doc.tipo().codice() << " " << doc.numero() << " presenta una o più righe di tipo sconto o sconto percentuale.\n" \
|
msg << "Il documento " << doc.codice_numerazione().codice() << " " << doc.tipo().codice() << " " << doc.numero() << " presenta una o pi righe di tipo sconto o sconto percentuale.\n" \
|
||||||
"Esportazione impossibile";
|
"Esportazione impossibile";
|
||||||
log(2, msg);
|
log(2, msg);
|
||||||
return false;
|
return false;
|
||||||
@ -2066,7 +2066,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
if (rdoc->get(RDOC_QTA).is_zero())
|
if (rdoc->get(RDOC_QTA).is_zero())
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("La riga omaggi %d ha quantità nulla", riga);
|
msg.format("La riga omaggi %d ha quantit nulla", riga);
|
||||||
log(1, msg);
|
log(1, msg);
|
||||||
}
|
}
|
||||||
paf1800f.set("PI_TIPOCESSPREST", "AB");
|
paf1800f.set("PI_TIPOCESSPREST", "AB");
|
||||||
@ -2086,7 +2086,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
paf1800f.set("PI_PRZTOTALE", converti_prezzo(rdoc->prezzo(false, false) * rdoc->get_real(RDOC_QTA)));
|
paf1800f.set("PI_PRZTOTALE", converti_prezzo(rdoc->prezzo(false, false) * rdoc->get_real(RDOC_QTA)));
|
||||||
TRiepilogo_agg& riepilogo_agg = _riepilogo_agg[rdoc->iva().codice()];
|
TRiepilogo_agg& riepilogo_agg = _riepilogo_agg[rdoc->iva().codice()];
|
||||||
riepilogo_agg.imponibile += rdoc->imponibile_omaggio(2);
|
riepilogo_agg.imponibile += rdoc->imponibile_omaggio(2);
|
||||||
// Non metto l'imposta, è già presente nei totali
|
// Non metto l'imposta, gi presente nei totali
|
||||||
//riepilogo_agg.imposta += rdoc->iva_omaggio(8, 2);
|
//riepilogo_agg.imposta += rdoc->iva_omaggio(8, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2277,7 +2277,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
riga++;
|
riga++;
|
||||||
}
|
}
|
||||||
// Riga sconto di testata
|
// Riga sconto di testata
|
||||||
// Se è presente uno sconto in testata devo sottrarlo come riga sconto o lo SDI urla
|
// Se presente uno sconto in testata devo sottrarlo come riga sconto o lo SDI urla
|
||||||
if (doc.get(DOC_SCONTOPERC).full() && doc.get(DOC_SCONTOPERC) != "0")
|
if (doc.get(DOC_SCONTOPERC).full() && doc.get(DOC_SCONTOPERC) != "0")
|
||||||
{
|
{
|
||||||
TAssoc_array& tiva = doc.tabella_iva(false);
|
TAssoc_array& tiva = doc.tabella_iva(false);
|
||||||
@ -2344,7 +2344,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
|
|
||||||
// </DatiBeniServizi>
|
// </DatiBeniServizi>
|
||||||
// <DatiDDT>
|
// <DatiDDT>
|
||||||
// Metto qua i dati DDT per capire se la fattura è accompagnatoria o deriva da bolla
|
// Metto qua i dati DDT per capire se la fattura accompagnatoria o deriva da bolla
|
||||||
TPaf_record& paf1700f = _paf_container.get_paf("PAF1700F");
|
TPaf_record& paf1700f = _paf_container.get_paf("PAF1700F");
|
||||||
if (doc.get("CODVETT1").full() && !_has_bolla)
|
if (doc.get("CODVETT1").full() && !_has_bolla)
|
||||||
{
|
{
|
||||||
@ -2355,7 +2355,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
if (piva.empty() && codfisc.empty())
|
if (piva.empty() && codfisc.empty())
|
||||||
{
|
{
|
||||||
TString msg = "Il vettore ";
|
TString msg = "Il vettore ";
|
||||||
msg << vet.get("S0").mid(0, 50) << " non ha nè codice fiscale nè partita IVA, la fattura " << doc.anno() << " " << doc.codice_numerazione().codice() << " " << doc.numero() << " non può essere trasmessa";
|
msg << vet.get("S0").mid(0, 50) << " non ha n codice fiscale n partita IVA, la fattura " << doc.anno() << " " << doc.codice_numerazione().codice() << " " << doc.numero() << " non pu essere trasmessa";
|
||||||
log(3, msg);
|
log(3, msg);
|
||||||
}
|
}
|
||||||
if (piva.full())
|
if (piva.full())
|
||||||
@ -2405,7 +2405,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
doc.scadenze_recalc(); // Ricalcola array delle rate
|
doc.scadenze_recalc(); // Ricalcola array delle rate
|
||||||
TString_array& scad = doc.scadenze();
|
TString_array& scad = doc.scadenze();
|
||||||
const char* rateazione = pag.cond_pag_sdi(); // A rate (TP01) o una soluzione(TP02)?
|
const char* rateazione = pag.cond_pag_sdi(); // A rate (TP01) o una soluzione(TP02)?
|
||||||
paf2400f.set("PN_RIGA", ZERO); // Al momento non gestiamo più tipologie di pagamento per documento
|
paf2400f.set("PN_RIGA", ZERO); // Al momento non gestiamo pi tipologie di pagamento per documento
|
||||||
paf2400f.set("PN_CONDPAGAMENTO", rateazione);
|
paf2400f.set("PN_CONDPAGAMENTO", rateazione);
|
||||||
paf2400f.set("PN_GESTIONE", "D");
|
paf2400f.set("PN_GESTIONE", "D");
|
||||||
ok &= insert(paf2400f);
|
ok &= insert(paf2400f);
|
||||||
@ -2429,7 +2429,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
log(2, TR("Non sono presenti ABI, CAB, IBAN per il pagamento"));
|
log(2, TR("Non sono presenti ABI, CAB, IBAN per il pagamento"));
|
||||||
if ((tipo_pag == 8 || tipo_pag == 9) && iban.blank()) // R.I.D. o Bonifico
|
if ((tipo_pag == 8 || tipo_pag == 9) && iban.blank()) // R.I.D. o Bonifico
|
||||||
{
|
{
|
||||||
log(1, TR("Non è presente il codice IBAN per il pagamento"));
|
log(1, TR("Non presente il codice IBAN per il pagamento"));
|
||||||
}
|
}
|
||||||
for (int nr = 0; nr < scad.items(); nr++)
|
for (int nr = 0; nr < scad.items(); nr++)
|
||||||
{
|
{
|
||||||
@ -2455,11 +2455,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
{
|
{
|
||||||
if (!dongle().active(RSAUT))
|
if (!dongle().active(RSAUT))
|
||||||
{
|
{
|
||||||
log(1, "Impossibile generare la fattura, il modulo RS non è abilitato!");
|
log(1, "Impossibile generare la fattura, il modulo RS non abilitato!");
|
||||||
}
|
}
|
||||||
else if (!doc.tipo().main_print_profile(rep, 2))
|
else if (!doc.tipo().main_print_profile(rep, 2))
|
||||||
{
|
{
|
||||||
log(1, "Impossibile generare la fattura, non è disponibile un profilo di stampa per questo tipo documento!");
|
log(1, "Impossibile generare la fattura, non disponibile un profilo di stampa per questo tipo documento!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2480,7 +2480,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
{
|
{
|
||||||
TFilename pdf; pdf.tempdir();
|
TFilename pdf; pdf.tempdir();
|
||||||
pdf << SLASH << doc.get(DOC_ANNO) << '_' << doc.get(DOC_CODNUM) << '_' << doc.get(DOC_NDOC) << ".pdf";
|
pdf << SLASH << doc.get(DOC_ANNO) << '_' << doc.get(DOC_CODNUM) << '_' << doc.get(DOC_NDOC) << ".pdf";
|
||||||
if (!pdf.exist() && !yesno_box("Attenzione! Non è stato possibile creare il pdf, continuare?"))
|
if (!pdf.exist() && !yesno_box("Attenzione! Non stato possibile creare il pdf, continuare?"))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2494,7 +2494,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
|
|||||||
{
|
{
|
||||||
if (_def_fld.empty())
|
if (_def_fld.empty())
|
||||||
{
|
{
|
||||||
TString msgerr; msgerr << "Errore: il documento " << _bfatt << " ha degli allegati ma nella configurazione non è stato impostato come trametterli\nCaricare il documento senza allegati?";
|
TString msgerr; msgerr << "Errore: il documento " << _bfatt << " ha degli allegati ma nella configurazione non stato impostato come trametterli\nCaricare il documento senza allegati?";
|
||||||
load_allegati = false;
|
load_allegati = false;
|
||||||
if (!yesno_box(msgerr))
|
if (!yesno_box(msgerr))
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#ifndef __ISAM_H
|
+#ifndef __ISAM_H
|
||||||
#define __ISAM_H
|
#define __ISAM_H
|
||||||
|
|
||||||
#ifndef __CURRENCY_H
|
#ifndef __CURRENCY_H
|
||||||
|
@ -165,6 +165,7 @@ protected:
|
|||||||
public:
|
public:
|
||||||
bool valid_cursor() const { return _cursor != NULL; }
|
bool valid_cursor() const { return _cursor != NULL; }
|
||||||
virtual TCursor* cursor() const;
|
virtual TCursor* cursor() const;
|
||||||
|
void set_filterfunction(FILTERFUNCTION ff, bool update = false) { cursor()->set_filterfunction(ff, update); }
|
||||||
virtual void freeze(bool on = true) { return cursor()->freeze(on); }
|
virtual void freeze(bool on = true) { return cursor()->freeze(on); }
|
||||||
virtual void unfreeze() { return cursor()->freeze(false); }
|
virtual void unfreeze() { return cursor()->freeze(false); }
|
||||||
virtual bool frozen() const { return cursor()->frozen(); }
|
virtual bool frozen() const { return cursor()->frozen(); }
|
||||||
|
@ -2920,6 +2920,55 @@ void TReport::mask2report(const TMask & m)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TReport::reset_export_sections()
|
||||||
|
{
|
||||||
|
FOR_EACH_ASSOC_OBJECT(_sections, os, sec_key, sec_item)
|
||||||
|
{
|
||||||
|
TReport_section * sect = (TReport_section *)sec_item;
|
||||||
|
const bool section_shown = _default_shown_sections.is_key(sec_key);
|
||||||
|
|
||||||
|
sect->show(section_shown);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TReport::set_export_sections(export_type type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case _export_printer :
|
||||||
|
break;
|
||||||
|
case _export_visualize :
|
||||||
|
break;
|
||||||
|
case _export_excel :
|
||||||
|
{
|
||||||
|
FOR_EACH_ASSOC_OBJECT(_sections, os, sec_key, sec_item)
|
||||||
|
{
|
||||||
|
const TString4 sec_id(sec_key);
|
||||||
|
TReport_section * sect = (TReport_section *)sec_item;
|
||||||
|
|
||||||
|
sect->show(sect->shown() && (sec_id == "H0" || sec_id.starts_with("B")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _export_dbase:
|
||||||
|
{
|
||||||
|
FOR_EACH_ASSOC_OBJECT(_sections, os, sec_key, sec_item)
|
||||||
|
{
|
||||||
|
const TString4 sec_id(sec_key);
|
||||||
|
TReport_section * sect = (TReport_section *)sec_item;
|
||||||
|
|
||||||
|
sect->show(sect->shown() && sec_id.starts_with("B"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _export_pdf :
|
||||||
|
break;
|
||||||
|
case _export_text :
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
KEY TReport::run_form(TMask& m)
|
KEY TReport::run_form(TMask& m)
|
||||||
{
|
{
|
||||||
report2mask(m);
|
report2mask(m);
|
||||||
|
@ -370,7 +370,6 @@ protected:
|
|||||||
virtual int compare(const TSortable& s) const;
|
virtual int compare(const TSortable& s) const;
|
||||||
void copy(const TReport_field& rf);
|
void copy(const TReport_field& rf);
|
||||||
TFieldtypes var_type() const;
|
TFieldtypes var_type() const;
|
||||||
const TString& formatted_text() const;
|
|
||||||
void get_currency(TCurrency& cur) const;
|
void get_currency(TCurrency& cur) const;
|
||||||
TReport_array_item* get_array_item() const;
|
TReport_array_item* get_array_item() const;
|
||||||
|
|
||||||
@ -381,6 +380,9 @@ public:
|
|||||||
TReport_section& section() const { return *_section; }
|
TReport_section& section() const { return *_section; }
|
||||||
void set_section(TReport_section* sec) { _section = sec; }
|
void set_section(TReport_section* sec) { _section = sec; }
|
||||||
|
|
||||||
|
const TString& formatted_text() const;
|
||||||
|
|
||||||
|
|
||||||
bool has_font() const { return _font != NULL; }
|
bool has_font() const { return _font != NULL; }
|
||||||
const TReport_font& font() const;
|
const TReport_font& font() const;
|
||||||
const TReport_font& print_font() const;
|
const TReport_font& print_font() const;
|
||||||
@ -535,6 +537,7 @@ public:
|
|||||||
|
|
||||||
// Internal usage only
|
// Internal usage only
|
||||||
typedef void (*FLDMSG_FUNC)(TReport_field& rf, void* jolly);
|
typedef void (*FLDMSG_FUNC)(TReport_field& rf, void* jolly);
|
||||||
|
typedef enum { _export_printer, _export_visualize, _export_excel, _export_pdf, _export_text, _export_dbase } export_type;
|
||||||
|
|
||||||
class TReport : public TAlex_virtual_machine
|
class TReport : public TAlex_virtual_machine
|
||||||
{
|
{
|
||||||
@ -556,6 +559,7 @@ class TReport : public TAlex_virtual_machine
|
|||||||
TString_array _allegati;
|
TString_array _allegati;
|
||||||
TReport_field* _curr_field;
|
TReport_field* _curr_field;
|
||||||
bool _page_split, _page_merge;
|
bool _page_split, _page_merge;
|
||||||
|
TAssoc_array _default_shown_sections;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual const char* class_name() const { return "Report"; }
|
virtual const char* class_name() const { return "Report"; }
|
||||||
@ -590,6 +594,9 @@ public:
|
|||||||
bool kill_section(char type, int level);
|
bool kill_section(char type, int level);
|
||||||
int find_max_level(char type) const;
|
int find_max_level(char type) const;
|
||||||
|
|
||||||
|
virtual void reset_export_sections();
|
||||||
|
virtual void set_export_sections(export_type type);
|
||||||
|
|
||||||
virtual bool on_link(const TReport_link& link);
|
virtual bool on_link(const TReport_link& link);
|
||||||
virtual bool use_mask() { return true;}
|
virtual bool use_mask() { return true;}
|
||||||
|
|
||||||
|
@ -1647,6 +1647,9 @@ HIDDEN bool ask_export_filename(TFilename& fname)
|
|||||||
bool TBook::export_text(TFilename& fname, bool signature, int size, bool goto_url, bool ask_filename)
|
bool TBook::export_text(TFilename& fname, bool signature, int size, bool goto_url, bool ask_filename)
|
||||||
{
|
{
|
||||||
TString ext = fname.ext(); ext.lower();
|
TString ext = fname.ext(); ext.lower();
|
||||||
|
|
||||||
|
if (ext.blank())
|
||||||
|
fname.ext("txt");
|
||||||
if (ext == "pdf")
|
if (ext == "pdf")
|
||||||
return export_pdf(fname, signature, goto_url, ask_filename);
|
return export_pdf(fname, signature, goto_url, ask_filename);
|
||||||
if (ext.starts_with("xls") || ext.starts_with("htm"))
|
if (ext.starts_with("xls") || ext.starts_with("htm"))
|
||||||
@ -1843,10 +1846,101 @@ static void reformat_excel(TString& str)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TBook::export_dbase(TFilename& fname, bool signature, TTrec * desc, bool goto_url, bool ask_filename)
|
||||||
|
{
|
||||||
|
TFilename temp;
|
||||||
|
TToken_string line(8192, '\t');
|
||||||
|
TString ext = fname.ext(); ext.lower();
|
||||||
|
|
||||||
|
if (ext.blank())
|
||||||
|
fname.ext("dbf");
|
||||||
|
if (desc == nullptr)
|
||||||
|
{
|
||||||
|
ifstream ifstream(temp);
|
||||||
|
int nfields = 0;
|
||||||
|
|
||||||
|
while (!ifstream.eof())
|
||||||
|
{
|
||||||
|
ifstream.getline(line.get_buffer(), line.size());
|
||||||
|
if (nfields < line.items())
|
||||||
|
nfields = line.items();
|
||||||
|
}
|
||||||
|
desc = new TTrec;
|
||||||
|
for (int i = 0; i < nfields; i++)
|
||||||
|
desc->update_fielddef(i, TToken_string(format("FLD%03d|1|80|0", i)));
|
||||||
|
desc->update_keydef(0, TToken_string("FLD001|"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fname.exist())
|
||||||
|
{
|
||||||
|
TFilename f(fname);
|
||||||
|
|
||||||
|
f.ext("*");
|
||||||
|
remove_files(f, false);
|
||||||
|
}
|
||||||
|
TExternisamfile dbf(fname, *desc);
|
||||||
|
|
||||||
|
temp.temp("exp", "xls");
|
||||||
|
export_excel(temp, signature);
|
||||||
|
|
||||||
|
ifstream ifstream(temp);
|
||||||
|
|
||||||
|
while (!ifstream.eof())
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
ifstream.getline(line.get_buffer(), line.size());
|
||||||
|
if (line.full())
|
||||||
|
{
|
||||||
|
dbf.zero();
|
||||||
|
FOR_EACH_STR_TOKEN(line, val)
|
||||||
|
if (*desc->rec().Fd[i].Name != '\0')
|
||||||
|
switch (desc->rec().Fd[i].TypeF)
|
||||||
|
{
|
||||||
|
case _alfafld:
|
||||||
|
case _charfld:
|
||||||
|
case _boolfld:
|
||||||
|
case _memofld:
|
||||||
|
dbf.put(desc->rec().Fd[i++].Name, val);
|
||||||
|
break;
|
||||||
|
case _intfld :
|
||||||
|
case _longfld :
|
||||||
|
case _realfld :
|
||||||
|
case _wordfld :
|
||||||
|
case _intzerofld :
|
||||||
|
case _longzerofld :
|
||||||
|
dbf.put(desc->rec().Fd[i++].Name, real::ita2eng(val));
|
||||||
|
break;
|
||||||
|
case _datefld :
|
||||||
|
dbf.put(desc->rec().Fd[i++].Name, TDate(atoi(val.left(2)), atoi(val.mid(3,2)), 2000 + atoi(val.right(2))));
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
dbf.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
remove(temp);
|
||||||
|
safe_delete(desc);
|
||||||
|
if (signature && main_app().has_module(FDAUT))
|
||||||
|
{
|
||||||
|
char outfile[_MAX_PATH] = "";
|
||||||
|
if (xvt_sign_file(fname, outfile))
|
||||||
|
fname = outfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (goto_url)
|
||||||
|
xvt_sys_goto_url(fname, "open");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool TBook::export_excel(TFilename& fname, bool signature, bool goto_url, bool ask_filename)
|
bool TBook::export_excel(TFilename& fname, bool signature, bool goto_url, bool ask_filename)
|
||||||
{
|
{
|
||||||
TTabulator tab;
|
TTabulator tab;
|
||||||
|
TString ext = fname.ext(); ext.lower();
|
||||||
|
|
||||||
|
if (ext.blank())
|
||||||
|
fname.ext("xls");
|
||||||
if (ask_filename && !ask_export_filename(fname))
|
if (ask_filename && !ask_export_filename(fname))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -2286,6 +2380,10 @@ bool TBook::print(size_t pagefrom, size_t pageto, word copies)
|
|||||||
|
|
||||||
bool TBook::export_pdf(TFilename& filename, bool signature, bool goto_url, bool ask_filename)
|
bool TBook::export_pdf(TFilename& filename, bool signature, bool goto_url, bool ask_filename)
|
||||||
{
|
{
|
||||||
|
TString ext = filename.ext(); ext.lower();
|
||||||
|
|
||||||
|
if (ext.blank())
|
||||||
|
filename.ext("pdf");
|
||||||
bool ok = (pages() > 0) && main_app().has_module(RSAUT); // Controllo paranoico dei permessi
|
bool ok = (pages() > 0) && main_app().has_module(RSAUT); // Controllo paranoico dei permessi
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
@ -2359,6 +2457,11 @@ bool TBook::esporta()
|
|||||||
if (ok)
|
if (ok)
|
||||||
xvt_sys_goto_url(fname, "open");
|
xvt_sys_goto_url(fname, "open");
|
||||||
break;
|
break;
|
||||||
|
case K_DBF:
|
||||||
|
ok = export_dbase(fname, signature);
|
||||||
|
if (ok)
|
||||||
|
xvt_sys_goto_url(fname, "open");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2891,7 +2994,7 @@ void TReport_book::add_doc(const TString& name)
|
|||||||
|
|
||||||
TReport* rep = _report; // Salvo variabile globale
|
TReport* rep = _report; // Salvo variabile globale
|
||||||
|
|
||||||
add(*eminem, true);
|
add(*eminem, _export_printer, true);
|
||||||
_report = rep; // Ripristino variabile globale
|
_report = rep; // Ripristino variabile globale
|
||||||
}
|
}
|
||||||
delete eminem;
|
delete eminem;
|
||||||
@ -2900,11 +3003,12 @@ void TReport_book::add_doc(const TString& name)
|
|||||||
TBook::add_doc(name);
|
TBook::add_doc(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TReport_book::add(TReport& rep, bool progind)
|
bool TReport_book::add(TReport& rep, export_type type, bool progind)
|
||||||
{
|
{
|
||||||
if (!init(rep))
|
if (!init(rep))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
_report->set_export_sections(type);
|
||||||
if (!_report->execute_prescript())
|
if (!_report->execute_prescript())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -97,6 +97,8 @@ public:
|
|||||||
virtual bool archive(const char* repname, bool signature);
|
virtual bool archive(const char* repname, bool signature);
|
||||||
virtual bool preview();
|
virtual bool preview();
|
||||||
|
|
||||||
|
// esporta il book in un file dbf il tracciato record passato viene disallocato
|
||||||
|
virtual bool export_dbase(TFilename& fname, bool signature, TTrec * desc = nullptr, bool goto_url = false, bool ask_filename = false);
|
||||||
virtual bool export_excel(TFilename& fname, bool signature, bool goto_url = false, bool ask_filename = false);
|
virtual bool export_excel(TFilename& fname, bool signature, bool goto_url = false, bool ask_filename = false);
|
||||||
virtual bool export_pdf(TFilename& fname, bool signature, bool goto_url = false, bool ask_filename = false);
|
virtual bool export_pdf(TFilename& fname, bool signature, bool goto_url = false, bool ask_filename = false);
|
||||||
virtual bool export_text(TFilename& fname, bool signature, int size, bool goto_url = false, bool ask_filename = false);
|
virtual bool export_text(TFilename& fname, bool signature, int size, bool goto_url = false, bool ask_filename = false);
|
||||||
@ -134,7 +136,7 @@ protected:
|
|||||||
void print_subsections(int father);
|
void print_subsections(int father);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool add(TReport& report, bool progind = true);
|
bool add(TReport& report, export_type type = _export_printer, bool progind = true);
|
||||||
|
|
||||||
virtual int lpi() const;
|
virtual int lpi() const;
|
||||||
virtual int cpi() const;
|
virtual int cpi() const;
|
||||||
|
@ -134,7 +134,7 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
|
|||||||
rdoc.put(DOC_NDOC, rec->get("23.DNDOC").as_string());
|
rdoc.put(DOC_NDOC, rec->get("23.DNDOC").as_string());
|
||||||
|
|
||||||
// Se riesco a generare la chiave, trovo il record e non ha il flag di gestione in errore o un errore esterno, so che è stato inviato
|
// Se riesco a generare la chiave, trovo il record e non ha il flag di gestione in errore o un errore esterno, so che è stato inviato
|
||||||
const bool is_sent = rdoc.read(doc) == NOERR && chiave_paf(rdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != "E" && paf0100f.sq_get("P1_ERREST") != "*";
|
const bool is_sent = rdoc.read(doc) == NOERR && chiave_paf_doc(rdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != "E" && paf0100f.sq_get("P1_ERREST") != "*";
|
||||||
|
|
||||||
// Se voglio solo quelli inviati e non è stato inviato o
|
// Se voglio solo quelli inviati e non è stato inviato o
|
||||||
// voglio solo quelli non inviati ed è stato inviato, RUSPA!
|
// voglio solo quelli non inviati ed è stato inviato, RUSPA!
|
||||||
|
Loading…
x
Reference in New Issue
Block a user