#include #include #include #include #include #include #include #include "../cg/cgsaldac.h" #include "../cg/cglib02.h" #include "scp0.h" #include "scp0100.h" #include #include #include class TPartite2Euroasis : public TSkeleton_application { TMask* _msk; protected: virtual bool create(); virtual bool destroy(); virtual void main_loop(); public: TMask& mask() { return *_msk; } TPartite2Euroasis() {}; virtual ~TPartite2Euroasis() {} }; bool TPartite2Euroasis::create() { open_files(LF_SCADENZE, LF_PARTITE, LF_CLIFO, 0); _msk = new TMask("scp0100a"); return TSkeleton_application::create(); } bool TPartite2Euroasis::destroy() { delete _msk; return TSkeleton_application::destroy(); } void TPartite2Euroasis::main_loop() { TRelation rel(LF_SCADENZE); rel.add(LF_PARTITE,"TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO=ANNO|NUMPART==NUMPART",1,0); rel.add(LF_PAGSCA, "TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO==ANNO|NUMPART==NUMPART|NRIGA==NRIGA|NRATA==NRATA"); //TCursor cur(&rel, "29->PAGATA != \"X\" && 29->TIPOC == \"C\"", 2); // verificare la chiave TCursor cur(&rel, "29->TIPOC == \"C\"", 2); // verificare la chiave TMask& m = mask(); TConfig config("scp0100.ini"); TString80 exe = config.get("EXE"); m.set(F_PATH, config.get("PATH")); while (m.run() != K_QUIT) { const TString& path = m.get(F_PATH); config.set("PATH", path); TFilename scadname = path; scadname.ext("dbf"); TFilename scadtrr = "oasis"; scadtrr.ext("trr"); TExternisamfile filescad(scadname, scadtrr); filescad.zap(); const TDate oggi(TODAY); TString16 ora; time_t tempo; time(&tempo); const struct tm* d = localtime(&tempo); ora.format("%02d:%02d:%02d", d->tm_hour, d->tm_min, d->tm_sec); const TDate dataanalisi = m.get_date(F_DATA); const int giorni = m.get_int(F_GIORNI); const TDate dataesposto = dataanalisi - (long) giorni; //TRectype from(LF_SCADENZE), to(LF_SCADENZE); //from.put(SCAD_DATASCAD, _datascadi); //to.put(SCAD_DATASCAD, _datascadf); //_cur->setregion(from, to); TRectype& recscad = cur.curr(); const TRectype& recpartita = cur.curr(LF_PARTITE); const long items = cur.items(); TProgind p(items, "Elaborazione scadenze in corso ...", TRUE, TRUE, 10); p.setstatus(1); int err = NOERR; for (cur=0; cur.pos()= 2 && tp <= 7) { const TDate dataprow = prow.get(PART_DATAPAG); if (dataprow < datapag) { data = datapag; break; } } } } if (rischio && data > dataesposto && data <= dataanalisi) { esposto = TRUE; sbf = TRUE; } else if (data > dataanalisi) esposto = TRUE; TImporto pagato = scad.importo_pagato(FALSE); if (!scad.chiusa() || esposto && !pagato.is_zero()) { TImporto importo = scad.residuo(FALSE); importo.normalize('D'); filescad.zero(); filescad.put("DATAGEN", oggi); filescad.put("ORAGEN", ora); filescad.put("GIORNI", giorni); filescad.put("DATA", dataanalisi); filescad.put("CLIENTE", recscad.get(SCAD_SOTTOCONTO)); TString16 tipodoc = " "; if (rigapartite.is_fattura()) tipodoc = "FV"; else if (rigapartite.is_nota_credito()) tipodoc = "NC"; filescad.put("TIPODOC", tipodoc); filescad.put("NUMDOC", recpartita.get(PART_NUMDOC)); TString16 strpartita = recpartita.get(PART_ANNO); strpartita << "/"; strpartita << recpartita.get(PART_NUMPART); filescad.put("PARTITA", strpartita); const int tipopag = recscad.get_int(SCAD_TIPOPAG); if (tipopag >= 2 && tipopag <= 7) filescad.put("TIPOPAG", "RB"); else filescad.put("TIPOPAG", "RD"); filescad.put("DATASCAD", recscad.get(SCAD_DATASCAD)); filescad.put("IMPORTO", importo.valore()); filescad.put("ESPOSTO", pagato.valore()); err = filescad.write(); //if (err != NOERR) // error_box("Errore %d in scrittura file dbf", err); } } if (err == NOERR) { if (exe.not_empty()) { TExternal_app oasis(exe); if (oasis.can_run()) oasis.run(); } } else error_box("Errore %d in scrittura file dbf. Elaborazione non terminata.", err); } } int scp0100(int argc, char** argv) { TPartite2Euroasis app; app.run(argc, argv, "Esportazione scadenzario"); return 0; }