From 08991b96964667013d90dddbd6ce4d9c4ad4bc0f Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 14 Jun 1996 15:48:34 +0000 Subject: [PATCH] Corretta tabella elaborazioni differite git-svn-id: svn://10.65.10.50/trunk@2994 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/batbeld.h | 4 +-- ve/batbeld.uml | 52 ++++++++++++++++++----------------- ve/ve6.cpp | 3 +- ve/ve6100.cpp | 55 ++----------------------------------- ve/ve6200.cpp | 68 ++++++++++++++++------------------------------ ve/ve6300.cpp | 74 ++++++++++++++++++++++++-------------------------- ve/ve6gen.h | 29 ++++++-------------- 7 files changed, 102 insertions(+), 183 deletions(-) diff --git a/ve/batbeld.h b/ve/batbeld.h index c65768aad..1e5f036d1 100755 --- a/ve/batbeld.h +++ b/ve/batbeld.h @@ -1,8 +1,8 @@ // campi della tabella di gestione delle elaborazioni differite #define F_CODICE 101 #define F_DESCR 102 -#define F_CODNUM 103 -#define F_PROGRAMMA 104 +#define F_TIPO 103 +#define F_CODNUM 104 #define F_TIPODOC_I_1 111 #define F_STATO_I_DOC_I_1 121 #define F_STATO_F_DOC_I 131 diff --git a/ve/batbeld.uml b/ve/batbeld.uml index 2025824a3..5cdaadc00 100755 --- a/ve/batbeld.uml +++ b/ve/batbeld.uml @@ -6,7 +6,7 @@ ENDPAGE PAGE "Tabella elaborazioni differite" -1 -1 0 0 -GROUPBOX DLG_NULL 78 4 +GROUPBOX DLG_NULL 78 5 BEGIN PROMPT 1 1 "@bElaborazione" END @@ -43,14 +43,24 @@ BEGIN KEY 2 END +LIST F_TIPO 50 +BEGIN + PROMPT 2 4 "Tipo " + ITEM " |Altro" + ITEM "CO|Consegna Ordini" + ITEM "FB|Fatturazione bolle" + ITEM "SM|Scarico magazzino" + ITEM "TC|Trasferimento a contabilita'" +END + GROUPBOX DLG_NULL 78 5 BEGIN - PROMPT 1 5 "@bDocumento originale" + PROMPT 1 6 "@bDocumento originale" END STRING F_TIPODOC_I_1 4 BEGIN - PROMPT 2 6 "Tipo documento " + PROMPT 2 7 "Tipo documento " FIELD S2[1,4] CHECKTYPE REQUIRED WARNING "E' necessario specificare un valore" @@ -63,7 +73,7 @@ END STRING F_STATO_I_DOC_I_1 1 BEGIN - PROMPT 2 7 "Stato iniziale " + PROMPT 2 8 "Stato iniziale " FLAGS "U" FIELD S7[1,1] CHECKTYPE REQUIRED @@ -72,7 +82,7 @@ END STRING F_STATO_F_DOC_I 1 BEGIN - PROMPT 2 8 "Stato finale " + PROMPT 2 9 "Stato finale " FLAGS "U" FIELD S4 CHECKTYPE REQUIRED @@ -81,7 +91,7 @@ END STRING F_TIPODOC_I_2 4 BEGIN - PROMPT 30 6 "" + PROMPT 30 7 "" FIELD S2[5,8] WARNING "E' necessario specificare un valore" COPY USE F_TIPODOC_I_1 @@ -93,7 +103,7 @@ END STRING F_STATO_I_DOC_I_2 1 BEGIN - PROMPT 30 7 "" + PROMPT 30 8 "" FLAGS "U" FIELD S7[2,2] WARNING "E' necessario specificare un valore" @@ -102,7 +112,7 @@ END STRING F_TIPODOC_I_3 4 BEGIN - PROMPT 39 6 "" + PROMPT 39 7 "" FIELD S2[9,12] WARNING "E' necessario specificare un valore" COPY USE F_TIPODOC_I_1 @@ -114,7 +124,7 @@ END STRING F_STATO_I_DOC_I_3 1 BEGIN - PROMPT 39 7 "" + PROMPT 39 8 "" FLAGS "U" FIELD S7[3,3] WARNING "E' necessario specificare un valore" @@ -123,7 +133,7 @@ END STRING F_TIPODOC_I_4 4 BEGIN - PROMPT 48 6 "" + PROMPT 48 7 "" FIELD S2[13,15] WARNING "E' necessario specificare un valore" COPY USE F_TIPODOC_I_1 @@ -135,7 +145,7 @@ END STRING F_STATO_I_DOC_I_4 1 BEGIN - PROMPT 48 7 "" + PROMPT 48 8 "" FLAGS "U" FIELD S7[4,4] WARNING "E' necessario specificare un valore" @@ -144,7 +154,7 @@ END STRING F_TIPODOC_I_5 4 BEGIN - PROMPT 57 6 "" + PROMPT 57 7 "" FIELD S2[16,19] WARNING "E' necessario specificare un valore" COPY USE F_TIPODOC_I_1 @@ -156,7 +166,7 @@ END STRING F_STATO_I_DOC_I_5 1 BEGIN - PROMPT 57 7 "" + PROMPT 57 8 "" FLAGS "U" FIELD S7[5,5] WARNING "E' necessario specificare un valore" @@ -165,12 +175,12 @@ END GROUPBOX DLG_NULL 78 5 BEGIN - PROMPT 1 10 "@bDocumento finale" + PROMPT 1 11 "@bDocumento finale" END STRING F_TIPODOC_F 4 BEGIN - PROMPT 2 11 "Tipo documento " + PROMPT 2 12 "Tipo documento " FIELD S8 CHECKTYPE REQUIRED WARNING "E' necessario specificare un valore" @@ -182,7 +192,7 @@ END STRING F_STATO_F_DOC_F 1 BEGIN - PROMPT 2 12 "Stato finale " + PROMPT 2 13 "Stato finale " FLAGS "U" FIELD S9 CHECKTYPE REQUIRED @@ -191,7 +201,7 @@ END STRING F_CODNUM 4 BEGIN - PROMPT 2 13 "Codice numerazione " + PROMPT 2 14 "Codice numerazione " FIELD S5 USE NUM INPUT CODTAB F_CODNUM @@ -202,14 +212,6 @@ BEGIN WARNING "E' necessario specificare un codice di numerazione" END -STRING F_PROGRAMMA 50 -BEGIN - PROMPT 2 15 "Metodo di elaborazione " - FLAGS "G" - FIELD S1 - CHECKTYPE REQUIRED -END - ENDPAGE ENDMASK diff --git a/ve/ve6.cpp b/ve/ve6.cpp index efc182812..e8726f00b 100755 --- a/ve/ve6.cpp +++ b/ve/ve6.cpp @@ -1,7 +1,8 @@ -#include #include #include +#include + #include "ve6.h" // dichiarazioni delle procedure #define usage "Errore - Utilizzo: %s -1 -2 -3" diff --git a/ve/ve6100.cpp b/ve/ve6100.cpp index 94550575e..fb9313687 100755 --- a/ve/ve6100.cpp +++ b/ve/ve6100.cpp @@ -1,58 +1,7 @@ -// ve6100.cpp: modulo per la gestione della tabella elaborazioni differite. +// ve6100.cpp: ex-modulo per la gestione della tabella elaborazioni differite. -#include -#include "batbeld.h" - -class TGestione_ELD : public Tab_application -{ -protected: // TRelation_application - virtual bool user_create() ; - virtual bool protected_record(TRectype& rec) ; - virtual void init_insert_mode(TMask& m) ; - virtual void init_modify_mode(TMask& m); - virtual int rewrite(const TMask& m); - virtual void init_query_mode (TMask& m); - -public: - TGestione_ELD() {} - virtual ~TGestione_ELD() {} -}; - -inline bool TGestione_ELD::user_create() -{ return Tab_application::user_create(); } - -inline bool TGestione_ELD::protected_record(TRectype& rec) -{ return Tab_application::protected_record(rec); } - -inline void TGestione_ELD::init_insert_mode(TMask& m) -{ - Tab_application::init_insert_mode(m); - m.disable (F_AVVIA); // disabilita il button quando il record non e' ancora stato registrato - return; -} - -inline int TGestione_ELD::rewrite(const TMask& m) -{ return Tab_application::rewrite (m); } - -void TGestione_ELD::init_modify_mode(TMask& m) -{ - Tab_application::init_modify_mode(m); - m.enable (F_AVVIA); // abilita la pressione del tasto solo quando il record e' stato registrato - TString temp = m.get(F_CODICE); - if (temp == "01") - m.enable(F_PROGRAMMA, FALSE); -} - -void TGestione_ELD::init_query_mode (TMask& m) -{ - Tab_application::init_query_mode(m); - m.enable (F_AVVIA, FALSE); // disabilita il button anche in modalita' ricerca - return; -} int ve6100 (int argc, char **argv) { - TGestione_ELD a; - a.run (argc, argv, "Gestione elaborazioni differite"); - return TRUE; + return 1; } diff --git a/ve/ve6200.cpp b/ve/ve6200.cpp index 951a3c18a..2fe3a7929 100755 --- a/ve/ve6200.cpp +++ b/ve/ve6200.cpp @@ -1,23 +1,13 @@ // ve6200.cpp: modulo per la generazione dei documenti in modo BATCH. +#include #include -#include #include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include +#include + #include "ve6000.h" #include "ve6retv.h" // valori di ritorno dalle varie funzioni #include "ve6gen.h" // dichiarazione della classe base @@ -40,41 +30,33 @@ // funzione quasi uguale a quella del TSheet -void TInterattivo_sheet::page_build(long first, byte rows) +void TInterattivo_sheet::get_row(long first, TToken_string& l) { - TToken_string l(256); - *cursor() = (TRecnotype)first; - for (int r = 0; r < rows; r++, ++(*cursor())) + + const int last = fields_array().last(); + for (int i = 0; i <= last; i++) { - l.cut(0); - const int last = fields().last(); - for (int i = 0; i <= last; i++) - { - const TRecfield* rf = (TRecfield*)fields().objptr(i); - const char* s = rf ? (const char*)*rf : ""; - l.add(s); - } -// cambiamenti dalla routine TSheet::page_build : -// stabilisce per default che la quantità da evadere è quella non ancora evasa - const long qta = l.get_long(TOKEN_QTA); - const long qtaevasa = l.get_long(TOKEN_QTAEVASA); -// char buffer[16]; -// _ltoa(qta-qtaevasa,buffer,10); -// TString daevadere(buffer); - real n(qta-qtaevasa); - l.add((const char *)n.string(11,3),TOKEN_QTA_DA_EVADERE); - set_row(l, r); + const TRecfield* rf = (TRecfield*)fields_array().objptr(i); + const char* s = rf ? (const char*)*rf : ""; + l.add(s); } + +// stabilisce per default che la quantità da evadere è quella non ancora evasa + const long qta = l.get_long(TOKEN_QTA); + const long qtaevasa = l.get_long(TOKEN_QTAEVASA); + const real qtadaevadere = qta - qtaevasa; + l.add(qtadaevadere.string(11,3), TOKEN_QTA_DA_EVADERE); } // quando l'utente fa doppio click o preme selezione, la on_key riceve un K_ENTER // e qui apro una mascherina in cui chiedo la qta da evadere, CONFERMA o ANNULLA bool TInterattivo_sheet::on_key (KEY k) { +/* // K_ENTER e' E_MOUSE_DBL, mentre K_SPACE e' E_MOUSE_DOWN if (k==K_ENTER) - { + { // maschera per l'inserimento del valore TMask m("Modifica", 1, 33, 7); m.add_number (CAMPO_DAEVADERE, 0, "Quantità da evadere", 1, 3, 11); @@ -103,6 +85,7 @@ bool TInterattivo_sheet::on_key (KEY k) } return FALSE; } +*/ return TCursor_sheet::on_key(k); } @@ -223,9 +206,6 @@ int TBatch_crea_doc::run_mask(TRectype& first, TRectype& last) _msk->show (F_CODICE_AGENTE_A, FALSE); } -// nasconde il codice elaborazione: ? - _msk->show (F_CODICE_ELAB, FALSE); - if (_msk->run() == K_ESC) // runna la maschera: se premuto esc, esci { delete _msk; @@ -235,9 +215,8 @@ int TBatch_crea_doc::run_mask(TRectype& first, TRectype& last) _ordinamento = _msk->get_int (F_ORDINAMENTO_EMISSIONE); // ordinamento (RadioButton) _raggruppa = _msk->get_bool (F_RAGGRUPPA); // raggruppa più doc. originali ? _per_articolo = _msk->get_bool (F_RAGGR_ARTICOLI); // raggruppa linee con lo stesso articolo - TDate d((const char*) _msk->get(F_DATA_ELAB)); // Data documenti finali - _datadoc = d; - _anno = d.year(); // anno è una componente della chiave + _datadoc = _msk->get(F_DATA_ELAB); // Data documenti finali + _anno = _datadoc.year(); // anno è una componente della chiave TString temps; // temporanea per rilevare i valori dei campi della maschera TLocalisamfile f(LF_DOC); @@ -1030,8 +1009,9 @@ void TBatch_crea_doc::raggruppa_righe (TRecord_array& doc) processed.set(i); // la riga trovata e' processata (e' la riga pilota) int prox; // numero della prossima riga da raggruppare while (prox_riga (prox, doc, processed, confronto)) - { - pilota.put("QTA", pilota.get_real("QTA") + doc.row(prox).get_real("QTA")); // aggiorna il contenuto della riga pilota + { + const real qta = pilota.get_real("QTA") + doc.row(prox).get_real("QTA"); + pilota.put("QTA", qta); // aggiorna il contenuto della riga pilota doc.row(current, FALSE) = pilota; processed.set(prox); // indica che la riga e' stata processata tocopy.reset(prox); // indica che la riga non e' da copiare, perche' inglobata nella riga pilota diff --git a/ve/ve6300.cpp b/ve/ve6300.cpp index 91938dcb7..66483fc41 100755 --- a/ve/ve6300.cpp +++ b/ve/ve6300.cpp @@ -1,18 +1,13 @@ // ve6300.cpp. Composizione interattiva dei documenti. -#include +#include #include -#include #include #include -#include -#include -#include -#include #include -#include #include #include + #include "ve6retv.h" #include "ve6300.h" #include "ve6gen.h" @@ -40,25 +35,27 @@ inline TInterattivo_crea_doc& app() { return (TInterattivo_crea_doc&) main_app() bool TInterattivo_crea_doc::create() { _interattivo = TRUE; -// _stesso_anno_fiscale = FALSE; - int cargc = argc(); + const int cargc = argc(); const char **vargv = argv(); - if (cargc>=2) - { - if (cargc<5) fatal_box ("Numero di parametri insufficiente: chiave incompleta!"); - if (cargc>=5) - { + if (cargc >= 2) + { + if (cargc < 5) + return error_box ("Numero di parametri insufficiente: chiave incompleta!"); + + if (cargc >= 5) + { _codnum = vargv[2]; _anno = vargv[3]; _provv = vargv[4]; _ndoc = vargv[5]; - } - if (cargc==7) _crea_doc = TRUE; - else _crea_doc = FALSE; - if (cargc>7) message_box ("Sono presenti piu' di 6 argomenti sulla linea di comando: possibile errore"); - } + _crea_doc = (cargc == 7); + } + + if (cargc > 7) + message_box ("Sono presenti piu' di 6 argomenti sulla linea di comando: possibile errore"); + } dispatch_e_menu(BAR_ITEM(1)); return TRUE; @@ -72,7 +69,8 @@ bool TInterattivo_crea_doc::destroy() bool TInterattivo_crea_doc::menu(MENU_TAG) { // if (errore_fatale (set_vars())) return FALSE; - if (errore_fatale (componi_doc_finale())) return FALSE; + if (errore_fatale (componi_doc_finale())) + return FALSE; return TRUE; } @@ -114,29 +112,29 @@ bool TInterattivo_crea_doc::tipo_doc_handler (TMask_field& field, KEY key) { if (field.to_check(key)) { - TFixed_string tdd(field.get(),4); // tipo del documento destinazione selezionato - tdd.trim(); - TTable t("%TIP"); - t.zero(); - t.put ("CODTAB", tdd); // cerca tipo del documento destinazione - t.read (_isgteq); + TFixed_string tdd(field.get(),4); // tipo del documento destinazione selezionato + tdd.trim(); + TTable t("%TIP"); + t.zero(); + t.put ("CODTAB", tdd); // cerca tipo del documento destinazione + t.read (_isgteq); /* if (err = t.read (_isgteq)) // si posiziona sul record relativo al documento del tipo specificato { error_box ("TElaborazioni::run_mask() : errore di lettura %d da tab(TIP)", err); return READ_ERROR; } */ - if (t.get ("CODTAB") != tdd) // verifica che il tipo di documento trovato sia quello richiesto - { - error_box ("TElaborazioni::run_mask() : non esiste il tipo documento %s in tab(TIP)", (const char *)tdd); - return DOC_TYPE_NOT_FOUND; - } - TFilename profilo(t.get ("S4")); // nome del profilo documento (nome del .ini associato al tipo documento originale) - profilo.ext("ini"); - TConfig profilo_doc(profilo); // file di configurazione (ini) del documento - TString tipocf = (profilo_doc.get("TIPOCF", "MAIN")); - tipocf.cut(1); - field.mask().set(F_TIPOCF, tipocf); + if (t.get ("CODTAB") != tdd) // verifica che il tipo di documento trovato sia quello richiesto + { + error_box ("TElaborazioni::run_mask() : non esiste il tipo documento %s in tab(TIP)", (const char *)tdd); + return DOC_TYPE_NOT_FOUND; + } + TFilename profilo(t.get ("S4")); // nome del profilo documento (nome del .ini associato al tipo documento originale) + profilo.ext("ini"); + TConfig profilo_doc(profilo); // file di configurazione (ini) del documento + TString tipocf = (profilo_doc.get("TIPOCF", "MAIN")); + tipocf.cut(1); + field.mask().set(F_TIPOCF, tipocf); } } @@ -293,7 +291,7 @@ int TInterattivo_crea_doc::componi_doc_finale() if (primo_pilota) { primo_pilota = FALSE; - f = tempr; + f.curr() = tempr; f.put ("CODNUM", _codnum); f.put ("ANNO", _anno); f.put ("PROVV", _provv); diff --git a/ve/ve6gen.h b/ve/ve6gen.h index de265e49c..97636e0d8 100755 --- a/ve/ve6gen.h +++ b/ve/ve6gen.h @@ -3,27 +3,14 @@ #ifndef _TELABORAZIONI_DECL #define _TELABORAZIONI_DECL -#include -#include -#include -#include +#include #include -#include -#include -#include -#include -#include -#include -#include +#include + #include "ve6retv.h" #include "ve6300.h" #include "ve6gen.h" -#include -//#include -#include "ve6.h" -#include - #define _TDD_IN_FILTER #define STATO_PPT '*' @@ -67,12 +54,14 @@ class TInterattivo_sheet : public TCursor_sheet { protected: virtual bool on_key(KEY); + + // modificata per fare apparire anche le qta' da evadere + virtual void get_row(long n, TToken_string& l); + public: - virtual void page_build(long first, byte rows); // modificata per fare apparire anche le qta' da evadere TInterattivo_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons = 0) - : TCursor_sheet(cursor, fields, title, head, buttons) - {}; - virtual ~TInterattivo_sheet() {}; + : TCursor_sheet(cursor, fields, title, head, buttons) { } + virtual ~TInterattivo_sheet() { } }; class TBatch_crea_doc : public TElaborazioni