diff --git a/ve/ve4.cpp b/ve/ve4.cpp index 059033ce6..40368dd10 100755 --- a/ve/ve4.cpp +++ b/ve/ve4.cpp @@ -9,12 +9,8 @@ int main(int argc, char** argv) const int k = argc > 1 ? atoi(argv[1]+1) : 0; switch(k) { - case 0: - ve4100(argc, argv); - break; - default: - error_box("Applicazione sconosciuta: %s %s.", argv[0], argv[1]); - break; + case 1: ve4200(argc, argv); break; // Aggiorna IVA + default: ve4100(argc, argv); break; // Modifica Valori } return 0; } diff --git a/ve/ve4.h b/ve/ve4.h index 1bbe0881c..bf8bb9468 100755 --- a/ve/ve4.h +++ b/ve/ve4.h @@ -1 +1,2 @@ int ve4100(int argc, char* argv[]); +int ve4200(int argc, char* argv[]); diff --git a/ve/ve4100.cpp b/ve/ve4100.cpp index d6d06bb12..62c5bd701 100755 --- a/ve/ve4100.cpp +++ b/ve/ve4100.cpp @@ -38,10 +38,10 @@ protected: int name2index(const char* name) const; public: - static void load_table(bool force = FALSE); + static void load_table(bool force = false); static void set_relation(const TRelation* rel) { _rel = rel; load_table(); } static void set_window(TViswin* win) { _win = win; } - static void reset_errors() { _errors = FALSE; } + static void reset_errors() { _errors = false; } static bool errors_found() { return _errors; } int str2file(const TString& s) const; @@ -55,7 +55,7 @@ public: TArray TTable_expression::_expr; const TRelation* TTable_expression::_rel = NULL; TViswin* TTable_expression::_win = NULL; -bool TTable_expression::_errors = FALSE; +bool TTable_expression::_errors = false; void TTable_expression::load_table(bool force) { @@ -75,7 +75,7 @@ void TTable_expression::load_table(bool force) const int index = _expr.add(o); if (!te->set(e, t)) { - te->error_box("La funzione %s contiene un simbolo errato: %s", + te->error_box(FR("La funzione %s contiene un simbolo errato: %s"), (const char*)n, te->last_token()); te->set("", t); } @@ -98,7 +98,7 @@ bool TTable_expression::print_error(const char* msg) const } else ::error_box("%s", msg); - return _errors = TRUE; + return _errors = true; } bool TTable_expression::error_box(const char* fmt, ...) const @@ -144,7 +144,7 @@ TRectype* TTable_expression::field2rec(TString& var) const if (logicnum >= 0 && get_relation().exist(logicnum)) rec = &get_relation().curr(logicnum); else - error_box("Il campo '%s' non appartiene alla relazione.", (const char*)var); + error_box(FR("Il campo '%s' non appartiene alla relazione."), (const char*)var); return rec; } @@ -158,7 +158,7 @@ const char* TTable_expression::get_field(const char* f) const if (rec->exist(var)) val = rec->get(var); else - error_box("Il campo '%s' non appartiene al file %d.", (const char*)var, rec->num()); + error_box(FR("Il campo '%s' non appartiene al file %d."), (const char*)var, rec->num()); } return val; } @@ -217,10 +217,10 @@ int TTable_expression::parse_user_func(const char* name, int nparms) const switch(index) { case -1: - error_box("Funzione non riconosciuta: %s.", name); + error_box(FR("Funzione non riconosciuta: %s."), name); break; case -2: - error_box("La funzione %s contiene un simbolo errato: %s.", + error_box(FR("La funzione %s contiene un simbolo errato: %s."), name, last_token()); break; default: @@ -329,13 +329,13 @@ TRicalcolo_mask::TRicalcolo_mask() set_handler(F_KEY, key_handler); set_handler(F_FILTER, filter_handler); - TSheet_field& fields = (TSheet_field&)field(F_FIELDS); + TSheet_field& fields = sfield(F_FIELDS); TMask& fsm = fields.sheet_mask(); fsm.set_handler(F_FIELD, field_handler); fsm.set_handler(F_FROM, fromto_handler); fsm.set_handler(F_TO, fromto_handler); - TSheet_field& outputs = (TSheet_field&)field(F_OUTPUTS); + TSheet_field& outputs = sfield(F_OUTPUTS); TMask& osm = outputs.sheet_mask(); osm.set_handler(F_FIELD, field_handler); osm.set_handler(F_FORMULA, formula_handler); @@ -537,7 +537,7 @@ TCursor& TRicalcolo_mask::create_cursor() TToken_string& key_des = get_key_expr(key); - TSheet_field& fs = (TSheet_field&)field(F_FIELDS); + TSheet_field& fs = sfield(F_FIELDS); TString16 field; TString val; @@ -558,13 +558,13 @@ TCursor& TRicalcolo_mask::create_cursor() start.put(field, val); else { - key_seq_from = FALSE; + key_seq_from = false; if (filter.not_empty()) filter << "&&"; filter << '(' << field << ">=\"" << val << "\")"; } } else - key_seq_from = FALSE; + key_seq_from = false; val = row.get(); // Limite superiore if (!val.blank()) @@ -573,16 +573,16 @@ TCursor& TRicalcolo_mask::create_cursor() stop.put(field, val); else { - key_seq_to = FALSE; + key_seq_to = false; if (filter.not_empty()) filter << "&&"; filter << '(' << field << "<=\"" << val << "\")"; } } else - key_seq_to = FALSE; + key_seq_to = false; } else - key_seq_from = key_seq_to = FALSE; + key_seq_from = key_seq_to = false; } if (key <= 0) @@ -611,11 +611,11 @@ bool TRicalcolo_mask::file_handler(TMask_field& f, KEY k) TToken_string values(80); TString16 tmp; codes.add(0); - values.add("Nessuna"); + values.add(TR("Nessuna")); for (int k = 1; k <= keys; k++) { codes.add(k); - tmp.format("Chiave %d", k); + tmp.format(FR("Chiave %d"), k); values.add(tmp); } @@ -623,7 +623,7 @@ bool TRicalcolo_mask::file_handler(TMask_field& f, KEY k) lk.replace_items(codes, values); } } - return TRUE; + return true; } bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k) @@ -631,7 +631,7 @@ bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k) if (k == K_SPACE) { TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask(); - TSheet_field& sheet = (TSheet_field&)m.field(F_FIELDS); + TSheet_field& sheet = m.sfield(F_FIELDS); if (m.is_running() || sheet.items() == 0) { const int cur_key = atoi(f.get()); @@ -670,7 +670,7 @@ bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k) sheet.force_update(); } } - return TRUE; + return true; } bool TRicalcolo_mask::test_formula(TMask_field& f) const @@ -702,7 +702,7 @@ bool TRicalcolo_mask::test_formula(TMask_field& f) const } } else - ok = FALSE; + ok = false; if (!ok) { f.error_box("Il campo '%s' non esiste!", (const char*)expr.varname(v)); @@ -717,7 +717,7 @@ bool TRicalcolo_mask::test_formula(TMask_field& f) const bool TRicalcolo_mask::filter_handler(TMask_field& f, KEY k) { - bool ok = TRUE; + bool ok = true; if (f.to_check(k)) { TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask(); @@ -728,7 +728,7 @@ bool TRicalcolo_mask::filter_handler(TMask_field& f, KEY k) bool TRicalcolo_mask::field_handler(TMask_field& f, KEY k) { - bool ok = TRUE; + bool ok = true; switch (k) { case K_TAB: @@ -777,7 +777,7 @@ HIDDEN void swap_tokens(TToken_string& str, int p1, int p2) bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k) { - bool ok = TRUE; + bool ok = true; if (f.to_check(k)) { const TMask& m = f.mask(); @@ -817,7 +817,7 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k) fields.add(tmp); int lun = rec.length(tmp); - bool right = FALSE; + bool right = false; switch(rec.type(tmp)) { case _alfafld: @@ -831,7 +831,7 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k) lun = 10; break; default: - right = TRUE; + right = true; break; } tmp.lower(); tmp[0] = toupper(tmp[0]); @@ -899,7 +899,7 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k) bool TRicalcolo_mask::formula_handler(TMask_field& f, KEY k) { - bool ok = TRUE; + bool ok = true; if (f.to_check(k)) { TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask().get_sheet()->mask(); @@ -931,12 +931,12 @@ bool TRicalcolo_mask::elabora() TString val(80); // Valore di campo TString line(128); // Linea di testo - TIndwin iw(48, "Inizializzazione ...", TRUE, FALSE, 48); + TIndwin iw(48, "Inizializzazione ...", true, false, 48); begin_wait(); TCursor& cur = create_cursor(); // Crea e filtra il cursore principale - TSheet_field& osf = (TSheet_field&)field(F_OUTPUTS); + TSheet_field& osf = sfield(F_OUTPUTS); TArray expr; for (int r = 0; r < osf.items(); r++) { @@ -964,13 +964,13 @@ bool TRicalcolo_mask::elabora() } TToken_string& key_expr = get_key_expr(cur.key()); - TViswin vw(NULL, "Ricalcolo valori", FALSE, TRUE, FALSE, 0, 0, 0, 0, FALSE); + TViswin vw(NULL, TR("Ricalcolo valori"), false, true, false, 0, 0, 0, 0, false); iw.close_modal(); end_wait(); if (iw.iscancelled()) - return FALSE; + return false; TTable_expression::set_relation(cur.relation()); TTable_expression::set_window(&vw); @@ -979,7 +979,7 @@ bool TRicalcolo_mask::elabora() vw.maximize(); vw.open_modal(); - bool ok = TRUE; + bool ok = true; const TRecnotype items = cur.items(); cur.freeze(); @@ -1010,7 +1010,7 @@ bool TRicalcolo_mask::elabora() val = e; if (e.errors_found()) - ok = FALSE; + ok = false; else cur.curr().put(var, val); @@ -1038,9 +1038,9 @@ bool TRicalcolo_mask::elabora() { TTextfile& txt = vw.text(); - TProgind piw(txt.lines(), "Aggiornamento archivio", FALSE, TRUE, 48); + TProgind piw(txt.lines(), "Aggiornamento archivio", false, true, 48); - bool do_rewrite = FALSE; + bool do_rewrite = false; long pos = 0; cur = 0L; for (long r = 0; r < txt.lines(); r++) @@ -1052,7 +1052,7 @@ bool TRicalcolo_mask::elabora() if (do_rewrite) { rewrite_cursor(cur); - do_rewrite = FALSE; + do_rewrite = false; } cur = pos-1; // pos a video = 1 -> pos cursore = pos-1 = 0) } @@ -1065,7 +1065,7 @@ bool TRicalcolo_mask::elabora() { val = equal+2; cur.curr().put(var, val); - do_rewrite = TRUE; + do_rewrite = true; } } } @@ -1074,9 +1074,9 @@ bool TRicalcolo_mask::elabora() rewrite_cursor(cur); } } - cur.freeze(FALSE); + cur.freeze(false); - return TRUE; + return true; } @@ -1093,7 +1093,7 @@ protected: public: // @cmember Disabilita la verifica del modulo in chiave virtual bool check_autorization() const - {return FALSE;} + {return false;} TRicalcola_application() { } virtual ~TRicalcola_application() { } }; @@ -1101,7 +1101,7 @@ public: bool TRicalcola_application::create() { dispatch_e_menu(MENU_ITEM_ID(1)); - return TRUE; + return true; } bool TRicalcola_application::menu(MENU_TAG) @@ -1112,7 +1112,7 @@ bool TRicalcola_application::menu(MENU_TAG) m.elabora(); m.close(); - return FALSE; + return false; } int ve4100(int argc, char* argv[]) diff --git a/ve/ve4200.cpp b/ve/ve4200.cpp new file mode 100644 index 000000000..e05b2f383 --- /dev/null +++ b/ve/ve4200.cpp @@ -0,0 +1,185 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "ve4.h" +#include "ve4200a.h" + +#include "condv.h" +#include "rcondv.h" +#include "doc.h" +#include "rdoc.h" + +#include "../mg/anamag.h" + +class TAggiornaIVA_msk : public TAutomask +{ +private: + bool anteprima(TISAM_recordset& recset) const; + bool aggiorna(TISAM_recordset& recset) const; + +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + bool elabora(int logicnum) const; + TAggiornaIVA_msk() : TAutomask("ve4200a") {} +}; + +bool TAggiornaIVA_msk::anteprima(TISAM_recordset& recset) const +{ + const TRecnotype tot = recset.items(); + if (tot == 0) + return warning_box(TR("Non ci sono record da elaborare")); + + TCursor* cur = recset.cursor(); + TLocalisamfile& arc = cur->file(); + + const char *fields = RDOC_CODIVA; + const char* head = "IVA@4"; + switch(arc.num()) + { + case LF_RIGHEDOC: + fields = RDOC_ANNO"|"RDOC_CODNUM"|"RDOC_NDOC"|33->"DOC_DATADOC"|33->"DOC_STATO"|"RDOC_CODART"|"RDOC_CODIVA; + head = "Anno|Num.|Doc.@7|Data@10|Stato|Articolo@20|IVA@4"; + break; + case LF_ANAMAG: + fields = ANAMAG_CODART"|"ANAMAG_DESCR"|"ANAMAG_CODIVA; + head = "Articolo@20|Descrizione@50|IVA@4"; + break; + case LF_RCONDV: + fields = RCONDV_TIPO"|"RCONDV_CODCF"|"RCONDV_COD"|52->"CONDV_VALFIN"|"RCONDV_CODRIGA"|"RCONDV_CODIVA; + head = "Tipo|Cliente|Cod.|Data Fine@10|Articolo@20|IVA@4"; + break; + default: break; + } + + TCursor_sheet sheet(cur, fields, arc.description(), head, 0, 1); + return sheet.run() == K_ENTER; +} + +bool TAggiornaIVA_msk::aggiorna(TISAM_recordset& recset) const +{ + const TRecnotype tot = recset.items(); + + if (tot == 0 || !yesno_box(FR("Si conferma l'aggiornamento di %ld record?"), tot)) + return false; + + TLocalisamfile& arc = recset.cursor()->file(); + TRectype& rec = arc.curr(); + const TString& newiva = get(F_NEWCODIVA); + + TProgind pi(tot, TR("Aggiornamento codice IVA")); + for (bool ok = recset.move_first(); ok; ok = recset.move_next()) + { + if (!pi.addstatus(1)) + return false; + rec.put("CODIVA", newiva); + if (arc.rewrite() != NOERR) + return cantwrite_box(arc.name()); + } + return true; +} + + +bool TAggiornaIVA_msk::elabora(int logicnum) const +{ + const TString& oldiva = get(F_OLDCODIVA); + const TDate dal = get(F_DAL); + const TDate al(31,12,dal.year()); + const TString& codnum = get(F_CODNUM); + const TString& stato = get(F_STATO); + + TString query; + query << "USE " << logicnum << " SELECT (CODIVA==\"" << oldiva << "\")"; + switch (logicnum) + { + case LF_RIGHEDOC: + { + query << "&&(BETWEEN(33->DATADOC," << dal.date2ansi() << "," << al.date2ansi() << "))" + << "&&(33->STATO==\"" << stato << "\")"; + query << "\nJOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM==CODNUM NDOC==NDOC"; + TString range; + range << "PROVV=D ANNO=" << dal.year() << " CODNUM=" << codnum; + query << "\nFROM " << range << "\nTO " << range; + } + break; + case LF_RCONDV: + { + query << "&&(STR((ANSI(52->VALFIN)==0)||(ANSI(52->VALFIN)>=" << dal.date2ansi() <<")))"; + query << "\nJOIN CONDV INTO TIPO=TIPO CATVEN==CATVEN TIPOCF=TIPOCF CODCF==CODCF COD==COD"; + } + break; + default: + break; + } + + TISAM_recordset recset(query); + + if (!anteprima(recset)) + return false; + + return aggiorna(recset); +} + +bool TAggiornaIVA_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + return true; +} + +class TAggiornaIVA_app : public TSkeleton_application +{ +protected: + virtual bool create(); + virtual void main_loop(); +}; + +bool TAggiornaIVA_app::create() +{ + Tdninst dninst; + bool good = dninst.find_serno(); + if (good) + { + TString msg; + good = dninst.test_cmdline("MustCall", false, msg) == 0; + } + if (!good) + return error_box(FR("Chiave %d non abilitata all'utilizzo di questa procedura"), dongle().number()); + return TSkeleton_application::create(); +} + + +void TAggiornaIVA_app::main_loop() +{ + TAggiornaIVA_msk m; + while (m.run() == K_ENTER) + { + const int file = m.get_int(F_FILE); + switch (file) + { + case LF_DOC: + case LF_RIGHEDOC: + m.elabora(LF_RIGHEDOC); + break; + case LF_ANAMAG: + m.elabora(LF_ANAMAG); + break; + case LF_CONDV: + case LF_RCONDV: + m.elabora(LF_RCONDV); + break; + default: break; + } + } +} + +int ve4200(int argc, char* argv[]) +{ + TAggiornaIVA_app r; + r.run(argc, argv, TR("Aggiornamento codici IVA")); + return 0; +} diff --git a/ve/ve4200a.h b/ve/ve4200a.h new file mode 100644 index 000000000..9b3f786f4 --- /dev/null +++ b/ve/ve4200a.h @@ -0,0 +1,7 @@ +#define F_FILE 101 +#define F_DAL 102 +#define F_CODNUM 103 +#define F_STATO 104 + +#define F_OLDCODIVA 111 +#define F_NEWCODIVA 112 diff --git a/ve/ve4200a.uml b/ve/ve4200a.uml new file mode 100644 index 000000000..04c04838e --- /dev/null +++ b/ve/ve4200a.uml @@ -0,0 +1,95 @@ +#include "ve4200a.h" + +PAGE "Aggiornamento codice IVA" -1 -1 37 13 + +RADIOBUTTON F_FILE 2 34 +BEGIN + PROMPT 1 0 "@bArchivio da elaborare" + ITEM "47|Anagrafica di magazzino" + ITEM "53|Condizioni di vendita" + ITEM "33|Documenti" +END + +GROUPBOX DLG_NULL 34 5 +BEGIN + PROMPT 1 5 "@bParametri di selezione" +END + +DATE F_DAL +BEGIN + PROMPT 2 6 "Data iniziale " + CHEKCTYPE REQUIRED + FLAGS "A" +END + +STRING F_CODNUM 4 +BEGIN + PROMPT 2 7 "Numerazione " + FLAGS "U" + USE %NUM + INPUT CODTAB F_CODNUM + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@60" S0 + OUTPUT F_CODNUM CODTAB + CHECKTYPE REQUIRED +END + +STRING F_STATO 1 +BEGIN + PROMPT 2 8 "Stato " + FLAGS "U" + USE %STD + INPUT CODTAB F_STATO + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@60" S0 + OUTPUT F_STATO CODTAB + CHECKTYPE REQUIRED +END + + +GROUPBOX DLG_NULL 34 4 +BEGIN + PROMPT 1 10 "@bParametri di elaborazione" +END + +STRING F_OLDCODIVA 4 +BEGIN + PROMPT 2 11 "Vecchio codice IVA " + FLAGS "U" + USE %IVA + INPUT CODTAB F_OLDCODIVA + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@60" S0 + OUTPUT F_OLDCODIVA CODTAB + CHECKTYPE REQUIRED +END + +STRING F_NEWCODIVA 4 +BEGIN + PROMPT 2 12 "Nuovo codice IVA " + FLAGS "U" + COPY USE F_OLDCODIVA + INPUT CODTAB F_NEWCODIVA + COPY DISPLAY F_OLDCODIVA + OUTPUT F_NEWCODIVA CODTAB + CHECKTYPE REQUIRED + STR_EXPR #F_NECODIVA!=#F_OLDCODIVA + WARNING "Inserire un codice diverso dal precedente" +END + +STRING DLG_PROFILE 256 24 +BEGIN + PROMPT 1 -1 "Profilo " + PSELECT + FLAGS "H" +END + +ENDPAGE + +TOOLBAR "" 0 0 0 2 + +#include + +ENDPAGE + +ENDMASK diff --git a/ve/ve8.cpp b/ve/ve8.cpp index 435d0fae4..88830bd82 100755 --- a/ve/ve8.cpp +++ b/ve/ve8.cpp @@ -5,13 +5,11 @@ int main( int argc, char** argv ) { const int r = (argc > 1) ? argv[1][1]-'0' : -1; - switch (r) { case 0: default: ve8100(argc, argv); break; // lista ritenute fiscali } - exit(0); return 0; } diff --git a/ve/ve8100.cpp b/ve/ve8100.cpp index e5c1c3332..1e9669349 100755 --- a/ve/ve8100.cpp +++ b/ve/ve8100.cpp @@ -2,21 +2,16 @@ #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" +#include "../gv/gvlib.h" + +#include + //////////////////////////////////////////////////////// // MASCHERA //////////////////////////////////////////////////////// @@ -131,23 +126,19 @@ void TListaRitFisc::main_loop() break; case K_ENTER: { - //report e book dei report TDocument_report rep; rep.load("ve8100a"); TRecordset * r = rep.recordset(); if (r != NULL) { - TVariant var; - var = m.get(F_NUMINI); + TVariant var = m.get(F_NUMINI); r->set_var("#DANUM", var); var = m.get(F_NUMFIN); r->set_var("#ANUM", var); var = m.get(F_CODNUM); r->set_var("#NUM", var); } - TReport_book book; - book.add(rep); - book.print_or_preview(); //stampa il book dei report + rep.print_or_preview(); //stampa il book dei report } } } diff --git a/ve/vearea.men b/ve/vearea.men index abb3b341c..9a09a760e 100755 --- a/ve/vearea.men +++ b/ve/vearea.men @@ -220,8 +220,10 @@ Picture = Module = 0 Flags = "" Item_01 = "Modifica valori", "ve4 -0", "F" -Item_02 = "Invio", [ACQVEN_025] -Item_03 = "Ricezione", [ACQVEN_026] +Item_02 = "Aggiornamento Codici IVA", "ve4 -1", "FP" +Item_03 = "Invio", [ACQVEN_025] +Item_04 = "Ricezione", [ACQVEN_026] + [ACQVEN_022] Caption = "Configurazione magazzino"