#include #include #include #include #include #include #include #include #include "../cg/cg2103.h" #include "../gv/gvlib.h" #include "velib.h" #include "velib07.h" #include #include "ve8.h" #include "ve8100a.h" //////////////////////////////////////////////////////// // MASCHERA //////////////////////////////////////////////////////// class TListaRitFisc_mask : public TAutomask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TListaRitFisc_mask(); virtual ~TListaRitFisc_mask() {} }; bool TListaRitFisc_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { bool ok = true; /* switch (o.dlg()) { case : if (e == fe_init || e == fe_modify) { } break; default: break; } */ return ok; } TListaRitFisc_mask::TListaRitFisc_mask():TAutomask("ve8100") { } //////////////////////////////////////////////////////// // APPLICAZIONE //////////////////////////////////////////////////////// class TListaRitFisc : public TSkeleton_application { protected: virtual void main_loop(); public: bool crea_righe(const TListaRitFisc_mask& m) const; }; bool TListaRitFisc::crea_righe(const TListaRitFisc_mask& m) const { // cerca abi e cab della ditta const TString16 abi = prefix().firm().get(NDT_ABIBAN); const TString16 cab = prefix().firm().get(NDT_CABBAN); const TDate datascad = m.get(F_DATASCAD); int err=NOERR; TLocalisamfile righe(LF_RIGHEF24); TDocument_recordset rdoc("USE RDOC\nSELECT (TIPORIGA=='04')&&(110@->S10!='')&&(NUM(ANSI(33.DATADOC)>=ANSI(#DADATA)))&&(NUM(ANSI(33.DATADOC)<=ANSI(#ADATA)))\nJOIN SPP ALIAS 110 INTO CODTAB=CODART\nJOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM=CODNUM NDOC=NDOC\nFROM CODNUM=#NUM\nTO CODNUM=#NUM"); TVariant var; var = m.get(F_DATAINI); rdoc.set_var("#DADATA", var); var = m.get(F_DATAFIN); rdoc.set_var("#ADATA", var); var = m.get(F_CODNUM); rdoc.set_var("#NUM", var); long cont = get_next_progr_f24(); long numf24 = get_next_f24(); // trucco per poter usare la get (nei TDocument_recordset la get ha 2 par. ed e' protected!) const TRecordset& curr = rdoc; for (bool ok = rdoc.move_first(); ok; ok = rdoc.move_next()) { righe.zero(); righe.put("PROGR", cont++); righe.put("F24", numf24++); righe.put("TRIBUTO", curr.get("SPP.S10").as_string()); righe.put("TIPOINTEST", 'C'); righe.put("INTEST", curr.get("DOC.CODCF").as_int()); righe.put("DESCR", "Riga generata"); righe.put("IMPORTODEB", curr.get("RDOC.RITENUTA").as_real()); righe.put("ABI", abi); righe.put("CAB", cab); righe.put("DATAVERS", datascad); righe.put("DATASCAD", datascad); err = righe.write(); } return (err==NOERR); } void TListaRitFisc::main_loop() { TListaRitFisc_mask m; KEY key = K_ENTER; while (key != K_QUIT) { key = m.run(); switch (key) { case K_SAVE: crea_righe(m); break; case K_QUIT: break; case K_ENTER: { //report e book dei report TReport_book book; TDocument_report rep; rep.load("ve8100a"); TRecordset * r = rep.recordset(); if (r != NULL) { TVariant var; var = m.get(F_DATAINI); r->set_var("#DADATA", var); var = m.get(F_DATAFIN); r->set_var("#ADATA", var); var = m.get(F_CODNUM); r->set_var("#NUM", var); } book.add(rep); book.print_or_preview(); //stampa il book dei report } } } } int ve8100(int argc, char* argv[]) { TListaRitFisc a; a.run(argc, argv, TR("Lista ritenute per F24")); return 0; }