diff --git a/src/tf/tf0100.cpp b/src/tf/tf0100.cpp index aaa3fa423..91dbbc8fc 100644 --- a/src/tf/tf0100.cpp +++ b/src/tf/tf0100.cpp @@ -1265,7 +1265,8 @@ bool TTrFa_app::tff0700(TSheet_field& sheet) IF_IS_ENABLED(strarr); - TString checkFatt; checkFatt << strarr->get_char(_tipocf) << "," << strarr->get_long(_codcf) << "," << strarr->get(_numdoc); + // Chiave: Tipo C/F, Cod C/F, Numero doc. anno doc + TString checkFatt; checkFatt << strarr->get_char(_tipocf) << "," << strarr->get_long(_codcf) << "," << strarr->get(_numdoc) << "," << TString(strarr->get(_datadoc)).right(4); if(fattSent.get_pos(checkFatt) < 0) { fattSent.add(checkFatt); diff --git a/src/tf/tf0400.cpp b/src/tf/tf0400.cpp index 92de7fff7..b43542d47 100644 --- a/src/tf/tf0400.cpp +++ b/src/tf/tf0400.cpp @@ -6,6 +6,7 @@ #include #include #include // cache() +#include "felib.h" // TAnagrafica /**************************************************************************************************** @@ -14,14 +15,24 @@ class TSpeCheck_msk : public TAutomask { +private: + TAnagrafica _ditta; + bool _selected; + + void refresh(); void fillNoFilter(); void fillDiff(); + void foundHomeland(TToken_string& row, TString numreg, TString codiva, TRectype& clifo); void fillCust(); void getFilFlag(TString& query); void enableEdit(bool en); + void selectAll(); + void saveAll(); + void deleteAll(); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: - TSpeCheck_msk() : TAutomask("tf0400a"){} + TSpeCheck_msk(); + virtual ~TSpeCheck_msk() {}; }; bool TSpeCheck_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) @@ -30,29 +41,47 @@ bool TSpeCheck_msk::on_field_event(TOperable_field& o, TField_event e, long joll { case DLG_RECALC: if(e != fe_button) break; + refresh(); + break; case F_TIPOCONTROLLO: - { - switch(o.mask().get_long(F_TIPOCONTROLLO)) - { - case 0: - fillNoFilter(); - break; - case 1: - fillDiff(); - break; - case 2: - fillCust(); - default: - break; - } - } + if(e != fe_modify) break; + refresh(); + break; + case DLG_ALL: + if(e != fe_button) break; + selectAll(); + break; + case DLG_SAVEREC: + saveAll(); + break; + case DLG_DELREC: + deleteAll(); break; default: break; + } return true; } +void TSpeCheck_msk::refresh() +{ + switch(get_long(F_TIPOCONTROLLO)) + { + case 0: + fillNoFilter(); + break; + case 1: + fillDiff(); + break; + case 2: + fillCust(); + default: + break; + } + return; +} + void TSpeCheck_msk::fillNoFilter() { TString query = "USE RMOVIVA\n"; @@ -61,17 +90,264 @@ void TSpeCheck_msk::fillNoFilter() query << "&&STR((23.CODCF=#CODCF))"; getFilFlag(query); + + query << "\nJOIN MOV INTO NUMREG==NUMREG\n"; + + TISAM_recordset rset(query); + + TDate dadatareg = get_date(F_DATAINI); + if(!dadatareg.ok()) + { + dadatareg = TDate(01, 01, 2017); + set(F_DATAINI, dadatareg); + } + + TDate adatareg = get_date(F_DATAFIN); + if(!adatareg.ok()) + { + adatareg = TDate(TODAY); + set(F_DATAFIN, adatareg); + } + + // Setto le variabili + rset.set_var("#DADATAREG", dadatareg); + rset.set_var("#ADATAREG", adatareg); + if(get(F_CODCF) != "") + rset.set_var("#CODCF", get(F_CODCF)); + + int nrec = rset.items(); + + TSheet_field& s = sfield(F_RIGHE); + if(s.items() > 0) + s.destroy(); + + if(nrec <= 0) return; + // Nascondo lo sheet + s.hide(); + + for(bool ok = rset.move_first(); ok; ok = rset.move_next()) + { + // Devo prendere tutti quelli che non vanno bene di records + if(checkRecord(&rset)) continue; + + TRectype clifo = getCli(rset.get("23.TIPO").as_string(), rset.get("23.CODCF").as_string(), rset.get("23.OCCAS").as_string()); + TToken_string& row = s.row(-1); + + row.add(rset.get("23.DATAREG").as_string(), s.cid2index(A_DATAREG)); + row.add(rset.get("23.TIPODOC").as_string(), s.cid2index(A_TIPODOC)); + row.add(rset.get("23.NUMDOC").as_string(), s.cid2index(A_NUMDOC)); + row.add(rset.get("23.DATADOC").as_string(), s.cid2index(A_DATADOC)); + row.add(rset.get("25.CODIVA").as_string(), s.cid2index(A_ALIQUOTA)); + row.add(rset.get("25.IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE)); + row.add(rset.get("25.IMPOSTA").as_string(), s.cid2index(A_IMPOSTA)); + // NATURA + row.add(natura(rset.get("25.CODIVA").as_string()), s.cid2index(A_NATURA)); + // DETR + row.add(findDetraib(rset.get("25.TIPODET").as_string()), s.cid2index(A_DETRAIB)); + + row.add(rset.get("23.TIPO").as_string(), s.cid2index(A_TIPOCF)); + row.add(rset.get("23.CODCF").as_string(), s.cid2index(A_CODCF)); + row.add(rset.get("23.OCCAS").as_string(), s.cid2index(A_OCFPI)); + // RSOC + row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC)); + // RFSO + row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO)); + // RSOC RFSO + row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); + // RC + row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE)); + // AUTOFATT + if(_ditta.partita_IVA() == clifo.get("PAIV")) + { + row.add("X", s.cid2index(A_AUTOFATT)); + row.add(_ditta.partita_IVA(), s.cid2index(A_PAIV)); + row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI)); + } + else + { + row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt + row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA + row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale + } + row.add(rset.get("23.TFINVIO").as_bool() ? "X" : "", s.cid2index(A_SPEDITA)); + row.add(rset.get("23.NUMREG").as_string(), s.cid2index(A_NUMERO)); + } + s.force_update(); + s.show(); + enableEdit(false); } void TSpeCheck_msk::fillDiff() { + // Apro la tabella TRASFATT e per ogni record lo ricostruisco l'originale + TString query = "USE TRASFATT\n"; + query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&NUMREG<" << MOV_CUSTOM << "&&(TIPO=\"" << get(F_TIPOCF) << "\")"; + if(get(F_CODCF) != "") + query << "&&STR((CODCF=#CODCF))"; + getFilFlag(query); + + TISAM_recordset rset(query); + TDate dadatareg = get_date(F_DATAINI); + if(!dadatareg.ok()) + { + dadatareg = TDate(01, 01, 2017); + set(F_DATAINI, dadatareg); + } + + TDate adatareg = get_date(F_DATAFIN); + if(!adatareg.ok()) + { + adatareg = TDate(TODAY); + set(F_DATAFIN, adatareg); + } + + // Setto le variabili + rset.set_var("#DADATAREG", dadatareg); + rset.set_var("#ADATAREG", adatareg); + if(get(F_CODCF) != "") + rset.set_var("#CODCF", get(F_CODCF)); + + int nrec = rset.items(); + + TSheet_field& s = sfield(F_RIGHE); + if(s.items() > 0) + s.destroy(); + + if(nrec <= 0) return; + // Nascondo lo sheet + s.hide(); + + TString nat; + + for(bool ok = rset.move_first(); ok; ok = rset.move_next()) + { + TRectype clifo = getCli(rset.get("TIPO").as_string(), rset.get("CODCF").as_string(), rset.get("OCCAS").as_string()); + + // Creo la riga della prima nota + TToken_string& orig = s.row(-1); + foundHomeland(orig, rset.get("NUMREG").as_string(), rset.get("CODIVA").as_string(), clifo); + + TToken_string& row = s.row(-1); + + row.add(rset.get("DATAREG").as_string(), s.cid2index(A_DATAREG)); + row.add(rset.get("TIPODOC").as_string(), s.cid2index(A_TIPODOC)); + row.add(rset.get("NUMDOC").as_string(), s.cid2index(A_NUMDOC)); + row.add(rset.get("DATADOC").as_string(), s.cid2index(A_DATADOC)); + row.add(rset.get("CODIVA").as_string(), s.cid2index(A_ALIQUOTA)); + row.add(rset.get("IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE)); + row.add(rset.get("IMPOSTA").as_string(), s.cid2index(A_IMPOSTA)); + // NATURA + nat.cut(0) << rset.get("NATURA").as_string(); + row.add(nat.full() ? nat : natura(rset.get("CODIVA").as_string()), s.cid2index(A_NATURA)); + // DETR + row.add(findDetraib(rset.get("TIPODET").as_string()), s.cid2index(A_DETRAIB)); + + row.add(rset.get("TIPO").as_string(), s.cid2index(A_TIPOCF)); + row.add(rset.get("CODCF").as_string(), s.cid2index(A_CODCF)); + row.add(rset.get("OCCAS").as_string(), s.cid2index(A_OCFPI)); + // RSOC + row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC)); + // RFSO + row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO)); + // RSOC RFSO + row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); + // RC + row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE)); + // AUTOFATT + if(rset.get("AUTOFATT").as_string() == "X" || _ditta.partita_IVA() == clifo.get("PAIV")) + { + row.add("X", s.cid2index(A_AUTOFATT)); + row.add(_ditta.partita_IVA() , s.cid2index(A_PAIV)); + row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI)); + } + else + { + row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt + row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA + row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale + } + row.add(rset.get("TFINVIO").as_bool() ? "X" : "", s.cid2index(A_SPEDITA)); + row.add(rset.get("NUMREG").as_string(), s.cid2index(A_NUMERO)); + } + s.force_update(); + s.show(); + enableEdit(true); } + +void TSpeCheck_msk::foundHomeland(TToken_string& row, TString numreg, TString codiva, TRectype& clifo) +{ + TSheet_field& s = sfield(F_RIGHE); + static TLocalisamfile mov(LF_MOV), rmov(LF_RMOVIVA); + TRectype recMov(LF_MOV), recRmov(LF_RMOVIVA); + + recMov.put("NUMREG", numreg); + recRmov.put("NUMREG", numreg); + mov.read(recMov); + rmov.read(recRmov); + + real imponibile = ZERO, imposta = ZERO; + + while(!rmov.eof()) + { + // Mi sposto se il codice IVA non è quello che mi serve + while(recRmov.get("NUMREG") == numreg && recRmov.get("CODIVA") != codiva) + { + ++rmov; + recRmov = rmov.curr(); + } + if(recRmov.get("NUMREG") != numreg) break; + imponibile += recRmov.get_real("IMPONIBILE"); + imposta += recRmov.get_real("IMPOSTA"); + + // Mi sposto + ++rmov; + recRmov = rmov.curr(); + } + // Torno sul record per prendere i dati che mi mancano + --rmov; recRmov = rmov.curr(); + row.add(recMov.get("DATAREG"), s.cid2index(A_DATAREG)); + row.add(recMov.get("TIPODOC"), s.cid2index(A_TIPODOC)); + row.add(recMov.get("NUMDOC"), s.cid2index(A_NUMDOC)); + row.add(recMov.get("DATADOC"), s.cid2index(A_DATADOC)); + row.add(recRmov.get("CODIVA"), s.cid2index(A_ALIQUOTA)); + row.add(imponibile, s.cid2index(A_IMPONIBILE)); + row.add(imposta, s.cid2index(A_IMPOSTA)); + // NATURA + row.add(natura(recRmov.get("CODIVA")), s.cid2index(A_NATURA)); + // DETR + row.add(findDetraib(recRmov.get("TIPODET")), s.cid2index(A_DETRAIB)); + + row.add(recMov.get("TIPO"), s.cid2index(A_TIPOCF)); + row.add(recMov.get("CODCF"), s.cid2index(A_CODCF)); + row.add(recMov.get("OCFPI"), s.cid2index(A_OCFPI)); + // RSOC + row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC)); + // RFSO + row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO)); + // RSOC RFSO + row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); + // RC + row.add((revCharge(recMov.get("NUMREG"))), s.cid2index(A_REVERSE)); + // AUTOFATT + if(_ditta.partita_IVA() == clifo.get("PAIV")) + { + row.add("X", s.cid2index(A_AUTOFATT)); + row.add(_ditta.partita_IVA() , s.cid2index(A_PAIV)); + row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI)); + } + else + { + row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt + row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA + row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale + } + row.add(recMov.get_bool("TFINVIO") ? "X" : "", s.cid2index(A_SPEDITA)); + row.add(recMov.get("NUMREG"), s.cid2index(A_NUMERO)); +} + + void TSpeCheck_msk::fillCust() { - TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR"); - static const TString pivaDitta = cache().get(LF_ANAG, key, "PAIV"); - static const TString cofiDitta = cache().get(LF_ANAG, key, "COFI"); - TString query = "USE TRASFATT\n"; query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << get(F_TIPOCF) << "\")"; if(get(F_CODCF) != "") @@ -104,11 +380,15 @@ void TSpeCheck_msk::fillCust() int nrec = rset.items(); TSheet_field& s = sfield(F_RIGHE); + if(s.items() > 0) + s.destroy(); + + if(nrec <= 0) return; + // Nascondo lo sheet s.hide(); + TString nat; - if(!s.empty()) - s.destroy(); for(bool ok = rset.move_first(); ok; ok = rset.move_next()) { TRectype clifo = getCli(rset.get("TIPO").as_string(), rset.get("CODCF").as_string(), rset.get("OCCAS").as_string()); @@ -117,11 +397,13 @@ void TSpeCheck_msk::fillCust() row.add(rset.get("DATAREG").as_string(), s.cid2index(A_DATAREG)); row.add(rset.get("TIPODOC").as_string(), s.cid2index(A_TIPODOC)); row.add(rset.get("NUMDOC").as_string(), s.cid2index(A_NUMDOC)); + row.add(rset.get("DATADOC").as_string(), s.cid2index(A_DATADOC)); row.add(rset.get("CODIVA").as_string(), s.cid2index(A_ALIQUOTA)); row.add(rset.get("IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE)); row.add(rset.get("IMPOSTA").as_string(), s.cid2index(A_IMPOSTA)); // NATURA - row.add(natura(rset.get("CODIVA").as_string()), s.cid2index(A_NATURA)); + nat.cut(0) << rset.get("NATURA").as_string(); + row.add(nat.full() ? nat : natura(rset.get("CODIVA").as_string()), s.cid2index(A_NATURA)); // DETR row.add(findDetraib(rset.get("TIPODET").as_string()), s.cid2index(A_DETRAIB)); @@ -137,19 +419,19 @@ void TSpeCheck_msk::fillCust() // RC row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE)); // AUTOFATT - if(rset.get("AUTOFATT").as_string() == "X" || pivaDitta == clifo.get("PAIV")) + if(rset.get("AUTOFATT").as_string() == "X" || _ditta.partita_IVA() == clifo.get("PAIV")) { - row.add("X", s.cid2index(A_AUTOFATT)); - row.add(pivaDitta, s.cid2index(A_PAIV)); - row.add(cofiDitta, s.cid2index(A_COFI)); + row.add("X", s.cid2index(A_AUTOFATT)); + row.add(_ditta.partita_IVA() , s.cid2index(A_PAIV)); + row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI)); } else { row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt - row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA - row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale + row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA + row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale } - row.add(rset.get("TFINVIO").as_string() == "X", s.cid2index(A_SPEDITA)); + row.add(rset.get("TFINVIO").as_bool() ? "X" : "", s.cid2index(A_SPEDITA)); row.add(rset.get("NUMREG").as_string(), s.cid2index(A_NUMERO)); } s.force_update(); @@ -178,24 +460,97 @@ void TSpeCheck_msk::getFilFlag(TString& query) void TSpeCheck_msk::enableEdit(bool en) { // Abilito i bottoni + enable(DLG_ALL,en); enable(DLG_SAVEREC,en); - enable(DLG_CANCEL, en); + enable(DLG_DELREC, en); TSheet_field& s = sfield(F_RIGHE); + // Abilito/Disabilito le colonne + s.enable_column(s.cid2index(A_ELIMINA), en); + s.enable_column(s.cid2index(A_DATAREG),en); + s.enable_column(s.cid2index(A_TIPODOC),en); + s.enable_column(s.cid2index(A_NUMDOC),en); + s.enable_column(s.cid2index(A_DATADOC),en); + s.enable_column(s.cid2index(A_ALIQUOTA),en); + s.enable_column(s.cid2index(A_IMPONIBILE),en); + s.enable_column(s.cid2index(A_IMPOSTA),en); + s.enable_column(s.cid2index(A_NATURA),en); + s.enable_column(s.cid2index(A_TIPOCF),en); + s.enable_column(s.cid2index(A_CODCF),en); + s.enable_column(s.cid2index(A_OCFPI),en); +} - // Abilito i campi - enable(A_ELIMINA,en); - enable(A_DATAREG,en); - enable(A_TIPODOC,en); - enable(A_NUMDOC,en); - enable(A_DATADOC,en); - enable(A_ALIQUOTA,en); - enable(A_IMPONIBILE,en); - enable(A_IMPOSTA,en); - enable(A_NATURA,en); - enable(A_TIPOCF,en); - enable(A_CODCF,en); - enable(A_OCFPI,en); +void TSpeCheck_msk::selectAll() +{ + _selected = !_selected; + TSheet_field& s = sfield(F_RIGHE); + FOR_EACH_SHEET_ROW(s, r, strarr) + { + strarr->add(_selected ? "X" : "", s.cid2index(A_ELIMINA)); + } + s.force_update(); +} + +void TSpeCheck_msk::saveAll() +{ + TSheet_field& s = sfield(F_RIGHE); + FOR_EACH_SHEET_ROW(s, r, strarr) + { + // Salto tutte le righe provenienti dalla prima nota + if(get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0) continue; + /* Salvo il record modificato in TFCustom */ + static TLocalisamfile trasfatt(LF_TRASFATT); + + TString key = strarr->get(s.cid2index(A_NUMERO)); key << "|"<< strarr->get(s.cid2index(A_ALIQUOTA)); + + TRectype rCust = cache().get(LF_TRASFATT, key); + rCust.put("TIPO", strarr->get(s.cid2index(A_TIPOCF))); + rCust.put("CODCF", strarr->get(s.cid2index(A_CODCF))); + rCust.put("OCCAS", strarr->get(s.cid2index(A_OCFPI))); + rCust.put("TIPODOC", strarr->get(s.cid2index(A_TIPODOC))); + rCust.put("NUMDOC", strarr->get(s.cid2index(A_NUMDOC))); + rCust.put("DATAREG", strarr->get(s.cid2index(A_DATAREG))); + rCust.put("DATADOC", strarr->get(s.cid2index(A_DATADOC))); + rCust.put("IMPONIBILE", strarr->get(s.cid2index(A_IMPONIBILE))); + rCust.put("IMPOSTA", strarr->get(s.cid2index(A_IMPOSTA))); + rCust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA))); + rCust.put("NATURA", strarr->get(s.cid2index(A_NATURA))); + rCust.put("AUTOFATT", strarr->get(s.cid2index(A_AUTOFATT))); + if(rCust.rewrite(trasfatt) != NOERR) + { + error_box("Errore durante il salvataggio del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA))); + return; + } + } +} + +void TSpeCheck_msk::deleteAll() +{ + TSheet_field& s = sfield(F_RIGHE); + FOR_EACH_SHEET_ROW(s, r, strarr) + { + // Salto tutte le righe non selezionate e/o provenienti dalla prima nota + bool first = strcmp(strarr->get(s.cid2index(A_ELIMINA)), "X") != 0; + bool second = (get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0); + if(strcmp(strarr->get(s.cid2index(A_ELIMINA)), "X") != 0 || (get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0)) continue; + + static TLocalisamfile trasfatt(LF_TRASFATT); + static TRectype rCust(LF_TRASFATT); + rCust.put("NUMREG", strarr->get(s.cid2index(A_NUMERO))); + rCust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA))); + + if(rCust.remove(trasfatt) != NOERR) + { + error_box("Errore durante l'eliminazione del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA))); + return; + } + } +} + +TSpeCheck_msk::TSpeCheck_msk() : TAutomask("tf0400a") +{ + _ditta.init(LF_NDITTE, prefix().get_codditta()); + _selected = false; } /**************************************************************************************************** diff --git a/src/tf/tf0400a.uml b/src/tf/tf0400a.uml index 716b15507..2e92c0a15 100644 --- a/src/tf/tf0400a.uml +++ b/src/tf/tf0400a.uml @@ -8,13 +8,19 @@ BEGIN PICTURE TOOL_CONVERT END +BUTTON DLG_ALL 2 2 +BEGIN + PROMPT 1 1 "Seleziona" + PICTURE TOOL_MULTISEL +END + BUTTON DLG_SAVEREC 2 2 BEGIN PROMPT 1 1 "Salva" PICTURE TOOL_SAVEREC END -BUTTON DLG_CANCEL 2 2 +BUTTON DLG_DELREC 2 2 BEGIN PROMPT 1 1 "Elimina" PICTURE TOOL_DELREC @@ -30,7 +36,7 @@ BEGIN PROMPT 1 0 "Controllo da effettuare" ITEM "0|Movimenti esclusi" ITEM "1|Differenze Prima Nota/Spesometro" - ITEM "2|Visualizza tutti i movimenti Spesometro" + ITEM "2|Mostra tutti i movimenti modificati" FLAGS "" END @@ -141,7 +147,6 @@ END BOOLEAN A_SPEDITA BEGIN PROMPT 52 10 "Gia' spedita" - FIELD SPEDITA FLAGS "D" END @@ -149,19 +154,20 @@ NUMBER A_NUMERO 10 BEGIN PROMPT 1 0 "N.Movimento" FLAGS "D" - FIELD PROGR END DATE A_DATAREG BEGIN PROMPT 26 0 "Data reg." - FIELD DATAREG FLAGS "D" + CHEKTYPE REQUIRED END -STRING A_TIPOCF 1 +LIST A_TIPOCF 1 10 BEGIN PROMPT 1 1 "Tipo C/F " + ITEM "C|Cliente" + ITEM "F|Fornitore" FIELD TIPOCF FLAGS "D" END @@ -169,27 +175,49 @@ END NUMBER A_CODCF 6 BEGIN PROMPT 26 1 "Cod. C/F" + USE LF_CLIFO + INPUT TIPOCF A_TIPOCF SELECT + INPUT CODCF A_CODCF + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Occasionale@C" OCCAS + DISPLAY "Partita IVA" PAIV + DISPLAY "Codice fiscale@16" COFI + OUTPUT A_CODCF CODCF + OUTPUT A_RAGSOC RAGSOC + OUTPUT A_PAIV PAIV + OUTPUT A_COFI COFI + ADD RUN cg0 -1 FIELD CODCF - FLAGS "D" END STRING A_OCFPI 16 BEGIN PROMPT 44 1 "Occas." + USE LF_OCCAS + INPUT CFPI A_OCFPI + DISPLAY "Codice@16" CFPI + DISPLAY "Ragione Sociale@50" RAGSOC + DISPLAY "Partita IVA" PAIV + DISPLAY "Codice fiscale@16" COFI + OUTPUT A_OCFPI CFPI + OUTPUT A_RAGSOC RAGSOC + OUTPUT A_PAIV PAIV + OUTPUT A_COFI COFI + CHEKTYPE NORMAL + GROUP 3 + ADD RUN cg0 -6 FIELD OCFPI - FLAGS "D" END STRING A_RAGSOC 50 47 BEGIN - FIELD RAGSOC PROMPT 1 2 "Ragione Sociale" FLAGS "D" END STRING A_RFSO 6 BEGIN - FIELD RFSO PROMPT 1 4 "Codice RF/SO: " HELP "Codice Rappresentante Fiscale o Stabile Organizzazione" FLAGS "D" @@ -197,7 +225,6 @@ END STRING A_RAGSOCRFSO 50 47 BEGIN - FIELD RAGSOCRFSO PROMPT 1 5 "Rag. Soc. RF/SO" HELP "Ragione Sociale RF/SO" FLAGS "D" @@ -207,28 +234,42 @@ STRING A_TIPODOC 2 BEGIN PROMPT 23 6 "Tipo doc. " FIELD TIPODOC - FLAGS "D" + USE %TPD + INPUT CODTAB A_TIPODOC + DISPLAY "Tipo " CODTAB + DISPLAY "Descrizione @50" S0 + OUTPUT A_TIPODOC CODTAB + WARNING "Tipo documento errato" + CHECKTYPE REQUIRED + FLAGS "U" + ADD NONE END STRING A_NUMDOC 7 BEGIN PROMPT 42 6 "Num. doc. " - FIELD NUMDOC FLAGS "D" + CHEKTYPE REQUIRED END DATE A_DATADOC BEGIN PROMPT 1 6 "Data doc." - FIELD DATADOC FLAGS "D" + CHEKTYPE REQUIRED END -STRING A_NATURA 2 +LIST A_NATURA 1 35 BEGIN PROMPT 20 7 "Natura IVA" - FIELD S12 - FLAGS "D" + ITEM "|IVA ordinaria" + ITEM "N1|N1 - IVA esclusa ex art 15" + ITEM "N2|N2 - IVA non soggetta" + ITEM "N3|N3 - IVA non imponibile" + ITEM "N4|N4 - IVA esente" + ITEM "N5|N5 - IVA in regime del margine" + ITEM "N6|N6 - IVA in reverse charge" + ITEM "N7|N7 - IVA assolta in altro stato U3" END STRING A_ALIQUOTA 4 @@ -236,12 +277,24 @@ BEGIN PROMPT 1 7 "Aliquota " HELP "Codice aliquota" FIELD CODTAB - FLAGS "D" + KEY 1 + USE %IVA + FLAGS "U" + INPUT CODTAB A_ALIQUOTA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + DISPLAY "Tipo" S1 + DISPLAY "%@5" R0 + DISPLAY "Vent." S6 + DISPLAY "Sospeso" B2 + OUTPUT A_ALIQUOTA CODTAB + CHECKTYPE REQUIRED + VALIDATE ZEROFILL_FUNC 2 END STRING A_DETRAIB 6 BEGIN - PROMPT 1 8 "% Detraibilita'" + PROMPT 1 8 "% Detraibilita'" HELP "Percentuale di detraibilita'" FLAGS "D" END @@ -249,28 +302,24 @@ END NUMBER A_IMPONIBILE 12 2 BEGIN PROMPT 42 8 "Imponibile" - FIELD IMPORTO FLAGS "D" END NUMBER A_IMPOSTA 12 2 BEGIN - PROMPT 42 9 "Imposta " - FIELD IMPOSTA + PROMPT 42 9 "Imposta " FLAGS "D" END BOOLEAN A_REVERSE BEGIN PROMPT 1 9 "Reverse charge" - FIELD REVERSE FLAGS "D" END BOOLEAN A_AUTOFATT BEGIN PROMPT 25 9 "Autofattura" - FIELD AUTOFATT FLAGS "D" END @@ -286,4 +335,32 @@ BEGIN FLAGS "D" END +ENDPAGE + +TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_OK 2 2 +BEGIN + PROMPT 1 1 "" +END + +BUTTON DLG_USER 2 2 +BEGIN + PROMPT 2 1 "Collega" + PICTURE TOOL_LINK +END + +BUTTON DLG_DELREC 2 2 +BEGIN + PROMPT 2 1 "Elimina" + PICTURE TOOL_DELREC +END + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 4 1 "" +END + +ENDPAGE + ENDMASK \ No newline at end of file diff --git a/src/tf/tftbcon.h b/src/tf/tftbcon.h deleted file mode 100644 index 8d95a629e..000000000 --- a/src/tf/tftbcon.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef __TFTBCON_H -#define __TFTBCON_H - -#define F_CON_TIPO 101 -#define F_CON_CODCF 102 -#define F_CON_RAGSOC 112 -#define F_CON_CODICE 103 -#define F_CON_DESCRIZIONE 113 -#define F_CON_DATA 104 -#define F_CON_RIFAMM 105 -#define F_CON_CAUS1 121 -#define F_CON_CAUS2 122 -#define F_CON_CAUS3 123 - -#endif - - diff --git a/src/tf/tftbcon.uml b/src/tf/tftbcon.uml deleted file mode 100644 index f041d97ac..000000000 --- a/src/tf/tftbcon.uml +++ /dev/null @@ -1,142 +0,0 @@ -#include "tftbcon.h" - -TOOLBAR "topbar" 0 0 0 2 -#include -ENDPAGE - -PAGE "Contratti per PA" 0 2 0 0 - -GROUPBOX DLG_NULL 78 5 -BEGIN - PROMPT 1 0 "@bEstremi contratto/convenzione/ordine P.A." -END - -LIST F_CON_TIPO 1 11 -BEGIN - PROMPT 2 1 "Tipo " - ITEM "C|Contratto" - ITEM "V|Convenzione" - ITEM "O|Ordine" - FIELD CODTAB[1,1] - KEY 1 -END - -NUMBER F_CON_CODCF 6 -BEGIN - PROMPT 2 2 "Cliente " - USE LF_CFVEN SELECT PADESTIN!="" - JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF - INPUT TIPOCF "C" - INPUT CODCF F_CON_CODCF - DISPLAY "Codice" CODCF - DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC - DISPLAY "Destinatario" PADESTIN - DISPLAY "Riferimento amm.@20" PARIFAMM - OUTPUT F_CON_CODCF CODCF - OUTPUT F_CON_RAGSOC LF_CLIFO->RAGSOC - CHECKTYPE REQUIRED - FIELD CODTAB[2,7] - KEY 1 - MESSAGE EMPTY ENABLE,F_CON_RAGSOC - MESSAGE DISABLE,F_CON_RAGSOC -END - -STRING F_CON_RAGSOC 50 -BEGIN - PROMPT 24 2 "" - USE LF_CLIFO KEY 2 SELECT LF_CFVEN->PADESTIN!="" - JOINT LF_CFVEN INTO TIPOCF==TIPOCF CODCF==CODCF - INPUT TIPOCF "C" - INPUT RAGSOC F_CON_RAGSOC - DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Codice" CODCF - DISPLAY "Destinatario" LF_CFVEN->PADESTIN - DISPLAY "Riferimento amm.@20" LF_CFVEN->PARIFAMM - COPY OUTPUT F_CON_CODCF - CHECKTYPE NORMAL -END - -STRING F_CON_CODICE 20 -BEGIN - PROMPT 2 3 "Numero " - FLAGS "U" - FIELD CODTAB[8,27] - USE &CON - JOIN LF_CLIFO INTO TIPOCF="C" CODCF=CODTAB[2,7] - INPUT CODTAB[1,1] F_CON_TIPO SELECT - INPUT CODTAB[2,7] F_CON_CODCF SELECT - INPUT CODTAB[8,27] F_CON_CODICE - DISPLAY "Tipo" CODTAB[1,1] - DISPLAY "Numero@20" CODTAB[8,] - DISPLAY "Descrizione@50" S0 - DISPLAY "Cliente" CODTAB[2,7] - DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC - OUTPUT F_CON_CODCF CODTAB[2,7] - OUTPUT F_CON_CODICE CODTAB[8,] - OUTPUT F_CON_DESCRIZIONE S0 - CHECKTYPE REQUIRED - KEY 1 -END - - -GROUPBOX DLG_NULL 78 5 -BEGIN - PROMPT 1 5 "@bDati contratto/convenzione/ordine P.A." -END - -STRING F_CON_DESCRIZIONE 70 50 -BEGIN - PROMPT 2 6 "Descrizione " - FIELD S0 - USE &CON KEY 2 SELECT (CODTAB[1,1]==#F_CON_TIPO)&&(STR(CODTAB[2,7]=#F_CON_CODCF)) - JOIN LF_CLIFO INTO TIPOCF=CODTAB[1,1] CODCF=CODTAB[2,7] - INPUT S0 F_CON_DESCRIZIONE - DISPLAY "Tipo" CODTAB[1,1] - DISPLAY "Descrizione@50" S0 - DISPLAY "Numero@20" CODTAB[8,] - DISPLAY "Cliente" CODTAB[2,7] - DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC - CHECKTYPE REQUIRED - COPY OUTPUT F_CON_CODICE - KEY 2 -END - -DATA F_CON_DATA -BEGIN - PROMPT 2 7 "Data " - FIELD D0 -END - -STRING F_CON_RIFAMM 20 -BEGIN - PROMPT 24 7 "Riferimento amministrazione " - FIELD S4 -END - -GROUPBOX DLG_NULL 78 5 -BEGIN - PROMPT 1 10 "@bCausale" -END - -STRING F_CON_CAUS1 50 -BEGIN - PROMPT 14 11 "" - FIELD S1 -END - -STRING F_CON_CAUS2 50 -BEGIN - PROMPT 14 12 "" - FIELD S2 -END - -STRING F_CON_CAUS3 50 -BEGIN - PROMPT 14 13 "" - FIELD S3 -END - -ENDPAGE -ENDMASK - - diff --git a/src/tf/totiva_aliq.msk b/src/tf/totiva_aliq.msk new file mode 100644 index 000000000..ef431d307 --- /dev/null +++ b/src/tf/totiva_aliq.msk @@ -0,0 +1,67 @@ +TOOLBAR "topbar" 0 0 0 2 +BU 24 2 2 +BE +PR 1 1 "Stampa" +PI 118 +EN +BU 25 2 2 +BE +PR 1 1 "Imposta" +PI 165 +EN +BU -1 2 2 +BE +PR -1 1 "" +PI 0 +EN +BU 33 2 2 +BE +PR 9 1 "Info" +ME EXIT,332 +PI 162 +EN +BU 34 2 2 +BE +PR 10 1 "Help" +ME EXIT,331 +PI 163 +EN +BU -1 2 2 +BE +PR -1 0 "" +PI 0 +EN +BU 9 2 2 +BE +PR 12 1 "Fine" +ME EXIT,20334 +PI 114 +EN +EN +PA "Totali IVA per Aliquota " 0 0 0 0 +DA 120 +BE +PR 22 3 "Data Iniziale" +FI DADATA +CH REQUIRED +VA 5 2 <= 121 +FL "P" +WA "La data iniziale non puo' essere maggiore della data finale" +EN +DA 121 +BE +PR 22 4 "Data Finale " +FI ADATA +CH REQUIRED +VA 5 2 >= 120 +WA "La data finale non puo' essere minore della data iniziale" +FL "A" +EN +RA 403 15 +BE +PR 1 2 "Tipo C/F" +IT "C|Cliente" +IT "F|Fornitore" +FI TIPOSEL +EN +ENDMASK diff --git a/src/tf/totiva_aliq.rep b/src/tf/totiva_aliq.rep new file mode 100644 index 000000000..e45a8a5af --- /dev/null +++ b/src/tf/totiva_aliq.rep @@ -0,0 +1,764 @@ + + + Totale iva per aliquota + +
+ + + + + + #SYSTEM.RAGSOC + + + + + + + MOV.TIPO + +
  • +
  • + + + + + "PERIODO RIFERIMENTO: " +#DADATA+" - "+#ADATA + + + + + + + + + + + + + + + 20 + + + 21 + + + 20 + + + 21 + + + 21 + + + 20 + + + 20 + + + 21 + + + 20 + + + 21 + + + 21 + + + 20 + + + + + + + + + + + + + + + + +
  • +
    + MESSAGE RESET,F1 + + +
    + + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #101+#102+#103+#104+#105+#106 + + + #201+#202+#203+#204+#205+#206 + + + #501+#502+#503+#504+#505+#506 + + + #601+#602+#603+#604+#605+#606 + +
    +
    + MESSAGE HIDE,20@ + + + + + + + + + + + #H2.10 + + + #H2.20 + + + + MESSAGE ADD,F1.101 + + + MESSAGE ADD,F1.102 + + + MESSAGE ADD,F1.103 + + + MESSAGE ADD,F1.104 + + + MESSAGE ADD,F1.105 + + + MESSAGE ADD,F1.106 + + + MESSAGE ADD,F1.201 + + + MESSAGE ADD,F1.202 + + + MESSAGE ADD,F1.203 + + + MESSAGE ADD,F1.204 + + + MESSAGE ADD,F1.205 + + + MESSAGE ADD,F1.206 + + + + #101+#102 + + + #101+#102+#103 + + + #101+#102+#103+#104 + + + #101+#102+#103+#104+#105 + + + #101+#102+#103+#104+#105+#106 + + + + #201+#202 + + + #201+#202+#203 + + + #201+#202+#203+#204 + + + #201+#202+#203+#204+#205 + + + #201+#202+#203+#204+#205+#206 + + + MESSAGE ADD,F1.501 + + + MESSAGE ADD,F1.502 + + + MESSAGE ADD,F1.503 + + + MESSAGE ADD,F1.504 + + + MESSAGE ADD,F1.505 + + + MESSAGE ADD,F1.506 + + + MESSAGE ADD,F1.601 + + + MESSAGE ADD,F1.602 + + + MESSAGE ADD,F1.603 + + + MESSAGE ADD,F1.604 + + + MESSAGE ADD,F1.605 + + + MESSAGE ADD,F1.606 + + + #101+#102+#103+#104+#105+#106 + + + #201+#202+#203+#204+#205+#206 + + + #501+#502+#503+#504+#505+#506 + + + #601+#602+#603+#604+#605+#606 + +
    + + USE RMOVIVA SELECT BETWEEN(23.DATAREG,#DADATA,#ADATA)(23.TIPO=#TIPOSEL) +BY CODIVA 23.DATAREG NUMREG +JOIN MOV INTO NUMREG==NUMREG +JOIN 20 TO MOV INTO TIPOCF==TIPO CODCF==CODCF + \ No newline at end of file