#include "tf0400a.h" #include "tfutility.h" #include #include #include #include #include // cache() #include "../fe/felib.h" // TAnagrafica #include "modaut.h" #include typedef enum{ def_sfield = F_RIGHE, // Sheetfield di default (tutte le colonne) not_send_sfield = F_NOTSEND // Sheetfield di breve (poche colonne per non inviate) } field; /**************************************************************************************************** * TSpe_check_msk ****************************************************************************************************/ class TSpe_check_msk : public TAutomask { private: TAnagrafica _ditta; bool _selected; TSheet_field& get_sfield(const int field); void fill_ninvio(); void refresh(); void fill_no_filter(); void fill_diff(); void find_homeland(TToken_string& row, TString numreg, TString codiva, TRectype& clifo); void fill_cust(); void get_fil_flag(TString& query, const char* table); void enable_edit(bool en); void select_all(); void save_all(); void delete_all(); bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; public: TSpe_check_msk(); virtual ~TSpe_check_msk() {}; }; bool TSpe_check_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch(o.dlg()) { case DLG_RECALC: if(e != fe_button) break; refresh(); break; case F_TIPOCONTROLLO: if(e != fe_modify) break; refresh(); break; case DLG_ALL: if(e != fe_button) break; select_all(); break; case DLG_SAVEREC: save_all(); break; case DLG_DELREC: delete_all(); break; case DLG_EDIT: if(e == fe_button) { TSheet_field* sheet; if(get_int(F_TIPOCONTROLLO) == 3) sheet = &sfield(F_NOTSEND); else sheet = &sfield(F_RIGHE); if(sheet->items() > 0) { sheet->esporta(); } else { warning_box("Impossibile esportare una griglia vuota"); } } break; case A_TIPOCF: case A_CODCF: case A_OCFPI: { if(e != fe_modify) break; // Leggo dal clifo TString tipocf, codcf, ocfpi; tipocf = o.mask().get(A_TIPOCF); codcf = o.mask().get(A_CODCF); ocfpi = o.mask().get(A_OCFPI); TRectype app = getCli(tipocf, codcf, ocfpi); o.mask().set(A_RAGSOC, app.get("RAGSOC")); o.mask().set(A_RFSO, app.get("CODRFSO")); o.mask().set(A_RAGSOCRFSO, get_rfso(app.get("CODRFSO"))); o.mask().set(A_PAIV, app.get("PAIV")); o.mask().set(A_COFI, app.get("COFI")); // Abilito se il cliente è occasionale o.mask().enable(A_OCFPI, app.get_bool("OCCAS")); // Controllo autofattura TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR"); TString piva = cache().get(LF_ANAG, key, "PAIV"); if(piva == app.get("PAIV")) { // Autofattura! o.mask().set(A_AUTOFATT, "X"); } } break; default: break; } return true; } TSheet_field& TSpe_check_msk::get_sfield(const int field) { TSheet_field* wrong, *right; if (field == def_sfield) { wrong = &sfield(not_send_sfield); right = &sfield(def_sfield); enable(F_FLAG); } else { wrong = &sfield(def_sfield); right = &sfield(not_send_sfield); disable(F_FLAG); } wrong->hide(); if(wrong->items() > 0) wrong->destroy(); right->hide(); if (right->items() > 0) right->destroy(); return *right; } void TSpe_check_msk::fill_ninvio() { TString query = "USE MOV\n"; query << R"(SELECT (23.REG!="")&&BETWEEN(23.DATAREG,#DADATAREG,#ADATAREG)&&(23.TIPO=")" << get(F_TIPOCF) << "\")"; if (get(F_CODCF).full()) query << "&&STR((23.CODCF=#CODCF))"; 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).full()) rset.set_var("#CODCF", get(F_CODCF)); int nrec = rset.items(); TSheet_field& s = get_sfield(F_NOTSEND); if (nrec <= 0) return; for (bool ok = rset.move_first(); ok; ok = rset.move_next()) { // Devo prendere tutti quelli che non vanno bene di records TRectype clifo = getCli(rset.get("23.TIPO").as_string(), rset.get("23.CODCF").as_string(), rset.get("23.OCCAS").as_string()); if (rset.get("23.TFINVIO").as_string() != "I") { TToken_string& row = s.row(-1); row.add(rset.get("23.NUMREG").as_int(), 0); row.add(rset.get("23.DATAREG").as_date()); row.add(rset.get("23.ANNOES").as_int()); row.add(rset.get("23.NUMDOC").as_int()); row.add(rset.get("23.NUMDOCEXT").as_int()); row.add(rset.get("23.TIPODOC").as_string()); row.add(rset.get("23.DESCR").as_string()); row.add(rset.get("23.CODCF").as_int()); row.add(rset.get("23.TOTDOC").as_real()); row.add(rev_charge(rset.get("NUMREG").as_string(), rset.get("23.DATAREG").as_date().year())), s.cid2index(A_REVERSE); row.add(rset.get("23.TFINVIO").as_string().empty()? "X" : rset.get("23.TFINVIO").as_string()); } } s.force_update(); s.show(); enable_edit(false); } void TSpe_check_msk::refresh() { switch(get_long(F_TIPOCONTROLLO)) { case 0: fill_no_filter(); break; case 1: fill_diff(); break; case 2: fill_cust(); case 3: fill_ninvio(); default: break; } return; } void TSpe_check_msk::fill_no_filter() { TString query = "USE RMOVIVA\n"; query << R"(SELECT (23.REG!="")&&BETWEEN(23.DATAREG,#DADATAREG,#ADATAREG)&&(23.TIPO=")" << get(F_TIPOCF) << "\")"; if(get(F_CODCF).full()) query << "&&STR((23.CODCF=#CODCF))"; get_fil_flag(query, "23"); 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).full()) rset.set_var("#CODCF", get(F_CODCF)); const int nrec = rset.items(); TSheet_field& s = get_sfield(F_RIGHE); if(nrec <= 0) return; for(bool ok = rset.move_first(); ok; ok = rset.move_next()) { // Devo prendere tutti quelli che non vanno bene di records if (check_record(&rset, false)) 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(find_detraib(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(get_rfso(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC row.add((rev_charge(rset.get("NUMREG").as_string(), rset.get("23.DATAREG").as_date().year())), 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(); enable_edit(false); } void TSpe_check_msk::fill_diff() { // 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).full()) query << "&&STR((CODCF=#CODCF))"; get_fil_flag(query, "173"); 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).full()) rset.set_var("#CODCF", get(F_CODCF)); int nrec = rset.items(); TSheet_field& s = get_sfield(F_RIGHE); 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); find_homeland(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("TIPODOCAE").as_string(), s.cid2index(A_TIPODOCAE)); 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(find_detraib(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(get_rfso(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC row.add((rev_charge(rset.get("NUMREG").as_string(), rset.get("DATAREG").as_date().year())), 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)); } // Disabilito le colonne originali for(int i = 0; i < s.items(); i+= 2) { s.disable_row(i); } s.force_update(); s.show(); enable_edit(true); } void TSpe_check_msk::find_homeland(TToken_string& row, TString numreg, TString codiva, TRectype& clifo) { TSheet_field& s = sfield(F_RIGHE); static TLocalisamfile mov(LF_MOV), rmov(LF_RMOVIVA); TRectype rec_mov(LF_MOV); TRectype rec_rmov(LF_RMOVIVA); rec_mov.put("NUMREG", numreg); rec_rmov.put("NUMREG", numreg); mov.read(rec_mov); rmov.read(rec_rmov); real imponibile = ZERO, imposta = ZERO; while(!rmov.eof()) { // Mi sposto se il codice IVA non è quello che mi serve while(rec_rmov.get("NUMREG") == numreg && rec_rmov.get("CODIVA") != codiva) { ++rmov; rec_rmov = rmov.curr(); } if(rec_rmov.get("NUMREG") != numreg) break; imponibile += rec_rmov.get_real("IMPONIBILE"); imposta += rec_rmov.get_real("IMPOSTA"); // Mi sposto ++rmov; rec_rmov = rmov.curr(); } // Torno sul record per prendere i dati che mi mancano --rmov; rec_rmov = rmov.curr(); row.add(rec_mov.get("DATAREG"), s.cid2index(A_DATAREG)); row.add(rec_mov.get("TIPODOC"), s.cid2index(A_TIPODOC)); row.add(rec_mov.get("NUMDOC"), s.cid2index(A_NUMDOC)); row.add(rec_mov.get("DATADOC"), s.cid2index(A_DATADOC)); row.add(rec_rmov.get("CODIVA"), s.cid2index(A_ALIQUOTA)); row.add(imponibile, s.cid2index(A_IMPONIBILE)); row.add(imposta, s.cid2index(A_IMPOSTA)); // NATURA row.add(natura(rec_rmov.get("CODIVA")), s.cid2index(A_NATURA)); // DETR row.add(find_detraib(rec_rmov.get("TIPODET")), s.cid2index(A_DETRAIB)); row.add(rec_mov.get("TIPO"), s.cid2index(A_TIPOCF)); row.add(rec_mov.get("CODCF"), s.cid2index(A_CODCF)); row.add(rec_mov.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(get_rfso(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC row.add((rev_charge(rec_mov.get("NUMREG"), rec_mov.get_date("DATAREG").year())), 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(rec_mov.get_bool("TFINVIO") ? "X" : "", s.cid2index(A_SPEDITA)); row.add(rec_mov.get("NUMREG"), s.cid2index(A_NUMERO)); } void TSpe_check_msk::fill_cust() { TString query = "USE TRASFATT\n"; query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << get(F_TIPOCF) << "\")"; if(get(F_CODCF).full()) query << "&&STR((CODCF=#CODCF))"; get_fil_flag(query, "173"); 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).full()) 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()); 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(find_detraib(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(get_rfso(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO)); // RC row.add((rev_charge(rset.get("NUMREG").as_string(), rset.get("DATAREG").as_date().year())), 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(); enable_edit(true); } void TSpe_check_msk::get_fil_flag(TString& query, const char* table) { switch(get_int(F_FLAG)) { case 1: query << "&&((" << table << ".TFINVIO=\"\")||("<< table << ".TFINVIO=\"X\")||(" << table << ".TFINVIO=\"F\")||(" << table << ".TFINVIO=\"E\"))"; break; case 2: query << "&&(" << table << ".TFINVIO=\"I\")"; break; case 3: query << "&&(" << table << ".TFINVIO=\"N\")"; case 0: default: break; } } void TSpe_check_msk::enable_edit(const bool en) { // Abilito i bottoni enable(DLG_ALL,en); enable(DLG_SAVEREC,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_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); // Abilito/Disabilito le righe dei ocfpi corretti if(en) { FOR_EACH_SHEET_ROW(s, r, strarr) { static TString app; strarr->get(s.cid2index(A_OCFPI), app); if(app.blank()) s.disable_cell(r, s.cid2index(A_OCFPI)); else s.enable_cell(r, s.cid2index(A_OCFPI)); } } // Altrimenti disabilito tutto else { s.enable_column(s.cid2index(A_OCFPI), en); } s.force_update(); } void TSpe_check_msk::select_all() { _selected = !_selected; 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; strarr->add(_selected ? "X" : "", s.cid2index(A_ELIMINA)); } s.force_update(); } void TSpe_check_msk::save_all() { 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 r_cust = cache().get(LF_TRASFATT, key); r_cust.put("TIPO", strarr->get(s.cid2index(A_TIPOCF))); r_cust.put("CODCF", strarr->get(s.cid2index(A_CODCF))); r_cust.put("OCCAS", strarr->get(s.cid2index(A_OCFPI))); r_cust.put("TIPODOC", strarr->get(s.cid2index(A_TIPODOC))); r_cust.put("NUMDOC", strarr->get(s.cid2index(A_NUMDOC))); r_cust.put("DATAREG", strarr->get(s.cid2index(A_DATAREG))); r_cust.put("DATADOC", strarr->get(s.cid2index(A_DATADOC))); r_cust.put("IMPONIBILE", strarr->get(s.cid2index(A_IMPONIBILE))); r_cust.put("IMPOSTA", strarr->get(s.cid2index(A_IMPOSTA))); r_cust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA))); r_cust.put("NATURA", strarr->get(s.cid2index(A_NATURA))); r_cust.put("AUTOFATT", strarr->get(s.cid2index(A_AUTOFATT))); if(r_cust.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 TSpe_check_msk::delete_all() { 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 r_cust(LF_TRASFATT); r_cust.put("NUMREG", strarr->get(s.cid2index(A_NUMERO))); r_cust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA))); if(r_cust.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; } } } TSpe_check_msk::TSpe_check_msk() : TAutomask("tf0400a") { sfield(F_NOTSEND).hide(); _ditta.init(LF_NDITTE, prefix().get_codditta()); _selected = false; } /**************************************************************************************************** * TSpeCheck_app ****************************************************************************************************/ class TSpeCheck_app : public TSkeleton_application { public: void main_loop() override; }; TSpeCheck_app& app() { return dynamic_cast(main_app()); } void TSpeCheck_app::main_loop() { TSpe_check_msk msk; msk.run(); } int tf0400(int argc, char* argv[]) { TSpeCheck_app app; app.run(argc, argv, TR("Controlli Trasferimento fatture")); return 0; }