Files correlati : f90.exe Commento : - Modificato pescaggio file docuemnto cartaceo dalla spotlight se esiste. - Modificato guessing movimenti passivi per associazione automatica piu' "intelligente" con FPPRO. - Correzione controllo annessi obligatori. - Correzione controllo movimento collegato (per rev. charge). - Corretto messaggio di errore generazione prospetto integrativo. - Correzione esportazione numero documento per le vendite secondo la regola che viene utilizzata nell'invio fp dove viene fatto il leading di 0 se esiste prefisso/suffisso. - Correzione conferma estratti e segna sul movimento che e' estratto.
209 lines
8.3 KiB
C++
209 lines
8.3 KiB
C++
#include "f90.h"
|
|
|
|
#include "annessif9.h"
|
|
#include "applicat.h"
|
|
#include "report.h"
|
|
|
|
#include "f9lib.h"
|
|
#include "f90100.h"
|
|
|
|
/**
|
|
* \brief Some test for F9 classes
|
|
*/
|
|
|
|
class TF9_test_app : public TSkeleton_application
|
|
{
|
|
public:
|
|
void main_loop() override;
|
|
TF9_test_app() = default;
|
|
};
|
|
|
|
|
|
|
|
void TF9_test_app::main_loop()
|
|
{
|
|
TLocalisamfile f(LF_F9ANNESSI);
|
|
TString search_numreg; search_numreg << 95223;
|
|
f.zero();
|
|
f.setkey(1);
|
|
f.put(F9A_NUMREG, search_numreg);
|
|
|
|
TString filename = f.get(F9A_FILENAME);
|
|
TString numreg;
|
|
for (f.read(_isgteq); (numreg = f.get(F9A_NUMREG)) == search_numreg; f.next())
|
|
{
|
|
filename = f.get(F9A_FILENAME);
|
|
numreg = f.get(F9A_NUMREG);
|
|
//message_box("Filename: %s\nNumreg: %s", (const char*)filename, (const char*)numreg);
|
|
CHECK(numreg == search_numreg, "This shit sucks.");
|
|
CHECK(filename == "annmid.pdf" || filename == "annmid2.pdf", "YOU'RE WRONG");
|
|
}
|
|
|
|
TF9_doccart d;
|
|
TString_array sa;
|
|
//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);
|
|
TLocalisamfile ann(LF_F9ANNESSI);
|
|
ann.put(F9A_NUMREG, search_numreg);
|
|
ann.put(F9A_FILENAME, namefile);
|
|
CHECK(ann.read() == NOERR, "Non esiste questo numreg??");
|
|
filename = ann.get(F9A_FILENAME);
|
|
TString rec; rec <<
|
|
filename << "\n" <<
|
|
ann.get(F9A_NUMREG) << "\n" <<
|
|
ann.get(F9A_CATDOCPAD) << "\n" <<
|
|
ann.get(F9A_CATDOCANN) << "\n" <<
|
|
ann.get(F9A_LOADDATE) << "\n" <<
|
|
ann.get(F9A_USER);
|
|
CHECK(filename == "annmid.pdf" || filename == "annmid2.pdf", "YOU'RE WRONG");
|
|
//message_box(rec);
|
|
}
|
|
|
|
/////////////////////////
|
|
// Preload some cat doc.
|
|
if (noyes_box("Attenzione: procedere all'eliminazione e caricamento di categorie documentali e annessi di prova?"))
|
|
{
|
|
TCategorie_doc preload;
|
|
preload.remove_all();
|
|
preload.reload();
|
|
preload.add_categoria("FATTACQ", "FATTURE DI ACQUISTI", "FTA", "TD01", "", "FA");
|
|
preload.add_categoria("FATTVEN", "FATTURE DI VENDITA", "FTV", "TD01", "", "FV");
|
|
preload.add_categoria("NOTCREDACQ", "Nota credito di acquisto", "FTA", "TD04", "", "NC");
|
|
preload.add_categoria("NOTDEBVEN", "Nota debito di vendita", "FTV", "TD05", "", "ND");
|
|
preload.add_categoria("FATTCORR", "Fattura corrispettivi", "FTA", "TD01", "", "CR");
|
|
preload.add_categoria("ACQREV", "Fattura acq. con rev. charge", "FTA", "TD01", "052", "FA");
|
|
|
|
preload.add_annesso("FATTACQ", "GENACQ", "Annesso generico acq", "DC");
|
|
preload.add_annesso("FATTVEN", "GENVEN", "Annesso gen. ven.", "DC");
|
|
preload.add_annesso("ACQREV", "INTREVC", "Prosp. integr. rev.ch.", "RC", true);
|
|
preload.add_annesso("FATTACQ", "LEASING", "Annesso leasing", "DC");
|
|
|
|
CHECK(preload.get_array_rows().items() > 0, "Errore aggiunta o caricamento categorie documentali.");
|
|
TCategorie_doc::annesso annesso;
|
|
if (preload.get_ann("GENACQ", annesso))
|
|
{ }
|
|
TCategorie_doc::classe_doc get_classe_doc_right{ "ACQREV", "Fattura acq. con rev. charge", "FTA", "TD01", "052", "FA" };
|
|
std::shared_ptr<TCategorie_doc::classe_doc> get_classe_doc = preload.get_classe_doc("ACQREV");
|
|
CHECK(get_classe_doc->catdoc == get_classe_doc_right.catdoc &&
|
|
get_classe_doc->descr == get_classe_doc_right.descr &&
|
|
get_classe_doc->class_sost == get_classe_doc_right.class_sost &&
|
|
get_classe_doc->caus_sost == get_classe_doc_right.caus_sost &&
|
|
get_classe_doc->causcont == get_classe_doc_right.causcont &&
|
|
get_classe_doc->tipocaus == get_classe_doc_right.tipocaus, "get_classe_doc failed"
|
|
);
|
|
std::set<TString> get_name_catdocs = preload.get_name_catdocs();
|
|
CHECK(get_name_catdocs.find("FATTACQ") != get_name_catdocs.end() &&
|
|
get_name_catdocs.find("FATTVEN") != get_name_catdocs.end() &&
|
|
get_name_catdocs.find("NOTCREDACQ") != get_name_catdocs.end() &&
|
|
get_name_catdocs.find("NOTDEBVEN") != get_name_catdocs.end() &&
|
|
get_name_catdocs.find("FATTCORR") != get_name_catdocs.end() &&
|
|
get_name_catdocs.find("ACQREV") != get_name_catdocs.end(), "Get catdocs failed"
|
|
);
|
|
std::shared_ptr<TCategorie_doc::classe_doc> mov2cat = preload.mov2cat(95752);
|
|
CHECK(mov2cat, "mov2cat failed: classe doc is null");
|
|
mov2cat = preload.mov2cat(96955); // Rev. charge causale 052
|
|
CHECK(mov2cat->causcont == "052", "Error retriving cat.doc. from numreg for causale.");
|
|
|
|
const TString cat_selected = "FATTACQ";
|
|
TCategorie_doc catdoc;
|
|
std::shared_ptr<TArray_sheet> annessi = catdoc.get_sheet_ann(cat_selected);
|
|
CHECK(annessi->items() == 2, "TCategorie_doc::get_sheet_ann() failed: retrived %d elements instead of 2", (int)annessi->items());
|
|
|
|
std::shared_ptr<TArray_sheet> sheet_catdocs = catdoc.get_sheet_catdocs();
|
|
CHECK(sheet_catdocs->items() == 6, "TCategorie_doc::get_sheet_catdocs() failed: retrived %d elements instead of 6", (int)sheet_catdocs->items());
|
|
|
|
|
|
TRecord_categorie rec(TRecord_categorie::catdocs);
|
|
TRecord_categorie rec2(TRecord_categorie::annessi);
|
|
rec.put("NAME", "FATTACQ");
|
|
rec.read();
|
|
TString name = rec.get("NAME");
|
|
TString descr = rec.get("DESCR");
|
|
TString classdo = rec.get("CLASSDOCSOS");
|
|
TString caussos = rec.get("CAUSSOS");
|
|
TString causcon = rec.get("CAUSCONT");
|
|
TString tipodoc = rec.get("TIPODOC");
|
|
CHECK(name == "FATTACQ" && descr.starts_with("FATTURE") && classdo == "FTA" && caussos == "TD01"&& causcon.blank() && tipodoc == "FA", "TRecord_categorie failed to retrieve FATTACQ");
|
|
rec2.put("CATDOC", "FATTACQ");
|
|
bool ok = rec2.read();
|
|
CHECK(ok, "TRecord_categorie (annessi) failed to retrieve annessi FATTACQ");
|
|
for (; ok; ok = rec2.next())
|
|
{
|
|
TString s_catdoc = rec2.get("CATDOC");
|
|
TString s_name = rec2.get("NAME");
|
|
TString s_descr = rec2.get("DESCR");
|
|
TString s_tipoann = rec2.get("TIPOANN");
|
|
bool s_obblig = rec2.get("OBBLIG") == "X";
|
|
CHECK(s_catdoc == "FATTACQ" && s_tipoann == "DC" && !s_obblig && (s_name == "GENACQ" && s_descr.starts_with("Annesso generico") ||
|
|
s_name == "LEASING" && s_descr.starts_with("Annesso lea")),
|
|
"TRecord_categorie (annessi) failed to retrive annessi FATTACQ");
|
|
}
|
|
}
|
|
|
|
if (false)
|
|
{
|
|
TF9_doccart doccart;
|
|
TString old_numreg; old_numreg << 95752;
|
|
TFilename doc;
|
|
TString_array list_annessi;
|
|
vector<annesso_t> vect_annessi;
|
|
//TFilename f_doc; f_doc << "asd";
|
|
//bool annesso;
|
|
//bool doc_ae = doccart.doc_already_exists(f_doc, old_numreg, annesso);
|
|
bool movdoc = doccart.mov2doc(old_numreg, doc);
|
|
TString msg("Error retriving filename from reg n. "); msg << old_numreg;
|
|
CHECK(movdoc && TString(doc.name()) == "ve1300_F01_0000000011_0002237.pdf", (const char*)msg);
|
|
|
|
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);
|
|
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);
|
|
|
|
|
|
/*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);*/
|
|
}
|
|
|
|
if(false)
|
|
{
|
|
TF9Prospetto_integr prosp;
|
|
if (prosp("96951", "96952"))
|
|
{
|
|
TFilename tmp; tmp.tempdir();
|
|
tmp.add(prosp.filename().name());
|
|
tmp.ext("pdf");
|
|
#ifndef DBG
|
|
bool exp = prosp.export_pdf(tmp);
|
|
#else
|
|
bool exp = prosp.preview();
|
|
#endif
|
|
}
|
|
}
|
|
|
|
TCategorie_doc::annesso annesso;
|
|
if(categorie_doc().get_ann("INTREVC", annesso))
|
|
TEstrazione::make_prosp_int_revc(153480, annesso);
|
|
|
|
TString s = TEstrai_mask::get_numdoc_campo_fp(105396);
|
|
|
|
message_box("TESTS COMPLETELY SUCCESSFUL");
|
|
}
|
|
|
|
|
|
|
|
|
|
int f90400(const int argc, char* argv[])
|
|
{
|
|
TF9_test_app test_app;
|
|
test_app.run(argc, argv, "F9 Test Application");
|
|
return 0;
|
|
}
|