diff --git a/cd/test/fp0708.txt b/cd/test/fp0708.txt new file mode 100644 index 000000000..4b195fd18 --- /dev/null +++ b/cd/test/fp0708.txt @@ -0,0 +1,3 @@ +fp0.exe +fp0100a.msk +fp0400a.msk diff --git a/cd/test/fp0708a.ini b/cd/test/fp0708a.ini new file mode 100644 index 000000000..5adcbe396 --- /dev/null +++ b/cd/test/fp0708a.ini @@ -0,0 +1,21 @@ +[Main] +Demo=0 + +[fp1] +File(0) = fp0.exe|X +File(1) = fp0100a.msk|X +File(4) = fp0400a.msk|X +Patch = 0708 +Versione = 21511200 + +[fp] +Data = 22-02-2019 +Descrizione = Fattura Elettronica +Dischi = 1 +Moduli = cg,ve +OEM = +Patch = 708 +PostProcess = +PreProcess = +Versione = 21511200 + diff --git a/cd/test/fp0708a1.zip b/cd/test/fp0708a1.zip new file mode 100644 index 000000000..d65bbe751 Binary files /dev/null and b/cd/test/fp0708a1.zip differ diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp index 03aaf3169..fd1b6809b 100644 --- a/src/fp/fplib01.cpp +++ b/src/fp/fplib01.cpp @@ -2072,11 +2072,11 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc) } else { - //ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} + //ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE} // Costruisco la chiamata static TString commandline; commandline.cut(0) << "ve1 -2 " << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO) - << ' ' << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << " X P"; // X: stampa su disco, P: provvisorio + << ' ' << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << " X P 1 D"; // X: stampa su disco, P: provvisorio, 1: 1 copia, D: disabilita archiviazione TExternal_app interattivo(commandline); if (interattivo.run() != NOERR) { diff --git a/src/ps/ps0017100.cpp b/src/ps/ps0017100.cpp index 0daa9af4b..f6c595aad 100755 --- a/src/ps/ps0017100.cpp +++ b/src/ps/ps0017100.cpp @@ -42,8 +42,8 @@ protected: public: bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag, char& accsal, int& rdist, int& reff, - bool& partially_unassigned, int& tipopag, bool is_old = false) const; - bool fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_new); + bool& partially_unassigned, int& tipopag, bool is_old = false, int ndist = 0 ) const; + bool fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_new, int ndist = 0); bool fill_rate(); int insert_row(const TToken_string& row); bool fill_distinta(bool clear_all = false); @@ -66,7 +66,7 @@ bool TPE_mask::calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag, char& accsal, int& rdist, int& reff, bool& partially_unassigned, int& tipopag, - bool is_old) const + bool is_old, int ndist) const { tipopag = scad.get_int(SCAD_TIPOPAG); const bool valuta = scad.in_valuta(); @@ -142,7 +142,7 @@ bool TPE_mask::calc_residual(const TRiga_scadenze& scad, for (cur = 0L; cur.pos() < items; ++cur) { TString8 effkey = effe.get(EFF_TIPODIST); effkey << effe.get(EFF_NDIST); - if (effkey == key) + if (effkey == key && (ndist == 0 || ndist != effe.get_int(EFF_NDIST))) { rdist = effe.get_int(EFF_NRIGADIST); reff = riga.get_int(REFF_NRIGATR); @@ -182,14 +182,14 @@ void TPE_mask::update_total() enable(DLG_SAVEREC); } -bool TPE_mask::fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_old) +bool TPE_mask::fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_old, int ndist) { const int tipopageff = get_int(F_TIPOPAGEFF); int tipopag; real impres, imppag; char accsal; int rigadist, rigaeff; row.cut(0); - bool ok = calc_residual(rs, impres, imppag, accsal, rigadist, rigaeff, partially_unassigned, tipopag, is_old) || force; + bool ok = calc_residual(rs, impres, imppag, accsal, rigadist, rigaeff, partially_unassigned, tipopag, is_old, ndist) || force; if (ok) ok = tipopag == tipopageff || tipopageff == 0; if (ok) @@ -381,8 +381,10 @@ bool TPE_mask::fill_rate() partite.freeze(); if (items > 0) { + TAssoc_array fatture; TRectype& partita = partite.curr(); + // qui TProgind pi(items, "Caricamento partite aperte", TRUE, TRUE); long last_cf = 0; @@ -443,7 +445,7 @@ bool TPE_mask::fill_rate() if (data >= dadata && (!adata.ok() || data <= adata)) { bool partially_unassigned; - if (fill_row(rs, row, partially_unassigned, false, false)) + if (fill_row(rs, row, partially_unassigned, false, false, ndist)) { const int numrow = sheet.items(); sheet.row(numrow) = row; @@ -613,7 +615,6 @@ void TPE_mask::save_rate() const TString& codval = get(F_CODVAL); const real cambio = get(F_CAMBIO); - const bool eurocambio = get_bool(F_EURO); bool zeroes = FALSE; // Esistono righe effetto da cancellare diff --git a/src/ps/ps0017100a.uml b/src/ps/ps0017100a.uml index 81e216072..8540f27c7 100755 --- a/src/ps/ps0017100a.uml +++ b/src/ps/ps0017100a.uml @@ -83,7 +83,6 @@ BEGIN OUTPUT F_CODVAL CODVAL OUTPUT F_CAMBIO CAMBIO OUTPUT F_DATACAMBIO DATACAMBIO - OUTPUT F_EURO CONTROEURO OUTPUT F_ABI CODABIP OUTPUT F_CAB CODCABP OUTPUT F_TIPOPAG TIPOPAG @@ -103,19 +102,12 @@ BEGIN DISPLAY "Contro\nEuro@6" B1 DISPLAY "Denominazione@50" S0 OUTPUT F_CODVAL CODTAB - OUTPUT F_EURO B1 CHECKTYPE NORMAL GROUP 3 MESSAGE EMPTY CLEAR,6@ MESSAGE ENABLE,6@ END -BOOLEAN F_EURO -BEGIN - PROMPT 64 1 "Contro Euro" - FLAGS "D" -END - DATE F_DATADIST BEGIN PROMPT 2 2 "Data " diff --git a/src/ve/ve1300.cpp b/src/ve/ve1300.cpp index bb0d19082..9aa2d029b 100755 --- a/src/ve/ve1300.cpp +++ b/src/ve/ve1300.cpp @@ -1096,6 +1096,8 @@ class TReport_doc_app : public TSkeleton_application char _tipocf; bool _no_print_dlg; + enum {_disabled, _force, _auto} _arc_type; + protected: void add_cli_filter(TString& query, bool from) const; void add_data_filter(TString& query, bool from) const; @@ -1398,6 +1400,10 @@ bool TReport_doc_app::print_loop(TRecordset& doc, TOutput_mode mode, bool final_ const TCodice_numerazione& cn = cached_numerazione(codnum); arc = cn.auto_archive(); } + + // Controllo se devo archiviare in base ai parametri passati + arc = (_arc_type == _force || _arc_type == _auto) && arc; + set_next_pdf(&doc); TToken_string to, cc; @@ -1648,6 +1654,11 @@ TReport_doc_app::TOutput_mode TReport_doc_app::key2mode(KEY k) const void TReport_doc_app::main_loop() { _no_print_dlg = false; // Normalmente mostra la GUI di stampa + + _arc_type = _auto; + + // Chiamata: ve1 -2 {CODNUM} {ANNO} {PROVV} {NDOC}(-{ANDOC}) {TIPO_ELABORAZIONE} {TIPO_STAMPA} {NUM_COPIE} {ARCHIVIAZIONE} + const int a = argc(); if (a > 2) { @@ -1697,6 +1708,24 @@ void TReport_doc_app::main_loop() _msk->set(F_NCOPIE, argv(8)); // Numero copie print_selection(mode); + + if(a > 9) + { + const TString arc_type = argv(9); + if(arc_type == "A") + { + _arc_type = _auto; + } + else if(arc_type == "D") + { + _arc_type = _disabled; + } + else if(arc_type == "F") + { + _arc_type = _force; + } + } + return; }