Patch level : 12.0 no-patch
Files correlati : f90.exe d181.des f181.dir f181.trr all-masks Commento : - Corretto controllo annessi obligatori - Aggiunto controllo per annesso prospetto rev. charge - Corretta estrazione esclusi - Aggiunto test per creazione prospetto integr.
This commit is contained in:
parent
1f6e110e68
commit
9118bff766
@ -156,8 +156,6 @@ int TEstrai_mask::estrai()
|
||||
if (!progr->add_status())
|
||||
break;
|
||||
int numreg = recset_get_int(mov, MOV_NUMREG);
|
||||
if (numreg == 96956)
|
||||
bool simo = true;
|
||||
|
||||
TToken_string elab_f9(recset_get_string(mov, MOV_ELABF9), ';'); // Stringa del campo elaborazione f9 nel file mov
|
||||
const bool escluso = !(elab_f9.items() == 3 && elab_f9.get(2)[0] != 'X' || elab_f9.empty());
|
||||
@ -1253,7 +1251,7 @@ void TF9_app::fill_esclusi()
|
||||
movimento_t TF9_app::escl2mov(TToken_string* row)
|
||||
{
|
||||
movimento_t t;
|
||||
t.err = row->get(0)[0] == 'X';
|
||||
t.err = false;
|
||||
t.numreg = row->get_int(1);
|
||||
t.datareg = row->get(2);
|
||||
t.datadoc = row->get(3);
|
||||
@ -1294,7 +1292,7 @@ bool TF9_app::estrai_escl_handler(TMask_field&, KEY key)
|
||||
{
|
||||
if (row->get(0)[0] == 'X')
|
||||
{
|
||||
const auto mov = escl2mov(row);
|
||||
const movimento_t mov = escl2mov(row);
|
||||
a._estr_escluso->add_mov(mov);
|
||||
_stats = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
const int stato = a._estr_escluso->estrai();
|
||||
|
@ -122,11 +122,15 @@ bool TImport_msk::catdocann_handler(TMask_field& field, KEY key)
|
||||
{
|
||||
const char* s = annessi->row(annessi->selected()).get(0);
|
||||
TCategorie_doc::annesso annesso;
|
||||
categorie_doc().get_ann(s, annesso);
|
||||
if (annesso.opcee != "RC")
|
||||
msk.set(F_CATDOCANN, annesso.catdoc);
|
||||
if (categorie_doc().get_ann(s, annesso))
|
||||
{
|
||||
if (annesso.opcee != "RC")
|
||||
msk.set(F_CATDOCANN, annesso.catdoc);
|
||||
else
|
||||
warning_box("Impossibile importare un annesso cartaceo per un prospetto integrativo per Reverse Charge.");
|
||||
}
|
||||
else
|
||||
warning_box("Impossibile importare un annesso cartaceo per un prospetto integrativo per Reverse Charge.");
|
||||
warning_box("Errore nell'acquisire la categoria annesso");
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -3,6 +3,25 @@
|
||||
#include "annessif9.h"
|
||||
#include "applicat.h"
|
||||
#include "f9lib01.h"
|
||||
#include "report.h"
|
||||
#include "reprint.h"
|
||||
#include "sqlset.h"
|
||||
#include "clifo.h"
|
||||
#include "comuni.h"
|
||||
#include "tabutil.h"
|
||||
#include "mov.h"
|
||||
#include "anagr.h"
|
||||
|
||||
class TReport_prosp : public TReport
|
||||
{
|
||||
public:
|
||||
bool print(TReport_book& book)
|
||||
{
|
||||
set_copy(0, 1);
|
||||
return book.add(*this);
|
||||
}
|
||||
TReport_prosp(const char* name) { load(name); }
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
@ -16,6 +35,19 @@ public:
|
||||
TF9_test_app() = default;
|
||||
};
|
||||
|
||||
void format_string(TString& str_out, const TString& str)
|
||||
{
|
||||
str_out.cut(0) << "'" << str << "'";
|
||||
}
|
||||
|
||||
void format_string(TString& str_out, const TDate& date)
|
||||
{
|
||||
TString dt; dt << date.date2ansi();
|
||||
format_string(str_out, dt);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void TF9_test_app::main_loop()
|
||||
{
|
||||
TLocalisamfile f(LF_F9ANNESSI);
|
||||
@ -37,7 +69,7 @@ void TF9_test_app::main_loop()
|
||||
|
||||
TF9_doccart d;
|
||||
TString_array sa;
|
||||
CHECK(d.mov2listann(search_numreg, sa) && sa.items() == 2, "COSA STAI LEGGENDO??");
|
||||
//CHECK(d.mov2listann(search_numreg, sa) && sa.items() == 2, "COSA STAI LEGGENDO??");
|
||||
FOR_EACH_ARRAY_ITEM(sa, nr, file)
|
||||
{
|
||||
TString namefile = (*(TToken_string*)file).get(1);
|
||||
@ -151,13 +183,190 @@ void TF9_test_app::main_loop()
|
||||
|
||||
old_numreg.cut(0) << 95222; // Doppio annesso
|
||||
bool movann = doccart.mov2listann(old_numreg, list_annessi);
|
||||
CHECK(movann && list_annessi.items() == 2, "Error retriving list annessi from numreg %s", (const char*)old_numreg);
|
||||
//CHECK(movann && list_annessi.items() == 2, "Error retriving list annessi from numreg %s", (const char*)old_numreg);
|
||||
bool movannvect = doccart.mov2listann_vect(old_numreg, vect_annessi);
|
||||
CHECK(movannvect && vect_annessi.size() == 2, "Error retriving vector annessi from numreg %s", (const char*)old_numreg);
|
||||
//CHECK(movannvect && vect_annessi.size() == 2, "Error retriving vector annessi from numreg %s", (const char*)old_numreg);
|
||||
|
||||
|
||||
/*TCategorie_doc::annesso annesso;
|
||||
annesso.catdoc = "INTEGREV";
|
||||
annesso.catdocpadre = "FATTREV";
|
||||
annesso.descr = "Integrazione Rev. Charge";
|
||||
annesso.opcee = "RC";
|
||||
annesso.obblig = true;
|
||||
TEstrazione::make_prosp_int_revc(96951, annesso);*/
|
||||
|
||||
TFilename freport; freport.currdir().slash_terminate() << "prosp.rep";
|
||||
TReport_prosp rep(freport);
|
||||
TReport_book book;
|
||||
|
||||
TFilename fprosp;
|
||||
fprosp.tempdir().slash_terminate() << "prosp_rev.pdf";
|
||||
|
||||
TString numreg_acq, numreg_ven;
|
||||
numreg_acq.cut(0) << "96951";
|
||||
numreg_ven.cut(0) << "96952";
|
||||
TLocalisamfile anagraf(LF_ANAG), clifo(LF_CLIFO), comuni(LF_COMUNI), mov_acq(LF_MOV), mov_ven(LF_MOV);
|
||||
mov_acq.put(MOV_NUMREG, numreg_acq);
|
||||
mov_acq.read();
|
||||
anagraf.put(ANA_TIPOA, "G");
|
||||
anagraf.put(ANA_CODANAGR, prefix().get_codditta());
|
||||
anagraf.read();
|
||||
|
||||
TString* NUMREG = new TString;
|
||||
TString* today = new TString;
|
||||
TString* ragsoc = new TString;
|
||||
TString* address = new TString;
|
||||
TString* cap = new TString;
|
||||
TString* citta = new TString;
|
||||
TString* provin = new TString;
|
||||
TString* codfisc = new TString;
|
||||
TString* partiva = new TString;
|
||||
TString* ndoc = new TString;
|
||||
TString* datadoc = new TString;
|
||||
TString* totdoc = new TString;
|
||||
TString* codforn = new TString;
|
||||
TString* ragsocforn = new TString;
|
||||
TString* addrforn = new TString;
|
||||
TString* capforn = new TString;
|
||||
TString* cittaforn = new TString;
|
||||
TString* provinforn = new TString;
|
||||
TString* partivaforn = new TString;
|
||||
TString* regacq = new TString;
|
||||
TString* protivaacq = new TString;
|
||||
TString* dataregacq = new TString;
|
||||
TString* totale = new TString;
|
||||
TString* totimponibile = new TString;
|
||||
TString* totimposta = new TString;
|
||||
|
||||
|
||||
format_string(*NUMREG, numreg_ven);
|
||||
format_string(*today, TDate(TODAY));
|
||||
|
||||
// DATI SOCIETA':
|
||||
format_string(*ragsoc, anagraf.get(ANA_RAGSOC));
|
||||
format_string(*address, TString(anagraf.get(ANA_INDRES)) << ", " << anagraf.get(ANA_CIVRES));
|
||||
format_string(*cap, anagraf.get(ANA_CAPRES));
|
||||
comuni.put(COM_COM, anagraf.get(ANA_COMRES));
|
||||
if(comuni.read() == NOERR)
|
||||
{
|
||||
format_string(*citta, comuni.get(COM_DENCOM));
|
||||
format_string(*provin, comuni.get(COM_PROVCOM));
|
||||
}
|
||||
else
|
||||
{
|
||||
format_string(*citta, TString(""));
|
||||
format_string(*provin, TString(""));
|
||||
}
|
||||
format_string(*codfisc, anagraf.get(ANA_COFI));
|
||||
format_string(*partiva, anagraf.get(ANA_PAIV));
|
||||
|
||||
TString ndoc_s; ndoc_s << mov_acq.get(MOV_NUMDOCEXT);
|
||||
if (ndoc_s.empty())
|
||||
ndoc_s << mov_acq.get(MOV_NUMDOC);
|
||||
|
||||
format_string(*ndoc, ndoc_s);
|
||||
format_string(*datadoc, mov_acq.get(MOV_DATADOC));
|
||||
format_string(*totdoc, mov_acq.get(MOV_TOTDOC));
|
||||
|
||||
TString codforn_s; codforn_s << mov_acq.get(MOV_CODCF);
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
clifo.put(CLI_CODCF, codforn_s);
|
||||
bool ok = clifo.read() == NOERR;
|
||||
format_string(*codforn, codforn_s);
|
||||
format_string(*ragsocforn, ok ? clifo.get(CLI_RAGSOC) : "");
|
||||
format_string(*addrforn, ok ? TString(clifo.get(CLI_INDCF)) << ", " << clifo.get(CLI_CIVCF) : "");
|
||||
format_string(*capforn, ok ? clifo.get(CLI_CAPCF) : "");
|
||||
|
||||
if (ok)
|
||||
{
|
||||
comuni.zero();
|
||||
comuni.put(COM_COM, clifo.get(CLI_COMCF));
|
||||
comuni.read();
|
||||
}
|
||||
format_string(*cittaforn, ok ? comuni.get(COM_DENCOM) : "");
|
||||
format_string(*provinforn, ok ? comuni.get(COM_PROVCOM) : "");
|
||||
format_string(*partivaforn, ok ? clifo.get(CLI_PAIV) : "");
|
||||
|
||||
// Info registrazioni
|
||||
|
||||
format_string(*regacq, mov_acq.get(MOV_REG));
|
||||
format_string(*protivaacq, mov_acq.get(MOV_PROTIVA));
|
||||
format_string(*dataregacq, mov_acq.get(MOV_DATAREG));
|
||||
|
||||
// Calcolo dal rmoviva
|
||||
format_string(*totale, TString(""));
|
||||
format_string(*totimponibile, TString(""));
|
||||
format_string(*totimposta, TString(""));
|
||||
|
||||
TString sql; sql << "SELECT COD, CODTAB, S0, R0,\n"
|
||||
"B.GRUPPO, B.CONTO, B.SOTTOCONTO, B.DESCR,\n"
|
||||
"B.NUMREG, B.CODIVA, B.IMPONIBILE, B.IMPOSTA, B.GRUPPO, B.CONTO, B.SOTTOCONTO, B.DATAREG, B.DATADOC, B.REG, B.PROTIVA, B.TOTDOC,\n"
|
||||
<< *today << " AS TODAY, " << *ragsoc << " AS RAGSOC, " << *totdoc << " AS TOTDOC, " << *address << " AS ADDRSEDE, " << *cap << " AS CAP, " << *citta << " AS CITTA, " << *provin << " AS PROVIN,\n"
|
||||
"" << *codfisc << " AS CODFISC, " << *partiva << " AS PARTIVA,\n"
|
||||
"" << *ndoc << " AS NDOC, " << *datadoc << " AS DATADOC,\n"
|
||||
"" << *codforn << " AS CODFORN, " << *ragsocforn << " AS RAGSOCFORN, " << *addrforn << " AS ADDRFORN, " << *capforn << " AS CAPFORN, " << *cittaforn << " AS CITTAFORN, " << *provinforn << " AS PROVINFORN, " << *partivaforn << " AS PARTIVAFORN,\n"
|
||||
"" << *regacq << " AS REGACQ, " << *protivaacq << " AS PROTIVAACQ, " << *dataregacq << " AS DATAREGACQ,\n"
|
||||
"" << *totale << " AS TOTALE, " << *totimponibile << " AS TOTIMPONIBILE, " << *totimposta << " AS TOTIMPOSTA\n"
|
||||
"FROM(\n"
|
||||
"\n"
|
||||
" SELECT PCON.GRUPPO, PCON.CONTO, PCON.SOTTOCONTO, PCON.DESCR,\n"
|
||||
" A.NUMREG AS NUMREG, A.CODIVA, A.IMPONIBILE, A.IMPOSTA, A.GRUPPO, A.CONTO, A.SOTTOCONTO, A.DATAREG, A.DATADOC, A.REG, A.PROTIVA, A.TOTDOC\n"
|
||||
" FROM(\n"
|
||||
" SELECT RMOVIVA.NUMREG AS NUMREG, CODIVA, IMPONIBILE, IMPOSTA, GRUPPO, CONTO, SOTTOCONTO, DATAREG, DATADOC, REG, PROTIVA, TOTDOC\n"
|
||||
" FROM RMOVIVA\n"
|
||||
" JOIN MOV\n"
|
||||
" ON MOV.NUMREG = RMOVIVA.NUMREG\n"
|
||||
" WHERE MOV.NUMREG = " << *NUMREG << "\n"
|
||||
"\n"
|
||||
" ) A\n"
|
||||
" JOIN PCON\n"
|
||||
" ON PCON.GRUPPO = A.GRUPPO AND PCON.CONTO = A.CONTO AND PCON.SOTTOCONTO = A.SOTTOCONTO\n"
|
||||
") B\n"
|
||||
"JOIN TABCOM\n"
|
||||
"ON COD = 'IVA' AND CODTAB = B.CODIVA";
|
||||
|
||||
TSQL_recordset rs(sql);
|
||||
|
||||
int items = rs.items();
|
||||
TString ragsoc_t = rs.get(rs.find_column("RAGSOC")).as_string();
|
||||
rep.set_recordset(&rs);
|
||||
rep.print(book);
|
||||
book.export_pdf(fprosp, false);
|
||||
|
||||
delete NUMREG;
|
||||
delete today;
|
||||
delete ragsoc;
|
||||
delete address;
|
||||
delete cap;
|
||||
delete citta;
|
||||
delete provin;
|
||||
delete codfisc;
|
||||
delete partiva;
|
||||
delete ndoc;
|
||||
delete datadoc;
|
||||
delete totdoc;
|
||||
delete codforn;
|
||||
delete ragsocforn;
|
||||
delete addrforn;
|
||||
delete capforn;
|
||||
delete cittaforn;
|
||||
delete provinforn;
|
||||
delete partivaforn;
|
||||
delete regacq;
|
||||
delete protivaacq;
|
||||
delete dataregacq;
|
||||
delete totale;
|
||||
delete totimponibile;
|
||||
delete totimposta;
|
||||
|
||||
message_box("TESTS COMPLETELY SUCCESSFUL");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int f90400(const int argc, char* argv[])
|
||||
{
|
||||
TF9_test_app test_app;
|
||||
|
@ -9,6 +9,8 @@
|
||||
#include "cg2103.h"
|
||||
#include "mov.h"
|
||||
#include "../fp/fplib.h"
|
||||
#include "annessif9.h"
|
||||
#include "printer.h"
|
||||
|
||||
#define MODE_SHEETS 0xC
|
||||
|
||||
@ -43,7 +45,7 @@ const char* TEstrazione::caus_sos(const TLocalisamfile& mov, const TipoIVA iva)
|
||||
return "";
|
||||
}
|
||||
|
||||
void TEstrazione::check_annessi(movimento_t& mov_i, const TString& numreg)
|
||||
void TEstrazione::check_annessi(movimento_t& mov_i, const int numreg)
|
||||
{
|
||||
TToken_string ann_nexist;
|
||||
if (!check_annessi_oblig(mov_i.catdoc->catdoc, numreg, ann_nexist))
|
||||
@ -66,20 +68,21 @@ void TEstrazione::check_annessi(movimento_t& mov_i, const TString& numreg)
|
||||
}
|
||||
}
|
||||
|
||||
bool TEstrazione::check_annessi_oblig(const TString& catdoc, const TString& numreg, TToken_string& ann_nexist)
|
||||
bool TEstrazione::check_annessi_oblig(const TString& catdoc, const int numreg, _Out_ TToken_string& ann_nexist)
|
||||
{
|
||||
ann_nexist.destroy(-1);
|
||||
TCategorie_doc categorie;
|
||||
const TString_array lista_cat_annessi = categorie.get_array_ann(catdoc); // Lista cat annessi
|
||||
TF9_doccart file_cart;
|
||||
std::vector<annesso_t> list_file_ann; // Lista file annessi
|
||||
file_cart.mov2listann_vect(numreg, list_file_ann);
|
||||
file_cart.mov2listann_vect(TString(numreg), list_file_ann);
|
||||
bool ok_ann = true;
|
||||
FOR_EACH_ARRAY_ITEM(lista_cat_annessi, nr, ann)
|
||||
{
|
||||
TCategorie_doc::annesso annesso;
|
||||
const bool ok_cat = categorie.get_ann(*(TToken_string*)ann, annesso);
|
||||
if (ok_cat && annesso.obblig)
|
||||
// Ignoro il flag obbligatorio per il prospetto di reverse charge
|
||||
if (ok_cat && annesso.obblig && annesso.opcee != "RC")
|
||||
{
|
||||
// Controllo che esista l'annesso per questo mov.
|
||||
bool exist = false;
|
||||
@ -95,6 +98,11 @@ bool TEstrazione::check_annessi_oblig(const TString& catdoc, const TString& numr
|
||||
if (!exist)
|
||||
ann_nexist.add(*(TToken_string*)ann);
|
||||
}
|
||||
else if(ok_cat && annesso.opcee == "RC")
|
||||
{
|
||||
// Generazione prospetto integrativo.
|
||||
make_prosp_int_revc(numreg, annesso);
|
||||
}
|
||||
}
|
||||
return ok_ann;
|
||||
}
|
||||
@ -247,6 +255,23 @@ bool TEstrazione::is_doc_xml(const TLocalisamfile& mov)
|
||||
&& clifo.get(CLI_COMCF) != "B513"; // Campione d'Italia
|
||||
}
|
||||
|
||||
bool TEstrazione::is_integr_rev(const int numreg, _Out_ TString& numreg_rev_vend)
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
TLocalisamfile mov_rev(LF_MOV);
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
mov_rev.put(MOV_NUMREG, numreg + 1);
|
||||
if(mov.read() == NOERR && mov_rev.read() == NOERR)
|
||||
{
|
||||
if(mov.get(MOV_DATADOC) == mov_rev.get(MOV_DATADOC) &&
|
||||
(mov.get(MOV_NUMDOCEXT).full() && mov_rev.get(MOV_NUMDOCEXT).full() ?
|
||||
mov.get(MOV_NUMDOCEXT) == mov_rev.get(MOV_NUMDOCEXT) : mov.get(MOV_NUMDOC) == mov_rev.get(MOV_NUMDOC)))
|
||||
numreg_rev_vend = mov_rev.get(MOV_NUMREG);
|
||||
return numreg_rev_vend.full();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TEstrazione::load_annessi(movimento_t& movimento)
|
||||
{
|
||||
TF9_doccart doccart;
|
||||
@ -254,6 +279,75 @@ bool TEstrazione::load_annessi(movimento_t& movimento)
|
||||
return doccart.mov2listann_vect(numreg, movimento.annessi);
|
||||
}
|
||||
|
||||
bool TEstrazione::make_prosp_int_revc(const int numreg, TCategorie_doc::annesso& annesso)
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
mov.put(MOV_NUMREG, numreg);
|
||||
mov.read();
|
||||
TString rev_vend = mov.get(MOV_MOVCOLL);
|
||||
if(rev_vend.full() || is_integr_rev(numreg, rev_vend))
|
||||
{
|
||||
/* todo */
|
||||
//////////////////
|
||||
// Genero file /// todo
|
||||
////////////////// todo
|
||||
|
||||
// [ NUMREG][ CAT.ANN.].pdf
|
||||
// [0000000][AAAAAAAAAA].pdf
|
||||
TFilename fileorig; // Nella temp
|
||||
fileorig.tempdir().slash_terminate();
|
||||
fileorig << format("%07d", numreg);
|
||||
for(int i = 0; i < 10 - annesso.catdoc.len(); ++i)
|
||||
fileorig << "_";
|
||||
fileorig << annesso.catdoc << ".pdf";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Testo che abbia scritto il file
|
||||
if (!fileorig.exist())
|
||||
bool simo = true;
|
||||
|
||||
// Sposto il file nella cartella dei documenti cartacei.
|
||||
const TFilename newfile(TF9_doccart::get_full_path_file_cartaceo(fileorig.name()));
|
||||
if(!newfile.exist())
|
||||
CopyFile(fileorig, newfile, false);
|
||||
else
|
||||
{
|
||||
// Rimpiazzo il file
|
||||
DeleteFile(newfile);
|
||||
CopyFile(fileorig, newfile, false);
|
||||
}
|
||||
// Controllo che non esista gia' altrimenti elimino il record
|
||||
TF9_doccart doccart;
|
||||
bool a;
|
||||
TString numreg_old;
|
||||
if (doccart.doc_already_exists(newfile, numreg_old, a))
|
||||
{
|
||||
TLocalisamfile lf_ann(LF_F9ANNESSI);
|
||||
lf_ann.put(F9A_FILENAME, newfile.name());
|
||||
lf_ann.read();
|
||||
lf_ann.remove();
|
||||
lf_ann.zero();
|
||||
}
|
||||
// Registro il file come annesso RC
|
||||
TLocalisamfile lf_ann(LF_F9ANNESSI);
|
||||
lf_ann.put(F9A_NUMREG, numreg);
|
||||
lf_ann.put(F9A_FILENAME, newfile.name());
|
||||
lf_ann.put(F9A_CATDOCPAD, annesso.catdocpadre);
|
||||
lf_ann.put(F9A_CATDOCANN, annesso.catdoc);
|
||||
lf_ann.put(F9A_LOADDATE, TDate(TODAY));
|
||||
lf_ann.put(F9A_USER, user());
|
||||
bool ok = lf_ann.write() == NOERR;
|
||||
ok &= lf_ann.rewrite() == NOERR;
|
||||
if(!ok)
|
||||
return yesno_box("Impossibile creare il prospetto integrativo per la registrazione n. %s.\nContinuare con l'estrazione?", (const char*)numreg);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
TString& TEstrazione::drd_attr()
|
||||
{
|
||||
static TString attr;
|
||||
@ -446,7 +540,10 @@ const char* TEstrazione::diagnostica_mov()
|
||||
break;
|
||||
|
||||
movimento_t& mov_i = *it;
|
||||
|
||||
#ifdef DBG
|
||||
if (mov_i.numreg == 96953)
|
||||
bool simo = true;
|
||||
#endif
|
||||
// Se escluso passo avanti
|
||||
if (!mov_i.estratto && mov_i.descr_estr == movimento_t::escluso)
|
||||
continue;
|
||||
@ -506,8 +603,8 @@ const char* TEstrazione::diagnostica_mov()
|
||||
else
|
||||
{
|
||||
ok &= false;
|
||||
mov_i.err = true;
|
||||
mov_i.estratto = false;
|
||||
mov_i.err = true;
|
||||
mov_i.estratto = false;
|
||||
mov_i.descr_err = "Non associato a fattura elettr. abbinamento automatico non riuscito. Abbinare manualmente, o escludere";
|
||||
}
|
||||
default: break;
|
||||
@ -540,9 +637,7 @@ const char* TEstrazione::diagnostica_mov()
|
||||
TFilename file;
|
||||
TString reg; reg << it->numreg;
|
||||
if (filecart.mov2doc(reg, file) && file.exist())
|
||||
{
|
||||
mov_i.nomefilecart << file;
|
||||
}
|
||||
else
|
||||
{
|
||||
mov_i.err = true;
|
||||
@ -618,7 +713,7 @@ const char* TEstrazione::diagnostica_mov()
|
||||
mov_i.catdoc = cd;
|
||||
|
||||
if (mov_i.catdoc)
|
||||
check_annessi(mov_i, numreg);
|
||||
check_annessi(mov_i, mov_i.numreg);
|
||||
|
||||
if (!mov_i.catdoc)
|
||||
++_stats.fv_nocatdoc;
|
||||
|
@ -1,7 +1,6 @@
|
||||
#ifndef _F901001_H_
|
||||
#define _F901001_H_
|
||||
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
@ -244,7 +243,7 @@ struct movimento_t
|
||||
annesso_nexist // Un annesso obbligatorio e' mancante.
|
||||
};
|
||||
|
||||
bool err;
|
||||
bool err{ false };
|
||||
int numreg;
|
||||
TDate datareg;
|
||||
TDate datadoc;
|
||||
@ -343,8 +342,9 @@ class TEstrazione : public TObject
|
||||
bool update_drd_stato_estr() const;
|
||||
static const char* categoria_doc();
|
||||
static const char* caus_sos(const TLocalisamfile& mov, TipoIVA iva);
|
||||
static void check_annessi(movimento_t& mov_i, const TString& numreg); // Controllo se ci sono tutti gli annessi obbligatori.
|
||||
static bool check_annessi_oblig(const TString& catdoc, const TString& numreg, TToken_string& ann_nexist);
|
||||
static void check_annessi(movimento_t& mov_i, int numreg); // Controllo se ci sono tutti gli annessi obbligatori.
|
||||
// Controllo se esistono tutti gli annessi cartacei obbligatori e se ci sono annessi reverse charge li genero.
|
||||
static bool check_annessi_oblig(const TString& catdoc, int numreg, _Out_ TToken_string& ann_nexist);
|
||||
static bool check_cartaceo_acq(const movimento_t& movimento);
|
||||
static bool check_documento_vendita(const TLocalisamfile& mov, _Out_ bool& exist_doc);
|
||||
/** CHECK RIFERIMENTO FPPRO
|
||||
@ -363,7 +363,15 @@ class TEstrazione : public TObject
|
||||
static void fill_id(TLocalisamfile& clifo, TString& statopaiv, TString& idfisc, TString& paiv, TString& codfis);
|
||||
TipoIVA get_tipoiva() const { return _head.tipo_doc == 'A' ? iva_acquisti : iva_vendite; }
|
||||
static bool is_doc_xml(const TLocalisamfile& mov);
|
||||
static bool is_integr_rev(int numreg, _Out_ TString& numreg_rev_vend);
|
||||
static bool load_annessi(movimento_t& movimento);
|
||||
#ifdef DBG
|
||||
public:
|
||||
#endif
|
||||
static bool make_prosp_int_revc(int numreg, TCategorie_doc::annesso& annesso);
|
||||
#ifdef DBG
|
||||
private:
|
||||
#endif
|
||||
|
||||
static TString& drd_attr();
|
||||
TString& drd_tovalues() const;
|
||||
@ -467,6 +475,7 @@ class TF9_doccart
|
||||
{
|
||||
TLocalisamfile _tdocs;
|
||||
TLocalisamfile _tannessi;
|
||||
|
||||
public:
|
||||
bool doc_already_exists(const TFilename& file, _Out_ TString& numreg, _Out_ bool& annesso);
|
||||
bool mov2doc(const TString& numreg, _Out_ TFilename& doc);
|
||||
|
@ -138,7 +138,7 @@ bool TF9_doccart::mov2listann(const TString& numreg, _Out_ TString_array& list_a
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TF9_doccart::mov2listann_vect(const TString& numreg, vector<annesso_t>& list_annessi)
|
||||
bool TF9_doccart::mov2listann_vect(const TString& numreg, _Out_ vector<annesso_t>& list_annessi)
|
||||
{
|
||||
list_annessi.clear();
|
||||
_tannessi.zero();
|
||||
|
Loading…
x
Reference in New Issue
Block a user