diff --git a/src/f9/f90300.cpp b/src/f9/f90300.cpp index e7d99fe37..9ee8ac055 100644 --- a/src/f9/f90300.cpp +++ b/src/f9/f90300.cpp @@ -58,7 +58,7 @@ bool TImport_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) case F_IMPNUMREG: if(e == fe_modify) { - const std::shared_ptr c = TCategorie_doc().mov2cat(o.get_int()); + const TCategorie_doc::classe_doc* c = TCategorie_doc().mov2cat(o.get_int()); if (c != nullptr) { set(F_CATANNPADRE, c->catdoc); diff --git a/src/f9/f90400.cpp b/src/f9/f90400.cpp index 557638d98..c6773b3e7 100644 --- a/src/f9/f90400.cpp +++ b/src/f9/f90400.cpp @@ -85,7 +85,7 @@ void TF9_test_app::main_loop() if (preload.get_ann("FATTACQ","GENACQ", annesso)) { } TCategorie_doc::classe_doc get_classe_doc_right{ "ACQREV", "Fattura acq. con rev. charge", "FTA", "TD01", "052", "FA" }; - std::shared_ptr get_classe_doc = preload.get_classe_doc("ACQREV"); + const 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 && @@ -101,7 +101,7 @@ void TF9_test_app::main_loop() get_name_catdocs.find("FATTCORR") != get_name_catdocs.end() && get_name_catdocs.find("ACQREV") != get_name_catdocs.end(), "Get catdocs failed" ); - std::shared_ptr mov2cat = preload.mov2cat(95752); + const 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."); @@ -109,10 +109,10 @@ void TF9_test_app::main_loop() const TString cat_selected = "FATTACQ"; TCategorie_doc catdoc; std::shared_ptr 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()); + CHECK(annessi->items() == 2, format(FR("TCategorie_doc::get_sheet_ann() failed: retrived %d elements instead of 2"), (int)annessi->items())); std::shared_ptr 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()); + CHECK(sheet_catdocs->items() == 6, format(FR("TCategorie_doc::get_sheet_catdocs() failed: retrived %d elements instead of 6"), (int)sheet_catdocs->items())); TRecord_categorie rec(TRecord_categorie::catdocs); @@ -205,7 +205,7 @@ void TF9_test_app::main_loop() if(categorie_doc.get_ann("FATTACQ","INTREVC", annesso)) TEstrazione::make_prosp_int_revc(153480, annesso); - TString s = TEstrai_mask::get_numdoc_exp_fp(105396); + TString s = get_numdoc_exp_fp(105396); message_box("TESTS COMPLETELY SUCCESSFUL"); } diff --git a/src/f9/f9lib01.cpp b/src/f9/f9lib01.cpp index fd270071f..3182b47d1 100644 --- a/src/f9/f9lib01.cpp +++ b/src/f9/f9lib01.cpp @@ -1090,7 +1090,30 @@ bool TEstrazione::estrazione_iva(bool escluso) iva_query.add(IVA_PIVA, paiv, 28); iva_query.add(IVA_CODFIS, codfis, 16); iva_query.add(IVA_CATDOC, it->catdoc()->catdoc, 10); - iva_query.add(IVA_CAUSSOS, it->catdoc()->caus_sost, 6); + + const TRegistro& reg = cached_registro(mov.get(MOV_REG), mov.get_int(MOV_ANNOIVA)); + + if (reg.iva() == iva_vendite) + iva_query.add(IVA_CAUSSOS, it->catdoc()->caus_sost, 6); // + else + { + TToken_string key(mov.get((MOV_KEYFPPRO)), ';'); + + if (key.full()) + { + TFppro fppro(key); + const TString& tipodoc = fppro.get_tipodoc(); + + if(tipodoc.full()) + iva_query.add(IVA_CAUSSOS, tipodoc, 6); + else + iva_query.add(IVA_CAUSSOS, it->catdoc()->caus_sost, 6); + } + else + iva_query.add(IVA_CAUSSOS, it->catdoc()->caus_sost, 6); + } + + iva_query.add(IVA_NUMDOC, it->numdoc(), 20); iva_query.add(IVA_DATADOC, datadoc);