diff --git a/pa/pa0100.cpp b/pa/pa0100.cpp index 16f98d460..70055502b 100644 --- a/pa/pa0100.cpp +++ b/pa/pa0100.cpp @@ -569,6 +569,9 @@ void TPA_mask::fill() } } row->add(split ? "X" : " "); + + const bool attach = !doc_pa.get("COLL_GOLEM").is_empty(); + row->add(attach ? "X" : " "); sht.add(row); } @@ -910,9 +913,9 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) if (_ditta.partita_IVA().full()) { paf0200f.set("P2_FISCIVAPAESE", paese); // Sempre IT - paf0200f.set("P2_FISCIVACOD", _ditta.partita_IVA()); + paf0200f.set("P2_FISCIVACOD", _ditta.partita_IVA()); } - paf0200f.set("P2_CODFISCALE", _ditta.codice_fiscale()); + paf0200f.set("P2_CODFISCALE", _ditta.codice_fiscale()); if (_ditta.fisica()) { paf0200f.set("P2_ANANOME", _ditta.nome()); @@ -1429,49 +1432,27 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) paf2500f.insert(); } - TToken_string allegati = doc.get("COLL_GOLEM"); + TPaf_record paf2600f("PAF2600F"); + paf2600f.set("PP_KEYHEADERFATT", hfatt); + paf2600f.set("PP_KEYBODYFATT", bfatt); + paf2600f.remove(); // Cancella eventuali allegati + TToken_string allegati(doc.get("COLL_GOLEM"),'\n'); if (allegati.full()) { - TFilename fzip; - fzip = prefix().get_studio(); - fzip.add("sql"); fzip.add("attach"); - make_dir(fzip); - - TString20 code = bfatt; code.replace('/', '_'); - fzip.add(code); fzip << ".zip"; - + long nprogr = 0; // Numero di file allegati TFilename fname; - if (allegati.items() <= 2) // Una sola coppia (path|nome) + FOR_EACH_TOKEN(allegati, row) { - fname = allegati.get(0); - aga_zip(fname, fzip); - } - else - { - TFilename flist; flist.tempdir(); flist.add("ziplist.txt"); - ofstream list(flist); - FOR_EACH_TOKEN(allegati, str) + const TToken_string entry(row); + if (entry.get(0, fname) && fname.exist()) { - fname = str; - if (fname.exist()) - list << fname << endl; + paf2600f.set("PP_KEYNPROGR", ++nprogr); + paf2600f.set("PP_NOMEATTACHMENT", fname.name()); + paf2600f.set("PP_ATTACHMENT", fname); + fname.upper(); // serve estensione maiuscola + paf2600f.set("PP_FMTATTACHMENT", fname.ext()); + paf2600f.insert(); } - list.close(); - aga_zip_filelist(flist, fzip); - xvt_fsys_remove_file(flist); - } - - TPaf_record paf2600f("PAF2600F"); - paf2600f.set("PP_KEYHEADERFATT", hfatt); - paf2600f.set("PP_KEYBODYFATT", bfatt); - paf2600f.remove(); // Cancella allegati - if (fzip.exist()) - { - paf2600f.set("PP_NOMEATTACHMENT", fname.name()); - paf2600f.set("PP_FMTATTACHMENT", fname.ext()); - paf2600f.set("PP_ATTACHMENT", fzip); - paf2600f.set("PP_COMPRESSIONE", "ZIP"); - paf2600f.insert(); } } @@ -1613,23 +1594,27 @@ void TDoc2Paf::main_loop() _cofi = mask.get(F_COFI); TString_array& sht = mask.sfield(F_DOCS).rows_array(); - TProgress_monitor pi(sht.items(), NULL); - ndocs = 0; - FOR_EACH_ARRAY_ROW(sht, r, riga) + if (!sht.empty()) { - if (riga->starts_with("X")) + TProgress_monitor pi(sht.items(), NULL); + ndocs = 0; + FOR_EACH_ARRAY_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); - if (elabora(key)) - ndocs++; + 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); + if (elabora(key)) + ndocs++; + } + if (!pi.add_status(1)) + break; } - if (!pi.add_status(1)) - break; + message_box(FR("Sono stati elaborati %d documenti"), ndocs); } - message_box(FR("Sono stati elaborati %d documenti"), ndocs); + if (ndocs > 0 && show_log()) genera_xml(); } diff --git a/pa/pa0100a.h b/pa/pa0100a.h index 869dc51a6..b65d29bfc 100644 --- a/pa/pa0100a.h +++ b/pa/pa0100a.h @@ -14,4 +14,4 @@ #define S_RIFAMM 109 #define S_COFI 110 #define S_SPLITPAY 111 - +#define S_ATTACH 112 diff --git a/pa/pa0100a.uml b/pa/pa0100a.uml index e7ad748d6..686ca25d6 100644 --- a/pa/pa0100a.uml +++ b/pa/pa0100a.uml @@ -37,6 +37,7 @@ BEGIN ITEM "Riferimento\nAmministrazione@20" ITEM "Codice Fiscale@16" ITEM "Scissione\nPagamenti@9" + ITEM "Allegati" END ENDPAGE @@ -110,6 +111,13 @@ BEGIN FLAGS "D" END +BOOLEAN S_ATTACH +BEGIN + PROMPT 1 7 "Documenti in allegato" + FLAGS "D" +END + + ENDPAGE TOOLBAR "Documento" 0 0 0 2 diff --git a/pa/paf.ini b/pa/paf.ini index d879bb247..cbda723e5 100644 --- a/pa/paf.ini +++ b/pa/paf.ini @@ -444,6 +444,7 @@ INDEX_1 = PO_KEYHEADERFATT,PO_KEYBODYFATT,PO_KEYNPROGR PP_KEYHEADERFATT = CHAR(20) PP_KEYBODYFATT = CHAR(20) +PP_KEYNPROGR = INTEGER PP_NOMEATTACHMENT = CHAR(60) PP_COMPRESSIONE = CHAR(10) @@ -453,7 +454,7 @@ PP_ATTACHMENT = CHAR(256) PP_GESTIONE = CHAR(1) -INDEX_1 = PP_KEYHEADERFATT,PP_KEYBODYFATT +INDEX_1 = PP_KEYHEADERFATT,PP_KEYBODYFATT,PP_KEYNPROGR [PAF2700F] PQ_KEYHEADERFATT = CHAR(20)