#include "tf0300a.h" #include #include #include #include // cache() #include class TChangeStato_msk : public TAutomask { virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) { return true; } public: TChangeStato_msk() : TAutomask("tf0300a"){} }; // Definizione per chiamare metodo send dalla maschera class TChangeStato_app : public TSkeleton_application { bool change(TChangeStato_msk& ms); public: virtual void main_loop(); }; bool TChangeStato_app::change(TChangeStato_msk& msk) { TString statoini = msk.get(A_STATOINI), statofin = msk.get(A_STATOFIN); if(statoini == statofin) { return error_box("Errore! Stati Iniziale e Finale identici!"); } // Cambio tutti i movimenti di quella data partendo prima da quelli in prima nota TString query = "USE MOV\n"; query << "SELECT (REG!=\"\")&&BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << msk.get(F_TIPOCF) << "\")"; if(msk.get(F_CODCF) != "") query << "&&STR((CODCF=#CODCF))"; if(statoini == "X") { query << "&&((TFINVIO=\"\")||(TFINVIO=\"X\"))"; } else query << "&&(TFINVIO=\"" << statoini << "\")"; TISAM_recordset rset(query); TDate dadatareg = msk.get_date(F_DATAINI); if(!dadatareg.ok()) { dadatareg = TDate(01, 01, 2017); msk.set(F_DATAINI, dadatareg); } TDate adatareg = msk.get_date(F_DATAFIN); if(!adatareg.ok()) { adatareg = TDate(TODAY); msk.set(F_DATAFIN, adatareg); } // Setto le variabili rset.set_var("#DADATAREG", dadatareg); rset.set_var("#ADATAREG", adatareg); if(msk.get(F_CODCF) != "") rset.set_var("#CODCF", msk.get(F_CODCF)); int nrec = rset.items(); TLocalisamfile mov(LF_MOV), trasfatt(LF_TRASFATT); TProgress_monitor p1(nrec, "Cambio stato prima nota"); for(bool ok = rset.move_first(); rset.items() > 0 && ok; ok = rset.move_next()) { if(!p1.add_status()) return false; TRectype& rmov = rset.cursor()->curr(); rmov.put("TFINVIO", statofin); ok = rmov.rewrite(mov) == NOERR; } query.cut(0) << "USE TRASFATT\n"; query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << msk.get(F_TIPOCF) << "\")"; if(msk.get(F_CODCF) != "") query << "&&STR((CODCF=#CODCF))"; if(statoini == "X") { query << "&&((TFINVIO=\"\")||(TFINVIO=\"X\"))"; } else query << "&&(TFINVIO=\"" << statoini << "\")"; // Riciclo vah rset = TISAM_recordset(query); // Setto le variabili rset.set_var("#DADATAREG", dadatareg); rset.set_var("#ADATAREG", adatareg); if(msk.get(F_CODCF) != "") rset.set_var("#CODCF", msk.get(F_CODCF)); nrec = rset.items(); TProgress_monitor p2(nrec, "Cambio stato record custom"); for(bool ok = rset.move_first(); rset.items() > 0 && ok; ok = rset.move_next()) { if(!p2.add_status()) return false; TRectype& rtrasfatt = rset.cursor()->curr(); rtrasfatt.put("TFINVIO", statofin); ok = rtrasfatt.rewrite(trasfatt) == NOERR; } return true; } void TChangeStato_app::main_loop() { TChangeStato_msk msk; while(msk.run() == K_ENTER) { change(msk); } } int tf0300(int argc, char* argv[]) { TChangeStato_app app; app.run(argc, argv, TR("Invio dati liquidazione IVA")); return 0; }