diff --git a/cg/cg0400b.uml b/cg/cg0400b.uml index ac13b421c..07c1755ba 100755 --- a/cg/cg0400b.uml +++ b/cg/cg0400b.uml @@ -1,72 +1,72 @@ -#include "cg0400.h" - -PAGE "Stampa riepilogo progressivi IVA" -1 -1 78 16 - -GROUPBOX DLG_NULL 78 3 -BEGIN - PROMPT 1 0 "" -END - -NUMBER F_CODDITTA 5 -BEGIN - PROMPT 3 1 "Ditta " - FLAGS "FRD" - USE LF_NDITTE KEY 1 - CHECKTYPE REQUIRED - INPUT CODDITTA F_CODDITTA - DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale @50" RAGSOC - OUTPUT F_RAGSOC RAGSOC -END - -STRING F_RAGSOC 50 -BEGIN - PROMPT 17 1 "Ragione " - FLAGS "D" -END - -DATE F_DATASTAMPA -BEGIN - PROMPT 3 4 "Data stampa " - HELP "Data in cui viene effettuata la stampa" - FLAGS "A" -END - -NUMBER F_ANNO 4 -BEGIN - PROMPT 3 6 "Anno riepilogo " - FLAGS "A" - CHECKTYPE REQUIRED -END - -LISTBOX F_MESE 9 -BEGIN - PROMPT 3 7 "Mese riepilogo " - FLAGS "AM" -END - -BOOLEAN F_STAMPA -BEGIN - PROMPT 3 9 "Stampa progressivi da inizio anno " -END - -/* -BUTTON DLG_PRINT 10 2 -BEGIN - PROMPT -12 -1 "~Stampa" -END -*/ - -BUTTON DLG_OK 10 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 10 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK +#include "cg0400.h" + +PAGE "Stampa riepilogo progressivi IVA" -1 -1 78 16 + +GROUPBOX DLG_NULL 78 3 +BEGIN + PROMPT 1 0 "" +END + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 3 1 "Ditta " + FLAGS "FRD" + USE LF_NDITTE KEY 1 + CHECKTYPE REQUIRED + INPUT CODDITTA F_CODDITTA + DISPLAY "Codice" CODDITTA + DISPLAY "Ragione sociale @50" RAGSOC + OUTPUT F_RAGSOC RAGSOC +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 17 1 "Ragione " + FLAGS "D" +END + +DATE F_DATASTAMPA +BEGIN + PROMPT 3 4 "Data stampa " + HELP "Data in cui viene effettuata la stampa" + FLAGS "A" +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 3 6 "Anno riepilogo " + FLAGS "A" + CHECKTYPE REQUIRED +END + +LISTBOX F_MESE 9 +BEGIN + PROMPT 3 7 "Mese riepilogo " + FLAGS "AM" +END + +BOOLEAN F_STAMPA +BEGIN + PROMPT 3 9 "Stampa progressivi da inizio anno " +END + +/* +BUTTON DLG_PRINT 10 2 +BEGIN + PROMPT -12 -1 "~Stampa" +END +*/ + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2100s.uml b/cg/cg2100s.uml index f878f1074..3d2fa4cd8 100755 --- a/cg/cg2100s.uml +++ b/cg/cg2100s.uml @@ -1,316 +1,316 @@ -#include "cg2100.h" - -TOOLBAR "" 0 20 0 2 - -BUTTON DLG_OK 10 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_CANCEL 10 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - - -PAGE "Pagamento" -1 -1 77 20 - -GROUPBOX DLG_NULL 78 6 -BEGIN - PROMPT 1 0 "@BPartita" -END - -NUMBER S_ANNO 4 -BEGIN - PROMPT 2 1 "Anno partita " - FLAGS "RD" -END - -STRING S_NUM 7 -BEGIN - PROMPT 38 1 "Numero partita " - FLAGS "D" -END - -STRING S_DESCR 50 -BEGIN - PROMPT 2 2 "Descrizione " - FLAGS "D" -END - -NUMBER S_RATA 4 -BEGIN - PROMPT 2 3 "Rata " - FLAGS "D" -END - -DATE S_DATASCAD -BEGIN - PROMPT 20 3 "Data " - FLAGS "D" -END - -NUMBER S_RESIDUO 15 -BEGIN - PROMPT 44 3 "Residuo " - PICTURE "." - FLAGS "D" -END - -NUMBER S_IMPORTOVAL 15 3 -BEGIN - PROMPT 2 4 "Importo in valuta " - PICTURE ".3" - FLAGS "D" -END - -NUMBER S_IMPORTO 15 -BEGIN - PROMPT 44 4 "Importo in lire " - PICTURE "." - FLAGS "D" -END - - -GROUPBOX DLG_NULL 78 13 -BEGIN - PROMPT 1 6 "@BPagamento" -END - -NUMBER S_IMPORTOPAG 15 -BEGIN - PROMPT 2 7 "Importo pagamento " - PICTURE "." - FIELD IMPORTOPAG -END - -NUMBER S_IMPORTOPAG 15 -BEGIN - PROMPT 38 7 "Ritenute professionali " - PICTURE "." - FIELD RITENUTE -END - -BOOLEAN S_SALDOACC -BEGIN - PROMPT 2 8 "Saldo " - FIELD SALDOACC -END - -DATE S_DATAPAG -BEGIN - PROMPT 38 8 "Data pagamento " - FIELD DATAPAG -END - -STRING S_CODPAG 4 -BEGIN - PROMPT 2 9 "Pagamento " - FLAGS "UZ" - USE CPG - INPUT CODTAB S_CODPAG - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione@50" S0 - DISPLAY "Tipo" I0 - OUTPUT S_CODPAG CODTAB - OUTPUT S_DESPAG S0 - OUTPUT S_TIPOPAG I0 - FIELD CODPAG -END - -STRING S_DESPAG 50 -BEGIN - PROMPT 24 9 "" - USE CPG KEY 2 - INPUT S0 S_DESPAG - DISPLAY "Descrizione@50" S0 - DISPLAY "Codice" CODTAB - DISPLAY "Tipo" I0 - COPY OUTPUT S_CODPAG -END - -LIST S_TIPOPAG 2 40 -BEGIN - PROMPT 2 10 "Tipo pagamento " - ITEM "1|Rimessa Diretta" - ITEM "2|Tratta" - ITEM "3|Ricevuta Bancaria" - ITEM "4|Cessione" - ITEM "5|Paghero'" - ITEM "6|Lettera di credito" - ITEM "7|Tratta accettata" - ITEM "8|Rapporti interbancari diretti" - ITEM "9|Bonifico" - ITEM "10|Altro" - FIELD TIPOPAG -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 11 "@bConto di contropartita" -END - -LIST S_TIPO 1 12 -BEGIN - PROMPT 2 12 "Tipo " - ITEM " |Conto" - ITEM "C|Cliente" - ITEM "F|Fornitore" - FIELD TIPOCF - FLAGS "H" -END - -NUMBER S_GRUPPO 3 -BEGIN - PROMPT 28 11 "Gruppo " - FIELD GRUPPO - CHECKTYPE REQUIRED -END - -NUMBER S_CONTO 3 -BEGIN - PROMPT 44 11 "Conto " - FIELD CONTO - CHECKTYPE REQUIRED -END - -NUMBER S_SOTTOCONTO 6 -BEGIN - PROMPT 58 11 "Sottoconto " - FIELD SOTTOCONTO - USE LF_PCON - INPUT GRUPPO S_GRUPPO - INPUT CONTO S_CONTO - INPUT SOTTOCONTO S_SOTTOCONTO - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - DISPLAY "Descrizione@50" DESCR - OUTPUT S_GRUPPO GRUPPO - OUTPUT S_CONTO CONTO - OUTPUT S_SOTTOCONTO SOTTOCONTO - OUTPUT S_DESCRCONTO DESCR - CHECKTYPE REQUIRED -END - -STRING S_DESCRCONTO 50 -BEGIN - PROMPT 2 12 "Descrizione conto " - USE LF_PCON KEY 2 - INPUT DESCR S_DESCRCONTO - DISPLAY "Descrizione@50" DESCR - DISPLAY "Gruppo" GRUPPO - DISPLAY "Conto" CONTO - DISPLAY "Sottoconto" SOTTOCONTO - COPY OUTPUT S_SOTTOCONTO - CHECKTYPE REQUIRED -END - -STRING S_DESCAGG 50 -BEGIN - PROMPT 2 14 "Descrizione aggiuntiva " - FIELD DESCAGG -END - -NUMBER S_VSABI 5 -BEGIN - PROMPT 2 15 "Vostra Banca - ABI " - FLAGS "Z" - USE %BAN - INPUT CODTAB[1,5] S_VSABI - INPUT CODTAB[6,10] S_VSCAB - DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] - DISPLAY "Denominazione@50" S0 - OUTPUT S_VSABI CODTAB[1,5] - OUTPUT S_VSCAB CODTAB[6,10] - OUTPUT S_DESCVSABI S0 - CHECKTYPE REQUIRED - FIELD VSABI -END - -NUMBER S_VSCAB 5 -BEGIN - PROMPT 30 15 "CAB " - FLAGS "Z" - COPY ALL S_VSABI - CHECKTYPE REQUIRED - FIELD VSCAB -END - -STRING S_DESCVSABI 50 32 -BEGIN - PROMPT 42 15 "" - USE %BAN KEY 2 - INPUT S0 S_DESCVSABI - DISPLAY "Denominazione@50" S0 - DISPLAY "ABI@5" CODTAB[1,5] - DISPLAY "CAB@5" CODTAB[6,10] - COPY OUTPUT S_VSABI - CHECKTYPE REQUIRED -END - -STRING S_AGENTE 5 -BEGIN - PROMPT 2 16 "Agente " - FLAGS "UZ" - USE AGE - INPUT CODTAB S_AGENTE - DISPLAY "Codice" CODTAB - DISPLAY "Descrizione @50" S0 - OUTPUT S_AGENTE CODTAB - OUTPUT S_DESCAGENTE S0 - CHECKTYPE NORMAL - FIELD AGENTE -END - -STRING S_DESCAGENTE 50 -BEGIN - PROMPT 24 16 "" - USE AGE KEY 2 - INPUT S0 S_DESCAGENTE - DISPLAY "Descrizione @50" S0 - DISPLAY "Codice" CODTAB - COPY OUTPUT S_AGENTE - CHECKTYPE NORMAL -END - - -NUMBER S_NSABI 5 -BEGIN - PROMPT 2 17 "Nostra Banca - ABI " - FLAGS "Z" - COPY USE S_VSABI - INPUT CODTAB[1,5] S_NSABI - INPUT CODTAB[6,10] S_NSCAB - COPY DISPLAY S_VSABI - OUTPUT S_NSABI CODTAB[1,5] - OUTPUT S_NSCAB CODTAB[6,10] - FIELD NSABI - CHECKTYPE REQUIRED -END - -NUMBER S_VSCAB 5 -BEGIN - PROMPT 30 17 "CAB " - FLAGS "Z" - COPY ALL S_NSABI - FIELD NSCAB - CHECKTYPE REQUIRED -END - -STRING S_DESCNSABI 50 32 -BEGIN - PROMPT 42 15 "" - COPY USE S_DESCVSABI - INPUT S0 S_DESCNSABI - COPY DISPLAY S_DESCVSABI - COPY OUTPUT S_NSABI - CHECKTYPE REQUIRED -END - -ENDPAGE - -ENDMASK +#include "cg2100.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + + +PAGE "Pagamento" -1 -1 77 20 + +GROUPBOX DLG_NULL 78 6 +BEGIN + PROMPT 1 0 "@BPartita" +END + +NUMBER S_ANNO 4 +BEGIN + PROMPT 2 1 "Anno partita " + FLAGS "RD" +END + +STRING S_NUM 7 +BEGIN + PROMPT 38 1 "Numero partita " + FLAGS "D" +END + +STRING S_DESCR 50 +BEGIN + PROMPT 2 2 "Descrizione " + FLAGS "D" +END + +NUMBER S_RATA 4 +BEGIN + PROMPT 2 3 "Rata " + FLAGS "D" +END + +DATE S_DATASCAD +BEGIN + PROMPT 20 3 "Data " + FLAGS "D" +END + +NUMBER S_RESIDUO 15 +BEGIN + PROMPT 44 3 "Residuo " + PICTURE "." + FLAGS "D" +END + +NUMBER S_IMPORTOVAL 15 3 +BEGIN + PROMPT 2 4 "Importo in valuta " + PICTURE ".3" + FLAGS "D" +END + +NUMBER S_IMPORTO 15 +BEGIN + PROMPT 44 4 "Importo in lire " + PICTURE "." + FLAGS "D" +END + + +GROUPBOX DLG_NULL 78 13 +BEGIN + PROMPT 1 6 "@BPagamento" +END + +NUMBER S_IMPORTOPAG 15 +BEGIN + PROMPT 2 7 "Importo pagamento " + PICTURE "." + FIELD IMPORTOPAG +END + +NUMBER S_IMPORTOPAG 15 +BEGIN + PROMPT 38 7 "Ritenute professionali " + PICTURE "." + FIELD RITENUTE +END + +BOOLEAN S_SALDOACC +BEGIN + PROMPT 2 8 "Saldo " + FIELD SALDOACC +END + +DATE S_DATAPAG +BEGIN + PROMPT 38 8 "Data pagamento " + FIELD DATAPAG +END + +STRING S_CODPAG 4 +BEGIN + PROMPT 2 9 "Pagamento " + FLAGS "UZ" + USE CPG + INPUT CODTAB S_CODPAG + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + DISPLAY "Tipo" I0 + OUTPUT S_CODPAG CODTAB + OUTPUT S_DESPAG S0 + OUTPUT S_TIPOPAG I0 + FIELD CODPAG +END + +STRING S_DESPAG 50 +BEGIN + PROMPT 24 9 "" + USE CPG KEY 2 + INPUT S0 S_DESPAG + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice" CODTAB + DISPLAY "Tipo" I0 + COPY OUTPUT S_CODPAG +END + +LIST S_TIPOPAG 2 40 +BEGIN + PROMPT 2 10 "Tipo pagamento " + ITEM "1|Rimessa Diretta" + ITEM "2|Tratta" + ITEM "3|Ricevuta Bancaria" + ITEM "4|Cessione" + ITEM "5|Paghero'" + ITEM "6|Lettera di credito" + ITEM "7|Tratta accettata" + ITEM "8|Rapporti interbancari diretti" + ITEM "9|Bonifico" + ITEM "10|Altro" + FIELD TIPOPAG +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 11 "@bConto di contropartita" +END + +LIST S_TIPO 1 12 +BEGIN + PROMPT 2 12 "Tipo " + ITEM " |Conto" + ITEM "C|Cliente" + ITEM "F|Fornitore" + FIELD TIPOCF + FLAGS "H" +END + +NUMBER S_GRUPPO 3 +BEGIN + PROMPT 28 11 "Gruppo " + FIELD GRUPPO + CHECKTYPE REQUIRED +END + +NUMBER S_CONTO 3 +BEGIN + PROMPT 44 11 "Conto " + FIELD CONTO + CHECKTYPE REQUIRED +END + +NUMBER S_SOTTOCONTO 6 +BEGIN + PROMPT 58 11 "Sottoconto " + FIELD SOTTOCONTO + USE LF_PCON + INPUT GRUPPO S_GRUPPO + INPUT CONTO S_CONTO + INPUT SOTTOCONTO S_SOTTOCONTO + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT S_GRUPPO GRUPPO + OUTPUT S_CONTO CONTO + OUTPUT S_SOTTOCONTO SOTTOCONTO + OUTPUT S_DESCRCONTO DESCR + CHECKTYPE REQUIRED +END + +STRING S_DESCRCONTO 50 +BEGIN + PROMPT 2 12 "Descrizione conto " + USE LF_PCON KEY 2 + INPUT DESCR S_DESCRCONTO + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT S_SOTTOCONTO + CHECKTYPE REQUIRED +END + +STRING S_DESCAGG 50 +BEGIN + PROMPT 2 14 "Descrizione aggiuntiva " + FIELD DESCAGG +END + +NUMBER S_VSABI 5 +BEGIN + PROMPT 2 15 "Vostra Banca - ABI " + FLAGS "Z" + USE %BAN + INPUT CODTAB[1,5] S_VSABI + INPUT CODTAB[6,10] S_VSCAB + DISPLAY "ABI@5" CODTAB[1,5] + DISPLAY "CAB@5" CODTAB[6,10] + DISPLAY "Denominazione@50" S0 + OUTPUT S_VSABI CODTAB[1,5] + OUTPUT S_VSCAB CODTAB[6,10] + OUTPUT S_DESCVSABI S0 + CHECKTYPE REQUIRED + FIELD VSABI +END + +NUMBER S_VSCAB 5 +BEGIN + PROMPT 30 15 "CAB " + FLAGS "Z" + COPY ALL S_VSABI + CHECKTYPE REQUIRED + FIELD VSCAB +END + +STRING S_DESCVSABI 50 32 +BEGIN + PROMPT 42 15 "" + USE %BAN KEY 2 + INPUT S0 S_DESCVSABI + DISPLAY "Denominazione@50" S0 + DISPLAY "ABI@5" CODTAB[1,5] + DISPLAY "CAB@5" CODTAB[6,10] + COPY OUTPUT S_VSABI + CHECKTYPE REQUIRED +END + +STRING S_AGENTE 5 +BEGIN + PROMPT 2 16 "Agente " + FLAGS "UZ" + USE AGE + INPUT CODTAB S_AGENTE + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione @50" S0 + OUTPUT S_AGENTE CODTAB + OUTPUT S_DESCAGENTE S0 + CHECKTYPE NORMAL + FIELD AGENTE +END + +STRING S_DESCAGENTE 50 +BEGIN + PROMPT 24 16 "" + USE AGE KEY 2 + INPUT S0 S_DESCAGENTE + DISPLAY "Descrizione @50" S0 + DISPLAY "Codice" CODTAB + COPY OUTPUT S_AGENTE + CHECKTYPE NORMAL +END + + +NUMBER S_NSABI 5 +BEGIN + PROMPT 2 17 "Nostra Banca - ABI " + FLAGS "Z" + COPY USE S_VSABI + INPUT CODTAB[1,5] S_NSABI + INPUT CODTAB[6,10] S_NSCAB + COPY DISPLAY S_VSABI + OUTPUT S_NSABI CODTAB[1,5] + OUTPUT S_NSCAB CODTAB[6,10] + FIELD NSABI + CHECKTYPE REQUIRED +END + +NUMBER S_VSCAB 5 +BEGIN + PROMPT 30 17 "CAB " + FLAGS "Z" + COPY ALL S_NSABI + FIELD NSCAB + CHECKTYPE REQUIRED +END + +STRING S_DESCNSABI 50 32 +BEGIN + PROMPT 42 15 "" + COPY USE S_DESCVSABI + INPUT S0 S_DESCNSABI + COPY DISPLAY S_DESCVSABI + COPY OUTPUT S_NSABI + CHECKTYPE REQUIRED +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg21rata.uml b/cg/cg21rata.uml index 6880eb83c..d6c7f50cb 100755 --- a/cg/cg21rata.uml +++ b/cg/cg21rata.uml @@ -1,56 +1,56 @@ -PAGE "Rata pagamento" -1 -1 50 8 - -DATE 101 -BEGIN - PROMPT 1 1 "Scadenza " -END - -NUMBER 102 8 3 -BEGIN - PROMPT 1 2 "Percentuale " - PICTURE ".3" - FLAGS "R" -END - -NUMBER 103 15 -BEGIN - PROMPT 1 3 "Importo " - PICTURE "." - FLAGS "R" -END - -NUMBER 104 2 0 -BEGIN - PROMPT 1 4 "Tipo pagamento " - SHEET "Codice|Tipo pagamento@32" - INPUT 104 - ITEM "1|Rimessa diretta o contanti" - ITEM "2|Tratta" - ITEM "3|Ricevuta Bancaria" - ITEM "4|Cessione" - ITEM "5|Paghero'" - ITEM "6|Lettera di credito" - ITEM "7|Tratta accettata" - ITEM "8|Altro pagamento" - OUTPUT 104 - OUTPUT 105 -END - -STRING 105 32 -BEGIN - PROMPT 1 5 "Descrizione " - FLAGS "D" -END - -BUTTON DLG_CANCEL 10 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_OK 10 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE -ENDMASK +PAGE "Rata pagamento" -1 -1 50 8 + +DATE 101 +BEGIN + PROMPT 1 1 "Scadenza " +END + +NUMBER 102 8 3 +BEGIN + PROMPT 1 2 "Percentuale " + PICTURE ".3" + FLAGS "R" +END + +NUMBER 103 15 +BEGIN + PROMPT 1 3 "Importo " + PICTURE "." + FLAGS "R" +END + +NUMBER 104 2 0 +BEGIN + PROMPT 1 4 "Tipo pagamento " + SHEET "Codice|Tipo pagamento@32" + INPUT 104 + ITEM "1|Rimessa diretta o contanti" + ITEM "2|Tratta" + ITEM "3|Ricevuta Bancaria" + ITEM "4|Cessione" + ITEM "5|Paghero'" + ITEM "6|Lettera di credito" + ITEM "7|Tratta accettata" + ITEM "8|Altro pagamento" + OUTPUT 104 + OUTPUT 105 +END + +STRING 105 32 +BEGIN + PROMPT 1 5 "Descrizione " + FLAGS "D" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE +ENDMASK diff --git a/cg/cg2400.cpp b/cg/cg2400.cpp index 6cdd08fe9..e8a536d73 100755 --- a/cg/cg2400.cpp +++ b/cg/cg2400.cpp @@ -1,589 +1,589 @@ -// Ricezione dati da sistema - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cglib04.h" - -//#include "ba7.h" -#include "cg2400.h" - -TString80 TEMP; - - -class TRic_sistema : public TApplication -{ - TTable* _tab_tra; - TTransfer_file* _tras_file; - - int _numtotdisk,_progdisk,_numdisk,_numinv,_numinvp,_nultras; - int _stato_ripartenza,_nultras_tab; - bool _sequenza,_disketto; - bool _prima_volta,_baipassa; - TString _nomeid,_nomeidp,_marker,_trasf,_trasfer,_pathname,_ragsoc_dittar; - long _dittainv,_dittainvp,_dittaric,_totrectras,_totrectrasp; - TDate _datatras,_datatrasp,_dataultras_tab,_dataultras; - TString _sigle_file,_nrec_file; - char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo; - bool _agg_fatatt,_agg_fatpas; - -public: - virtual bool create(); - virtual bool destroy(); - virtual bool menu(MENU_TAG m); - bool main_loop(); - bool leggi_marker(); - void leggi_trasfer(); - void ripristina_trasfer(); - long leggi_tabella_tras(); - void componi_path(TMask&); - bool video_ripartenza(); - void ditta_ricevente(); - bool ripartenza(); - bool set_flag(); - void aggiorna_tabella(); - - const char* converti (TString& data_AS400); - - static bool baipassa(TMask& m,KEY k); - - TRic_sistema() {}; -}; - -HIDDEN TRic_sistema& app() { return (TRic_sistema &) main_app(); } - -bool TRic_sistema::create() -{ - TApplication::create(); - - _tab_tra = new TTable ("%TRA"); - _tras_file = new TTransfer_file(); - - _numdisk = 1; - _prima_volta = TRUE; - _nultras = 0; - _nultras_tab = 0; - _baipassa = FALSE; - - dispatch_e_menu (BAR_ITEM(1)); - - return TRUE; -} - -bool TRic_sistema::destroy() -{ - delete _tab_tra; - delete _tras_file; - - return TApplication::destroy(); -} - -void TRic_sistema::componi_path(TMask& msk) -{ - TString path,drive; - int pos; - - path = msk.get(F_PATHNAME); - drive = msk.get(F_DRIVE); - pos = path.find(':'); - - if (drive == "A:" || drive == "B:" || drive == "D:" || drive == "E:") - _disketto = TRUE; - else - _disketto = FALSE; - - if (pos) - path = path.mid(pos+1); - - if (path != "") - { - _marker << drive << "\\" << path << "\\marker"; - _trasfer << drive << "\\" << path << "\\trasfer"; - if (!_disketto) - _pathname << drive << "\\" << path; - } - else - { - _marker << drive << "\\marker"; - _trasfer << drive << "\\trasfer"; - if (!_disketto) - _pathname << drive << "\\"; - } -} - -const char* TRic_sistema::converti (TString& data_AS400) -{ - TEMP = data_AS400.mid(4,2); - TEMP << "-" << data_AS400.mid(2,2); - TEMP << "-" << data_AS400.mid(0,2); - return TEMP; -} - -bool TRic_sistema::leggi_marker() -{ - TString16 tmp; - - if (!fexist(_marker)) - { - if (_disketto) - return error_box("File marker non presente sul dischetto %d: impossibile proseguire", _numdisk); - else - return error_box("File marker non presente in %s: impossibile proseguire", (const char*)_pathname); - } - - FILE* i; - - const word size = 64; - TString buffer(size); - - if ( (i = fopen(_marker,"r+t")) != NULL) - { - const word letti = fread((char*)(const char*)buffer,sizeof(char),size,i); - - _progdisk = atoi(buffer.sub(31,33)); - _numtotdisk = atoi(buffer.sub(29,31)); - - if (_progdisk != _numdisk) - { - message_box("Il dischetto inserito non rispecchia la giusta sequenza"); - _sequenza = FALSE; - fclose(i); - return TRUE; - } - else - _sequenza = TRUE; - - if (letti == 0) - return error_box("Rilevati ERRORI nel file MARKER: impossibile proseguire"); - - _nomeid = buffer.sub(0,10); - _dittainv = atol(buffer.sub(10,14)); - _totrectras = atol(buffer.sub(23,29)); - _numinv = atoi(buffer.sub(14,17)); - tmp = buffer.sub(17,23); - _datatras = converti(tmp); - - if (_numdisk > 1) //Va fatto solo dal disco 2 in poi - if (_nomeid != _nomeidp || _dittainv != _dittainvp || _totrectras != _totrectrasp - || _numinv != _numinvp || _datatras != _datatrasp) - return error_box("I dati del marker del disco %d, non corrispondono ai dati del marker del disco 1", _numdisk); - - _nomeidp = _nomeid; - _dittainvp = _dittainv; - _totrectrasp = _totrectras; - _numinvp = _numinv; - _datatrasp = _datatras; - - fclose(i); - - if (_numdisk == 1) // Va fatto solo per il primo disco - { - _dittaric = leggi_tabella_tras(); - - if (_dittaric != 0) - { - if (!prefhndl->exist(_dittaric)) - return error_box("Libreria archivi ditta non presente su disco"); - } - else - return error_box("Codici NON PRESENTI in tabella ricezione: caricarli e riprovare"); - } - - return TRUE; - } - - return FALSE; -} - -bool TRic_sistema::main_loop() -{ - TMask msk ("cg2400b"); - KEY tasto; - - tasto = msk.run(); - - if (tasto == K_ENTER) - { - componi_path(msk); - - do - { - if (_disketto) - { - char drive = msk.get(F_DRIVE)[0]; - if (yesno_box("Inserire il dischetto %d nell' unita' %c", _numdisk,drive)) - { - if (!leggi_marker()) - return FALSE; - - if (_sequenza) - { - if (video_ripartenza()) - ripristina_trasfer(); - else - return FALSE; - - set_flag(); - aggiorna_tabella(); - _tras_file->close(); // Chiude il trasfer letto dalla directory della ditta - - _numdisk++; - } - } - else - return FALSE; - } - else - { - if (!leggi_marker()) - return FALSE; - - if (_sequenza) - { - if (video_ripartenza()) - ripristina_trasfer(); - else - return FALSE; - - _tras_file->close(); // Chiude il trasfer letto da disco - - set_flag(); - aggiorna_tabella(); - _tras_file->close(); // Chiude il trasfer letto dalla directory della ditta - _numdisk++; - } - else - return FALSE; - } - } - while (_numdisk <= _numtotdisk); - } - return FALSE; -} - -void TRic_sistema::leggi_trasfer() -{ - _nultras = 0; - - _trasf = _tras_file->path(_dittaric); - _trasf << "\\trasfer"; - - _tras_file->open(_trasf); - - if (_tras_file->exist()) - { - if (_tras_file->read_control_rec()) - { - _nultras = _tras_file->nultras(); - _dataultras = _tras_file->dataultras(); - //_sigle_file = _tras_file->sigle_file(); - //_nrec_file = _tras_file->nrec_file(); - } - } -} - -bool TRic_sistema::ripartenza() -{ - if (_stato_ripartenza == 1) - return error_box("Rilevato stato di RIPARTENZA CON DATI CONTRADDITORI: procedura interrotta"); - - if (_stato_ripartenza == 2) - return error_box("Trasferimento precedente NON COMPLETATO: completarlo prima di questo"); - - return TRUE; -} - -bool TRic_sistema::video_ripartenza() -{ - TDate dataultras; - - if (_prima_volta) - { - leggi_trasfer(); - - _prima_volta = FALSE; - TMask msk ("cg2400a"); - KEY tasto; - - ditta_ricevente(); - _stato_ripartenza = _tras_file->controllo_ripartenza(); - - msk.set(F_NOMEID, _nomeid); - msk.set(F_CODDITTAINV, _dittainv); - msk.set(F_CODDITTARIC, _dittaric); - msk.set(F_RAGSOC, _ragsoc_dittar); - msk.set(F_NULTRASDSK, _numinv); - TString data1 = _datatras.string(); - msk.set(F_DATAULTRASDSK, data1); - - if (_nultras != 0) - { - msk.set(F_NULTRASTAB, _nultras); - TString data2 = _dataultras.string(); - msk.set(F_DATAULTRASTAB, data2); - } - else - { - msk.set(F_NULTRASTAB, _nultras_tab); - TString data2 = _dataultras_tab.string(); - msk.set(F_DATAULTRASTAB, data2); - } - - if (_stato_ripartenza == 1 || _stato_ripartenza == 2 ) - msk.set(F_STATO, "NON COMPLETA"); - else - if (_stato_ripartenza == 0) - msk.set(F_STATO, "COMPLETA"); - - if (_numdisk == 1) // Va fatto solo per il primo disco - { - do - { - msk.set_handler(baipassa); - - tasto = msk.run(); - - if (tasto != K_ENTER) - return FALSE; - - if (_baipassa) - return TRUE; - - if (!ripartenza()) - return FALSE; - - if (_numinv > (_nultras_tab + 1)) - warning_box("Trasferimento FUORI SEQUENZA: manca un trasferimento intermedio"); - else - if (_numinv < (_nultras_tab +1)) - warning_box("I dischetti risultano GIA' TRASFERITI"); - else - return TRUE; - } - while (tasto == K_ENTER); - } - } - - return TRUE; -} - -bool TRic_sistema::baipassa(TMask& m,KEY k) -{ - if (k == K_SHIFT+K_F7) - app()._baipassa = TRUE; - else - app()._baipassa = FALSE; - - return FALSE; -} - -void TRic_sistema::ripristina_trasfer() -{ - TString ditta,app; - - if (_numdisk == 1) - set_firm(_dittaric); - -// app.format("%05da", _dittaric); - -// ditta << "C:\\prassi\\" << app << "\\trasfer"; -// fcopy(_trasfer,/*ditta*/_trasf,TRUE); - - _tras_file->fcopytemp(_trasfer, _trasf, TRUE); -} - -void TRic_sistema::ditta_ricevente() -{ - TLocalisamfile nditte (LF_NDITTE); - - nditte.setkey(1); - nditte.zero(); - nditte.put(NDT_CODDITTA, _dittaric); - if (nditte.read() == NOERR) - _ragsoc_dittar = nditte.get(NDT_RAGSOC); -} - -long TRic_sistema::leggi_tabella_tras() -{ - TString dep; - long ditta = 0; - - _tab_tra->zero(); - dep = format("%10s%05d", (const char*) _nomeid, _dittainv); - _tab_tra->put("CODTAB", (const char*) dep); - if (_tab_tra->read() == NOERR) - { - ditta = _tab_tra->get_long("I0"); - _nultras_tab = _tab_tra->get_int ("I1"); - _dataultras_tab = _tab_tra->get_date("D0"); - _agg_cau = _tab_tra->get_char("S0"); - _agg_clifo = _tab_tra->get_char("S1"); - _agg_pcon = _tab_tra->get_char("S2"); - _agg_cls = _tab_tra->get_char("S3"); - _agg_fatatt = _tab_tra->get_bool("B0"); - _agg_fatpas = _tab_tra->get_bool("B1"); - } - - return ditta; -} - -bool TRic_sistema::set_flag() -{ - TString sigla; - long nrec; - int j; - int k = 0; - TString flag; - TString record; - TString ana_com,pcon_cau; - TString uselab; - bool fatto = TRUE; - - TConfig conf(CONFIG_DITTA); - - ana_com = conf.get("AnCfCm","cg"); - pcon_cau = conf.get("PcTcCm","cg"); - - _tras_file->open(_trasf); - - if (_tras_file->exist()) - { - if (_tras_file->read_control_rec()) - { - _nultras = _tras_file->nultras(); - _dataultras = _tras_file->dataultras(); - _sigle_file = _tras_file->sigle_file(); - _nrec_file = _tras_file->nrec_file(); - record = _tras_file->record(); -// La fill_index e' richiamata dentro a read_control_rec -// _tras_file->fill_index(_sigle_file,_nrec_file); - } - - for (j = 0; j < _sigle_file.len(); j++) - { - sigla = _sigle_file.mid(j,1); - nrec = atol(_nrec_file.mid(k,6)); - - if (fatto) - { - if (sigla == "W" || sigla == "P") - { - if (nrec > 0 && pcon_cau == "") - { - flag = "T"; - fatto = FALSE; - } - } - else - if (sigla == "A") - { - if (nrec > 0 && ana_com == "") - { - flag = "T"; - fatto = FALSE; - } - } - else - if (sigla == "Z" || sigla == "U" || sigla == "A") - { - if (nrec > 0) - { - flag = "C"; - fatto = FALSE; - } - } - else - { - flag = "*"; - fatto = FALSE; - } - - uselab = sigla; - } - - if (sigla == "W" || sigla == "P") - { - if (pcon_cau == "X") - { - _sigle_file.overwrite(" ",j); - _nrec_file.overwrite("000000",k); - } - } - - if (sigla == "A") - { - if (ana_com == "X") - { - _sigle_file.overwrite(" ",j); - _nrec_file.overwrite("000000",k); - } - } - k += 6; - } - - record.overwrite(_sigle_file,38); - record.overwrite(_nrec_file,47); - - TString agg(7); - - agg[0] = _agg_cls; - agg[1] = _agg_cau; - agg[2] = _agg_clifo; - agg[3] = _agg_pcon; - agg[4] = _agg_fatatt; - agg[5] = _agg_fatpas; - agg[6] = '\0'; - - record.overwrite(agg,234); - record.overwrite(uselab,240); - record.overwrite(" ",241); - - const int size = 256; - - if (!_tras_file->write_control_rec(record, size)) - return FALSE; - } - - conf.set("FlStTra", flag); - - return TRUE; -} - -void TRic_sistema::aggiorna_tabella() -{ - TString dep; - - _tab_tra->zero(); - dep = format("%10s%05d", (const char*) _nomeid, _dittainv); - _tab_tra->put("CODTAB", (const char*) dep); - if (_tab_tra->read() == NOERR) - { - _tab_tra->put("I1", (long)_nultras); - _tab_tra->put("D0", _dataultras); - _tab_tra->rewrite(); - } -} - -bool TRic_sistema::menu(MENU_TAG m) -{ - if (m == BAR_ITEM(1)) - return main_loop(); - return FALSE; -} - -int cg2400 (int argc, char* argv[]) -{ - TRic_sistema a; - a.run(argc, argv,"Ricezione da sistema"); - return TRUE; -} +// Ricezione dati da sistema + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cglib04.h" + +//#include "ba7.h" +#include "cg2400.h" + +TString80 TEMP; + + +class TRic_sistema : public TApplication +{ + TTable* _tab_tra; + TTransfer_file* _tras_file; + + int _numtotdisk,_progdisk,_numdisk,_numinv,_numinvp,_nultras; + int _stato_ripartenza,_nultras_tab; + bool _sequenza,_disketto; + bool _prima_volta,_baipassa; + TString _nomeid,_nomeidp,_marker,_trasf,_trasfer,_pathname,_ragsoc_dittar; + long _dittainv,_dittainvp,_dittaric,_totrectras,_totrectrasp; + TDate _datatras,_datatrasp,_dataultras_tab,_dataultras; + TString _sigle_file,_nrec_file; + char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo; + bool _agg_fatatt,_agg_fatpas; + +public: + virtual bool create(); + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + bool main_loop(); + bool leggi_marker(); + void leggi_trasfer(); + void ripristina_trasfer(); + long leggi_tabella_tras(); + void componi_path(TMask&); + bool video_ripartenza(); + void ditta_ricevente(); + bool ripartenza(); + bool set_flag(); + void aggiorna_tabella(); + + const char* converti (TString& data_AS400); + + static bool baipassa(TMask& m,KEY k); + + TRic_sistema() {}; +}; + +HIDDEN TRic_sistema& app() { return (TRic_sistema &) main_app(); } + +bool TRic_sistema::create() +{ + TApplication::create(); + + _tab_tra = new TTable ("%TRA"); + _tras_file = new TTransfer_file(); + + _numdisk = 1; + _prima_volta = TRUE; + _nultras = 0; + _nultras_tab = 0; + _baipassa = FALSE; + + dispatch_e_menu (BAR_ITEM(1)); + + return TRUE; +} + +bool TRic_sistema::destroy() +{ + delete _tab_tra; + delete _tras_file; + + return TApplication::destroy(); +} + +void TRic_sistema::componi_path(TMask& msk) +{ + TString path,drive; + int pos; + + path = msk.get(F_PATHNAME); + drive = msk.get(F_DRIVE); + pos = path.find(':'); + + if (drive == "A:" || drive == "B:" || drive == "D:" || drive == "E:") + _disketto = TRUE; + else + _disketto = FALSE; + + if (pos) + path = path.mid(pos+1); + + if (path != "") + { + _marker << drive << "\\" << path << "\\marker"; + _trasfer << drive << "\\" << path << "\\trasfer"; + if (!_disketto) + _pathname << drive << "\\" << path; + } + else + { + _marker << drive << "\\marker"; + _trasfer << drive << "\\trasfer"; + if (!_disketto) + _pathname << drive << "\\"; + } +} + +const char* TRic_sistema::converti (TString& data_AS400) +{ + TEMP = data_AS400.mid(4,2); + TEMP << "-" << data_AS400.mid(2,2); + TEMP << "-" << data_AS400.mid(0,2); + return TEMP; +} + +bool TRic_sistema::leggi_marker() +{ + TString16 tmp; + + if (!fexist(_marker)) + { + if (_disketto) + return error_box("File marker non presente sul dischetto %d: impossibile proseguire", _numdisk); + else + return error_box("File marker non presente in %s: impossibile proseguire", (const char*)_pathname); + } + + FILE* i; + + const word size = 64; + TString buffer(size); + + if ( (i = fopen(_marker,"r+t")) != NULL) + { + const word letti = fread((char*)(const char*)buffer,sizeof(char),size,i); + + _progdisk = atoi(buffer.sub(31,33)); + _numtotdisk = atoi(buffer.sub(29,31)); + + if (_progdisk != _numdisk) + { + message_box("Il dischetto inserito non rispecchia la giusta sequenza"); + _sequenza = FALSE; + fclose(i); + return TRUE; + } + else + _sequenza = TRUE; + + if (letti == 0) + return error_box("Rilevati ERRORI nel file MARKER: impossibile proseguire"); + + _nomeid = buffer.sub(0,10); + _dittainv = atol(buffer.sub(10,14)); + _totrectras = atol(buffer.sub(23,29)); + _numinv = atoi(buffer.sub(14,17)); + tmp = buffer.sub(17,23); + _datatras = converti(tmp); + + if (_numdisk > 1) //Va fatto solo dal disco 2 in poi + if (_nomeid != _nomeidp || _dittainv != _dittainvp || _totrectras != _totrectrasp + || _numinv != _numinvp || _datatras != _datatrasp) + return error_box("I dati del marker del disco %d, non corrispondono ai dati del marker del disco 1", _numdisk); + + _nomeidp = _nomeid; + _dittainvp = _dittainv; + _totrectrasp = _totrectras; + _numinvp = _numinv; + _datatrasp = _datatras; + + fclose(i); + + if (_numdisk == 1) // Va fatto solo per il primo disco + { + _dittaric = leggi_tabella_tras(); + + if (_dittaric != 0) + { + if (!prefhndl->exist(_dittaric)) + return error_box("Libreria archivi ditta non presente su disco"); + } + else + return error_box("Codici NON PRESENTI in tabella ricezione: caricarli e riprovare"); + } + + return TRUE; + } + + return FALSE; +} + +bool TRic_sistema::main_loop() +{ + TMask msk ("cg2400b"); + KEY tasto; + + tasto = msk.run(); + + if (tasto == K_ENTER) + { + componi_path(msk); + + do + { + if (_disketto) + { + char drive = msk.get(F_DRIVE)[0]; + if (yesno_box("Inserire il dischetto %d nell' unita' %c", _numdisk,drive)) + { + if (!leggi_marker()) + return FALSE; + + if (_sequenza) + { + if (video_ripartenza()) + ripristina_trasfer(); + else + return FALSE; + + set_flag(); + aggiorna_tabella(); + _tras_file->close(); // Chiude il trasfer letto dalla directory della ditta + + _numdisk++; + } + } + else + return FALSE; + } + else + { + if (!leggi_marker()) + return FALSE; + + if (_sequenza) + { + if (video_ripartenza()) + ripristina_trasfer(); + else + return FALSE; + + _tras_file->close(); // Chiude il trasfer letto da disco + + set_flag(); + aggiorna_tabella(); + _tras_file->close(); // Chiude il trasfer letto dalla directory della ditta + _numdisk++; + } + else + return FALSE; + } + } + while (_numdisk <= _numtotdisk); + } + return FALSE; +} + +void TRic_sistema::leggi_trasfer() +{ + _nultras = 0; + + _trasf = _tras_file->path(_dittaric); + _trasf << "\\trasfer"; + + _tras_file->open(_trasf); + + if (_tras_file->exist()) + { + if (_tras_file->read_control_rec()) + { + _nultras = _tras_file->nultras(); + _dataultras = _tras_file->dataultras(); + //_sigle_file = _tras_file->sigle_file(); + //_nrec_file = _tras_file->nrec_file(); + } + } +} + +bool TRic_sistema::ripartenza() +{ + if (_stato_ripartenza == 1) + return error_box("Rilevato stato di RIPARTENZA CON DATI CONTRADDITORI: procedura interrotta"); + + if (_stato_ripartenza == 2) + return error_box("Trasferimento precedente NON COMPLETATO: completarlo prima di questo"); + + return TRUE; +} + +bool TRic_sistema::video_ripartenza() +{ + TDate dataultras; + + if (_prima_volta) + { + leggi_trasfer(); + + _prima_volta = FALSE; + TMask msk ("cg2400a"); + KEY tasto; + + ditta_ricevente(); + _stato_ripartenza = _tras_file->controllo_ripartenza(); + + msk.set(F_NOMEID, _nomeid); + msk.set(F_CODDITTAINV, _dittainv); + msk.set(F_CODDITTARIC, _dittaric); + msk.set(F_RAGSOC, _ragsoc_dittar); + msk.set(F_NULTRASDSK, _numinv); + TString data1 = _datatras.string(); + msk.set(F_DATAULTRASDSK, data1); + + if (_nultras != 0) + { + msk.set(F_NULTRASTAB, _nultras); + TString data2 = _dataultras.string(); + msk.set(F_DATAULTRASTAB, data2); + } + else + { + msk.set(F_NULTRASTAB, _nultras_tab); + TString data2 = _dataultras_tab.string(); + msk.set(F_DATAULTRASTAB, data2); + } + + if (_stato_ripartenza == 1 || _stato_ripartenza == 2 ) + msk.set(F_STATO, "NON COMPLETA"); + else + if (_stato_ripartenza == 0) + msk.set(F_STATO, "COMPLETA"); + + if (_numdisk == 1) // Va fatto solo per il primo disco + { + do + { + msk.set_handler(baipassa); + + tasto = msk.run(); + + if (tasto != K_ENTER) + return FALSE; + + if (_baipassa) + return TRUE; + + if (!ripartenza()) + return FALSE; + + if (_numinv > (_nultras_tab + 1)) + warning_box("Trasferimento FUORI SEQUENZA: manca un trasferimento intermedio"); + else + if (_numinv < (_nultras_tab +1)) + warning_box("I dischetti risultano GIA' TRASFERITI"); + else + return TRUE; + } + while (tasto == K_ENTER); + } + } + + return TRUE; +} + +bool TRic_sistema::baipassa(TMask& m,KEY k) +{ + if (k == K_SHIFT+K_F7) + app()._baipassa = TRUE; + else + app()._baipassa = FALSE; + + return FALSE; +} + +void TRic_sistema::ripristina_trasfer() +{ + TString ditta,app; + + if (_numdisk == 1) + set_firm(_dittaric); + + // app.format("%05da", _dittaric); + + // ditta << "C:\\prassi\\" << app << "\\trasfer"; + // fcopy(_trasfer,/*ditta*/_trasf,TRUE); + + _tras_file->fcopytemp(_trasfer, _trasf, TRUE); +} + +void TRic_sistema::ditta_ricevente() +{ + TLocalisamfile nditte (LF_NDITTE); + + nditte.setkey(1); + nditte.zero(); + nditte.put(NDT_CODDITTA, _dittaric); + if (nditte.read() == NOERR) + _ragsoc_dittar = nditte.get(NDT_RAGSOC); +} + +long TRic_sistema::leggi_tabella_tras() +{ + TString dep; + long ditta = 0; + + _tab_tra->zero(); + dep = format("%10s%05d", (const char*) _nomeid, _dittainv); + _tab_tra->put("CODTAB", (const char*) dep); + if (_tab_tra->read() == NOERR) + { + ditta = _tab_tra->get_long("I0"); + _nultras_tab = _tab_tra->get_int ("I1"); + _dataultras_tab = _tab_tra->get_date("D0"); + _agg_cau = _tab_tra->get_char("S0"); + _agg_clifo = _tab_tra->get_char("S1"); + _agg_pcon = _tab_tra->get_char("S2"); + _agg_cls = _tab_tra->get_char("S3"); + _agg_fatatt = _tab_tra->get_bool("B0"); + _agg_fatpas = _tab_tra->get_bool("B1"); + } + + return ditta; +} + +bool TRic_sistema::set_flag() +{ + TString sigla; + long nrec; + int j; + int k = 0; + TString flag; + TString record; + TString ana_com,pcon_cau; + TString uselab; + bool fatto = TRUE; + + TConfig conf(CONFIG_DITTA); + + ana_com = conf.get("AnCfCm","cg"); + pcon_cau = conf.get("PcTcCm","cg"); + + _tras_file->open(_trasf); + + if (_tras_file->exist()) + { + if (_tras_file->read_control_rec()) + { + _nultras = _tras_file->nultras(); + _dataultras = _tras_file->dataultras(); + _sigle_file = _tras_file->sigle_file(); + _nrec_file = _tras_file->nrec_file(); + record = _tras_file->record(); + // La fill_index e' richiamata dentro a read_control_rec + // _tras_file->fill_index(_sigle_file,_nrec_file); + } + + for (j = 0; j < _sigle_file.len(); j++) + { + sigla = _sigle_file.mid(j,1); + nrec = atol(_nrec_file.mid(k,6)); + + if (fatto) + { + if (sigla == "W" || sigla == "P") + { + if (nrec > 0 && pcon_cau == "") + { + flag = "T"; + fatto = FALSE; + } + } + else + if (sigla == "A") + { + if (nrec > 0 && ana_com == "") + { + flag = "T"; + fatto = FALSE; + } + } + else + if (sigla == "Z" || sigla == "U" || sigla == "A") + { + if (nrec > 0) + { + flag = "C"; + fatto = FALSE; + } + } + else + { + flag = "*"; + fatto = FALSE; + } + + uselab = sigla; + } + + if (sigla == "W" || sigla == "P") + { + if (pcon_cau == "X") + { + _sigle_file.overwrite(" ",j); + _nrec_file.overwrite("000000",k); + } + } + + if (sigla == "A") + { + if (ana_com == "X") + { + _sigle_file.overwrite(" ",j); + _nrec_file.overwrite("000000",k); + } + } + k += 6; + } + + record.overwrite(_sigle_file,38); + record.overwrite(_nrec_file,47); + + TString agg(7); + + agg[0] = _agg_cls; + agg[1] = _agg_cau; + agg[2] = _agg_clifo; + agg[3] = _agg_pcon; + agg[4] = _agg_fatatt; + agg[5] = _agg_fatpas; + agg[6] = '\0'; + + record.overwrite(agg,234); + record.overwrite(uselab,240); + record.overwrite(" ",241); + + const int size = 256; + + if (!_tras_file->write_control_rec(record, size)) + return FALSE; + } + + conf.set("FlStTra", flag); + + return TRUE; +} + +void TRic_sistema::aggiorna_tabella() +{ + TString dep; + + _tab_tra->zero(); + dep = format("%10s%05d", (const char*) _nomeid, _dittainv); + _tab_tra->put("CODTAB", (const char*) dep); + if (_tab_tra->read() == NOERR) + { + _tab_tra->put("I1", (long)_nultras); + _tab_tra->put("D0", _dataultras); + _tab_tra->rewrite(); + } +} + +bool TRic_sistema::menu(MENU_TAG m) +{ + if (m == BAR_ITEM(1)) + return main_loop(); + return FALSE; +} + +int cg2400 (int argc, char* argv[]) +{ + TRic_sistema a; + a.run(argc, argv,"Ricezione da sistema"); + return TRUE; +} diff --git a/cg/cg2400.h b/cg/cg2400.h index 89b389db9..01f0a9ccd 100755 --- a/cg/cg2400.h +++ b/cg/cg2400.h @@ -1,17 +1,17 @@ -// Campi maschera ba7300a - -#define F_NOMEID 101 -#define F_CODDITTAINV 102 -#define F_CODDITTARIC 103 -#define F_RAGSOC 104 -#define F_NULTRASDSK 105 -#define F_NULTRASTAB 106 -#define F_DATAULTRASDSK 107 -#define F_DATAULTRASTAB 108 -#define F_STATO 109 -#define F_NOME 110 - -// Campi maschera ba7300b - -#define F_DRIVE 150 -#define F_PATHNAME 151 +// Campi maschera ba7300a + +#define F_NOMEID 101 +#define F_CODDITTAINV 102 +#define F_CODDITTARIC 103 +#define F_RAGSOC 104 +#define F_NULTRASDSK 105 +#define F_NULTRASTAB 106 +#define F_DATAULTRASDSK 107 +#define F_DATAULTRASTAB 108 +#define F_STATO 109 +#define F_NOME 110 + +// Campi maschera ba7300b + +#define F_DRIVE 150 +#define F_PATHNAME 151 diff --git a/cg/cg2400a.uml b/cg/cg2400a.uml index 493b8e66e..02c8a2eb0 100755 --- a/cg/cg2400a.uml +++ b/cg/cg2400a.uml @@ -1,85 +1,85 @@ -#include "cg2400.h" - -PAGE "" -1 -1 70 15 - -STRING F_NOMEID 10 -BEGIN - PROMPT 1 1 "Nome simbolico sistema inviante " - FLAGS "ZD" -END - -NUMBER F_CODDITTAINV 5 -BEGIN - PROMPT 1 2 "Codice ditta inviante " - FLAGS "ZD" -END - -NUMBER F_CODDITTARIC 5 -BEGIN - PROMPT 1 4 "Ditta ricevente " - USE LF_NDITTE KEY 1 - INPUT CODDITTA F_CODDITTARIC - OUTPUT F_RAGSOC RAGSOC - FLAGS "RDZ" - CHECKTYPE REQUIRED -END - -STRING F_RAGSOC 50 -BEGIN - PROMPT 1 5 "Ragione sociale " - FLAGS "D" -END - -TEXT DLG_NULL -BEGIN - PROMPT 27 7 "Presente su dischetto" -END - -TEXT DLG_NULL -BEGIN - PROMPT 51 7 "Ultimo intrapreso" -END - -NUMBER F_NULTRASDSK 3 -BEGIN - PROMPT 1 8 "Numero invio " - FLAGS "D" -END - -NUMBER F_NULTRASTAB 3 -BEGIN - PROMPT 51 8 "" - FLAGS "D" -END - -DATE F_DATAULTRASDSK -BEGIN - PROMPT 1 9 "Data limite trasferimento " - FLAGS "D" -END - -DATE F_DATAULTRASTAB -BEGIN - PROMPT 51 9 "" - FLAGS "D" -END - -STRING F_STATO 14 -BEGIN - PROMPT 1 10 "Stato del trasferimento " - FLAGS "D" -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK +#include "cg2400.h" + +PAGE "" -1 -1 70 15 + +STRING F_NOMEID 10 +BEGIN + PROMPT 1 1 "Nome simbolico sistema inviante " + FLAGS "ZD" +END + +NUMBER F_CODDITTAINV 5 +BEGIN + PROMPT 1 2 "Codice ditta inviante " + FLAGS "ZD" +END + +NUMBER F_CODDITTARIC 5 +BEGIN + PROMPT 1 4 "Ditta ricevente " + USE LF_NDITTE KEY 1 + INPUT CODDITTA F_CODDITTARIC + OUTPUT F_RAGSOC RAGSOC + FLAGS "RDZ" + CHECKTYPE REQUIRED +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 1 5 "Ragione sociale " + FLAGS "D" +END + +TEXT DLG_NULL +BEGIN + PROMPT 27 7 "Presente su dischetto" +END + +TEXT DLG_NULL +BEGIN + PROMPT 51 7 "Ultimo intrapreso" +END + +NUMBER F_NULTRASDSK 3 +BEGIN + PROMPT 1 8 "Numero invio " + FLAGS "D" +END + +NUMBER F_NULTRASTAB 3 +BEGIN + PROMPT 51 8 "" + FLAGS "D" +END + +DATE F_DATAULTRASDSK +BEGIN + PROMPT 1 9 "Data limite trasferimento " + FLAGS "D" +END + +DATE F_DATAULTRASTAB +BEGIN + PROMPT 51 9 "" + FLAGS "D" +END + +STRING F_STATO 14 +BEGIN + PROMPT 1 10 "Stato del trasferimento " + FLAGS "D" +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2400b.uml b/cg/cg2400b.uml index efdb91978..f6362503d 100755 --- a/cg/cg2400b.uml +++ b/cg/cg2400b.uml @@ -1,36 +1,36 @@ -#include "cg2400.h" - -PAGE "" -1 -1 44 8 - -LIST F_DRIVE 2 -BEGIN - PROMPT 2 2 "Disco " - ITEM "A:|A:" - ITEM "B:|B:" - ITEM "C:|C:" - ITEM "D:|D:" - ITEM "E:|E:" - ITEM "F:|F:" -END - -STRING F_PATHNAME 30 -BEGIN - PROMPT 2 4 "Percorso " - HELP "Specificare il percorso completo dove ricercare il file di ricezione dati" - FLAGS "U" - //VALIDATE FILENAME_FUNC -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK +#include "cg2400.h" + +PAGE "" -1 -1 44 8 + +LIST F_DRIVE 2 +BEGIN + PROMPT 2 2 "Disco " + ITEM "A:|A:" + ITEM "B:|B:" + ITEM "C:|C:" + ITEM "D:|D:" + ITEM "E:|E:" + ITEM "F:|F:" +END + +STRING F_PATHNAME 30 +BEGIN + PROMPT 2 4 "Percorso " + HELP "Specificare il percorso completo dove ricercare il file di ricezione dati" + FLAGS "U" + //VALIDATE FILENAME_FUNC +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2700.cpp b/cg/cg2700.cpp index eca77ecea..0dcf925bc 100755 --- a/cg/cg2700.cpp +++ b/cg/cg2700.cpp @@ -1,1075 +1,1075 @@ -// -// Ricezione dati: lista controllo movimenti -// -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cg2103.h" -#include "cglib04.h" -#include "cg2700.h" - -HIDDEN const char* err_msg[] = {"*** Data operazione non valida", - "--- Data competenza non compresa in alcun esercizio", - "*** Data operazione antecedente ad ultima stampa giornale", - "--- Data documento non valida", - "*** Codice causale non valido o non presente in archivio", - "--- Codice pagamento non valido o non presente in tabella", - "*** Codice registro IVA non valido o non presente in tabella", - "*** Codice cliente/fornitore non valido o non presente in anagrafica", - "--- Data 74 ter non valida", - "*** Data operazione antecedente ad ultima stampa registro IVA"}; - -HIDDEN int date2esc(const TDate& d, int* prevesc = NULL); - -class TRic_ListaMov : public TPrintapp -{ - TTable* _tab_tra,* _tab_pag,* _tab_tpd,* _tab_iva; - TIsamtempfile* _tmov,* _trmov,* _tiva; - TLocalisamfile* _caus,* _ditte,* _clifo,* _pcon; - TRelation* _rel; - TCursor* _cur; - TTransfer_file* _trasfer; - TLibro_giornale* _giornale; - TString80 _pathfile, _descr_causale, _descr_conto; - TString16 _causale, _registro, _numdoc, _tipodoc, _codval; - TString16 _codpag, _codiva, _tipo_conto; - TString _record; - bool _mov_sez, _errore_grave, _esiste_conto, _esiste_causale; - char _sdt, _sezione; - int _ae, _anno, _gruppo, _conto, _tipocr, _tipod, _tiporeg; - int _gruppoc, _contoc, _n_rec, _gruppocr, _contocr; - TDate _datacomp, _datadoc, _datareg, _data74tr; - real _importo, _impo, _impos, _tot_dare, _tot_avere, _tot_doc; - long _codcf, _numero, _protiva, _sottoconto; - long _inizioZ, _inizioU, _num_rec, _sottocontoc, _sottocontocr; - TBit_array _err; - byte _controllo; - -public: - virtual bool set_print(int m); - virtual bool user_create() ; - virtual bool user_destroy(); - virtual bool preprocess_page(int,int); - virtual print_action postprocess_page(int,int); - virtual void postclose_print(); - const char* look_sdt(); - const char* get_codiva_des(const char*); - bool DescrConto(int,int,long); - bool check_archivi(TProgind*); - bool look_pag(); - bool errori_partita(int,int,long); - bool controlla_mov(); - bool controlla_rmov(); - bool controlla_riva(); - void stampa_errori_mov(int); - void stampa_errori_rmov(int); - void stampa_errori_riva(int); - void aggiorna_trasfer_Z(); - void aggiorna_trasfer_U(); - void setta_parametri(const TString&, const TString&); - void setta_intestazione(); - TLibro_giornale& giornale() { return *_giornale; } - TTransfer_file& trasfer() { return *_trasfer; } - - TRic_ListaMov(): _err(80) {} - virtual ~TRic_ListaMov() {} -}; - -HIDDEN inline TRic_ListaMov& app() { return (TRic_ListaMov&)main_app();} - -HIDDEN int date2esc(const TDate& d, int* prevesc) -{ - if (prevesc) *prevesc = 0; - TTable esc("ESC"); - for (int err = esc.first(); err == NOERR; err = esc.next()) - { - const TDate ia(esc.get("D0")); // Data inizio esercizio - const TDate fa(esc.get("D1")); // Data fine esercizio - const anno = esc.get_int("CODTAB"); - if (d >= ia && d <= fa) - return anno; - if (prevesc) *prevesc = anno; - } - return 0; -} - -const char* TRic_ListaMov::look_sdt() -{ - TConfig conf(CONFIG_DITTA); - return conf.get("FlStTra"); -} - -bool TRic_ListaMov::look_pag() -{ - TTable t ("%CPG"); - t.zero(); - t.put("CODTAB",_codpag); - if (t.read() != NOERR) return FALSE; - return TRUE; -} - -const char* TRic_ListaMov::get_codiva_des(const char* codiva) -{ - TTable iva ("%IVA"); - - iva.zero(); - iva.put("CODTAB", codiva); - if (iva.read() == NOERR) - return iva.get("S0"); - else - return NULL; -} - -bool TRic_ListaMov::DescrConto(int g, int c, long s) -{ - TString80 ragsoc; - const char* descr = NULL; - TLocalisamfile pconti (LF_PCON); - pconti.setkey(1); - pconti.zero(); - pconti.put(PCN_GRUPPO, g); - pconti.put(PCN_CONTO, c); - pconti.put(PCN_SOTTOCONTO, 0L); - if (pconti.read() == NOERR) - { - _tipo_conto = pconti.get(PCN_TMCF); - if (_tipo_conto == "C" || _tipo_conto == "F") - { - TLocalisamfile clifo (LF_CLIFO); - clifo.setkey(1); - clifo.zero(); - clifo.put(CLI_TIPOCF, _tipo_conto); - clifo.put(CLI_CODCF, s); - if (clifo.read() != NOERR) - { - _descr_conto = ""; - return FALSE; - } - else - { - char tipoa = clifo.get_char("TIPOAPER"); - if (tipoa == 'F') //persona fisica - { - TString80 cognome, nome; - ragsoc = clifo.get("RAGSOC"); - cognome = ragsoc.mid(0,30); - nome = ragsoc.mid(30,20); - cognome.trim(); nome.trim(); - ragsoc = cognome; - ragsoc << " " << nome; - _descr_conto = ragsoc; - } - else _descr_conto = clifo.get("RAGSOC"); - } - } - else - { - pconti.zero(); - pconti.put(PCN_GRUPPO, g); - pconti.put(PCN_CONTO, c); - pconti.put(PCN_SOTTOCONTO, s); - if (pconti.read() != NOERR) - { - _descr_conto = ""; - return FALSE; - } - else _descr_conto = pconti.get(PCN_DESCR); - } - } - else - { - _descr_conto = ""; - return FALSE; - } - return TRUE; -} - -bool TRic_ListaMov::user_create() -{ - _trasfer = new TTransfer_file(); - - TProgind* pnd = NULL; - pnd = new TProgind (3,"Controllo archivi\nPrego attendere", - FALSE, TRUE, 30); - _tab_tra = new TTable ("%TRA"); - _tab_tpd = new TTable ("%TPD"); - _tab_pag = new TTable ("%CPG"); - _tab_iva = new TTable ("%IVA"); - _caus = new TLocalisamfile (LF_CAUSALI); - _ditte = new TLocalisamfile (LF_NDITTE); - _clifo = new TLocalisamfile (LF_CLIFO); - _pcon = new TLocalisamfile (LF_PCON); - - if (pnd) pnd->addstatus(1); - - if (!check_archivi(pnd)) - { - delete pnd; - return FALSE; - } - - if (pnd) pnd->addstatus(1); - - TString80 tmpmov = "%"; - tmpmov << get_firm_dir(); - tmpmov << "\\" << TEMP_MOV; - TString80 tmprmov = "%"; - tmprmov << get_firm_dir(); - tmprmov << "\\" << TEMP_RMOV; - TString80 tmprmoviva = "%"; - tmprmoviva << get_firm_dir(); - tmprmoviva << "\\" << TEMP_RMOVIVA; - - _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); - _trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0); - _tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0); - - _rel = new TRelation(_tmov); - _rel->add(_trmov,"NUMREG=NUMREG",1,0,0,FALSE); - _rel->add(_tiva, "NUMREG=NUMREG",1,0,0,FALSE); - _cur = new TCursor (_rel, "", 1); - - _giornale = new TLibro_giornale(); - - add_cursor(_cur); - - add_file (LF_MOV); - add_file (LF_RMOV, LF_MOV); - add_file (LF_RMOVIVA, LF_MOV); - - printer().footerlen(5); - - delete pnd; - - return TRUE; -} - -bool TRic_ListaMov::check_archivi(TProgind* pnd) -{ - TString80 nome; - long ditta_ric = get_firm(); - - if (!prefhndl->exist(ditta_ric)) - return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); - - TTransfer_file& tr = trasfer(); - - _pathfile = tr.path(); - - _pathfile = _pathfile << "\\trasfer"; - - if (!tr.open(_pathfile)) - return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); - - if (!tr.read_control_rec()) - return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); - else _record = tr.record(); - - TString16 sd = look_sdt(); - - if (sd.not_empty()) - _sdt = sd[0]; - else return error_box("Ricezione tabelle non effettuata: richiamare il programma relativo"); - - if (_sdt == 'T') - return error_box("Ricezione tabelle non effettuata: richiamare il programma relativo"); - - if (_sdt == 'M') - return yesno_box("Controllo gia' effettuato: si desidera ripeterlo ?"); - - if (_sdt != '*' && _sdt != 'C') - return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); - - TString16 ult = tr.ult_file(); - TString16 key = tr.key(); - - ult.strip_spaces(); - key.strip_spaces(); - - if (_sdt == 'C') - if ( ult.not_empty() || key.not_empty() ) - return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); - - if (_sdt == '*') - return warning_box("Trasferimento interamente completato: proseguire per cancellare i file"); - - if (pnd) pnd->addstatus(1); - - return TRUE; -} - -void TRic_ListaMov::stampa_errori_mov(int riga) -{ - long i = _err.first_one(); - if (i != -1) - { - for (; i <= _err.last_one(); i++) - if (_err[i]) - set_row(++riga, "@8g%s", (const char*) err_msg[i]); - } -} - -bool TRic_ListaMov::controlla_mov() -{ - bool check_reg = TRUE; - TString16 causreg; - TDate udata; - char tipocf; - - _tiporeg = 0; - - if (!_datareg.ok()) - { - _errore_grave = TRUE; - _err.set(0L); - } - else if (!_datacomp.ok()) - { - const int ae = date2esc(_datacomp); - if (ae == 0) - _err.set(1); - } - - TLibro_giornale& gio = giornale(); - bool ok = gio.read(_ae); //se _ae e' zero la read considera come anno quello corrente - if (_datareg < gio.last_print()) - { - _errore_grave = TRUE; - _err.set(2); - } - - TString16 dd = _datadoc.string(); - if (dd.not_empty()) - if (!_datadoc.ok()) - _err.set(3); - - //if (_causale.not_empty()) - //{ - TLocalisamfile caus(LF_CAUSALI); - caus.setkey(1); - caus.zero(); - caus.put(CAU_CODCAUS,_causale); - if (caus.read() == NOERR) - { - _esiste_causale = TRUE; - _tipodoc = caus.get(CAU_TIPODOC); - } - else - { - caus.zero(); - _esiste_causale = FALSE; - if (look_causale(_causale)) //se la causale e' significativa - { - _errore_grave = TRUE; - _err.set(4); - } - } - //_tipodoc = caus.get(CAU_TIPODOC); ho sempre quello letto sul movimento! - causreg = caus.get(CAU_REG); - _descr_causale = caus.get(CAU_DESCR); - _mov_sez = caus.get_bool(CAU_MOVSEZ); - //} - - if (!_codpag.blank()) - { - bool ok = look_pag(); - if (!ok) - _err.set(5); - } - - if (!_registro.blank()) //movimento iva (fattura) - { - if (!look_causale(_causale)) //se la causale non e' significativa - { - _errore_grave = TRUE; - check_reg = FALSE; - _err.set(6); - } - if (check_reg && _ae) - { - TRegistro rg (_registro, _ae); - if (rg.name().empty()) - { - _errore_grave = TRUE; - check_reg = FALSE; - _err.set(6); - } - else - { - _tiporeg = rg.tipo(); - udata = rg.last_print(); - } - } - } - else if (!causreg.blank() && _ae) - { - TRegistro rg (causreg, _ae); - if (rg.name().empty()) - { - _errore_grave = TRUE; - check_reg = FALSE; - _err.set(6); - } - else - { - _tiporeg = rg.tipo(); - udata = rg.last_print(); - } - _registro = causreg; - } - - if (check_reg && !_registro.blank()) - { - if (_tiporeg == 1) tipocf = 'C'; - else if (_tiporeg == 2) tipocf = 'F'; - if (!_tipodoc.blank()) //se esiste, uso quello della causale!!! - { - TTable tabtpd("%TPD"); - tabtpd.put("CODTAB", _tipodoc); - if (tabtpd.read() == NOERR) - { - bool cor = tabtpd.get_bool("B0"); - if (!cor) - if (_codcf != 0l) - { - TLocalisamfile clifo(LF_CLIFO); - clifo.zero(); - clifo.put(CLI_CODCF, _codcf); - clifo.put(CLI_TIPOCF,tipocf); - if (clifo.read() != NOERR) - { - _errore_grave = TRUE; - _err.set(7); - } - } - else - { - _errore_grave = TRUE; - _err.set(7); - } - } - } - } - - TString16 d74 = _data74tr.string(); - if (d74.not_empty()) - if (!_data74tr.ok()) - _err.set(8); - - if (!_registro.blank() && check_reg) - if (_datareg < udata) - { - _errore_grave = TRUE; - _err.set(9); - } - - if (_err.ones()) - return TRUE; - - return FALSE; -} - -bool TRic_ListaMov::errori_partita(int g, int c, long s) -{ - TLocalisamfile pconti (LF_PCON); - pconti.setkey(1); - pconti.zero(); - pconti.put(PCN_GRUPPO, g); - pconti.put(PCN_CONTO, c); - pconti.put(PCN_SOTTOCONTO, 0L); - if (pconti.read() == NOERR) - { - char tipo = pconti.get(PCN_TMCF)[0]; - if (tipo == 'C' || tipo == 'F') - { - TLocalisamfile clifo (LF_CLIFO); - clifo.setkey(1); - clifo.zero(); - clifo.put(CLI_TIPOCF, tipo); - clifo.put(CLI_CODCF, s); - if (clifo.read() != NOERR) - return FALSE; - } - else - { - pconti.zero(); - pconti.put(PCN_GRUPPO, g); - pconti.put(PCN_CONTO, c); - pconti.put(PCN_SOTTOCONTO, s); - if (pconti.read() != NOERR) - return FALSE; - } - } - else return FALSE; - - return TRUE; -} - -bool TRic_ListaMov::controlla_rmov() -{ - TLocalisamfile& rmov = current_cursor()->file(LF_RMOV); - int gruppo, conto, gruppoc, contoc; - long sottoconto, sottocontoc; - char sezione; - real importo, dare, avere; - - if (current_cursor()->is_first_match(LF_RMOV)) - { - dare = avere = ZERO; - TRecnotype nrec = rmov.recno(); - rmov.zero(); - rmov.setkey(1); - rmov.put(RMV_NUMREG, _numero); - TRectype recc (rmov.curr()); - for (rmov.read(_isgteq); !rmov.eof() ;rmov.next()) - { - TRectype rec (rmov.curr()); - if (rec > recc) break; - gruppo = rec.get_int(RMV_GRUPPO); - conto = rec.get_int(RMV_CONTO); - sottoconto = rec.get_long(RMV_SOTTOCONTO); - gruppoc = rec.get_int(RMV_GRUPPOC); - contoc = rec.get_int(RMV_CONTOC); - sottocontoc = rec.get_long(RMV_SOTTOCONTOC); - sezione = rec.get_char(RMV_SEZIONE); - importo = rec.get_real(RMV_IMPORTO); - - if (sezione == 'D') - dare += importo; - if (sezione == 'A') - avere += importo; - - if (gruppo == 0 || conto == 0 || sottoconto == 0l) - { - rmov.readat(nrec); - return TRUE; - } - else - { - bool ok = errori_partita(gruppo,conto,sottoconto); - if (!ok) - { - rmov.readat(nrec); - return TRUE; - } - } - - if ( (importo == ZERO && sezione != ' ') || - (sezione != 'D' && sezione != 'A') ) - { - rmov.readat(nrec); - return TRUE; - } - - if (gruppoc == 0 || contoc == 0 || sottocontoc == 0l) - { - rmov.readat(nrec); - return TRUE; - } - else - { - bool ok = errori_partita(gruppoc,contoc,sottocontoc); - if (!ok) - { - rmov.readat(nrec); - return TRUE; - } - } - - if (_esiste_causale) - if (!_mov_sez && importo == ZERO) - { - rmov.readat(nrec); - return TRUE; - } - } - if (dare != avere) - { - rmov.readat(nrec); - return TRUE; - } - rmov.readat(nrec); - } - return FALSE; -} - -void TRic_ListaMov::stampa_errori_rmov(int riga) -{ - if (_gruppo == 0 || _conto == 0 || _sottoconto == 0l) - set_row(++riga, "@8g*** Sottoconto partita non valido o non presente in archivio"); - else - { - if (!_esiste_conto) - set_row(++riga, "@8g*** Sottoconto partita non valido o non presente in archivio"); - } - - if ( (_importo == ZERO && _sezione != ' ') || - (_sezione != 'D' && _sezione != 'A') ) - set_row(++riga, "@8g*** Segnale dare/avere non valido"); - - if (_sezione == 'D') - _tot_dare += _importo; - if (_sezione == 'A') - _tot_avere += _importo; - - if (_gruppoc == 0 || _contoc == 0 || _sottocontoc == 0l) - set_row(++riga, "@8g*** Sottoconto contropartita non valido o non presente in archivio"); - else - { - bool ok = errori_partita(_gruppoc,_contoc,_sottocontoc); - if (!ok) - set_row(++riga, "@8g*** Sottoconto contropartita non valido o non presente in archivio"); - } - - if (_esiste_causale) - if (!_mov_sez && _importo == ZERO) - set_row(++riga, "@8g--- Importo riga uguale a zero"); -} - -bool TRic_ListaMov::controlla_riva() -{ - TLocalisamfile& rmoviva = current_cursor()->file(LF_RMOVIVA); - TTable tab_iva("%IVA"); - TString16 codiva; - int tipodet, tipocr, gruppocr, contocr; - long sottocontocr; - - if (current_cursor()->is_first_match(LF_RMOVIVA)) - { - TRecnotype nrec = rmoviva.recno(); - rmoviva.setkey(1); - rmoviva.zero(); - rmoviva.put(RMI_NUMREG, _numero); - TRectype recc (rmoviva.curr()); - for (rmoviva.read(_isgteq); !rmoviva.eof() ;rmoviva.next()) - { - TRectype rec (rmoviva.curr()); - if (rec > recc) break; - codiva = rec.get(RMI_CODIVA); - tipodet = rec.get_int(RMI_TIPODET); - tipocr = rec.get_int(RMI_TIPOCR); - gruppocr = rec.get_int(RMI_GRUPPO); - contocr = rec.get_int(RMI_CONTO); - sottocontocr = rec.get_long(RMI_SOTTOCONTO); - - TTable iva ("%IVA"); - iva.zero(); - iva.put("CODTAB", codiva); - if (iva.read() != NOERR) - { - rmoviva.readat(nrec); - return TRUE; - } - if (!(tipocr >= 0 && tipocr <= 9)) - { - rmoviva.readat(nrec); - return TRUE; - } - if (gruppocr == 0 || contocr == 0 || sottocontocr == 0l) - { - rmoviva.readat(nrec); - return TRUE; - } - else - { - bool ok = errori_partita(gruppocr,contocr,sottocontocr); - if (!ok) - { - rmoviva.readat(nrec); - return TRUE; - } - } - - if (tipodet != 0 && tipodet != 1 && tipodet != 3 && tipodet != 9) - { - rmoviva.readat(nrec); - return TRUE; - } - } - rmoviva.readat(nrec); - } - return FALSE; -} - -void TRic_ListaMov::stampa_errori_riva(int riga) -{ - TTable iva ("%IVA"); - - iva.zero(); - iva.put("CODTAB", _codiva); - if (iva.read() != NOERR) - set_row(++riga, "@8g--- Codice IVA non valido o non presente in tabella"); - - if (!(_tipocr >= 0 && _tipocr <= 9)) - set_row(++riga, "@8g--- Tipo costo/ricavo non valido"); - - if (_gruppocr == 0 || _contocr == 0 || _sottocontocr == 0l) - set_row(++riga, "@8g*** Sottoconto costo/ricavo non valido o non presente in archivio"); - else - { - bool ok = errori_partita(_gruppocr,_contocr,_sottocontocr); - if (!ok) - set_row(++riga, "@8g*** Sottoconto costo/ricavo non valido o non presente in archivio"); - } - - if (_tipod != 0 && _tipod != 1 && _tipod != 3 && _tipod != 9) - set_row(++riga, "@8g--- Tipo indetraibilita' non valido"); -} - -bool TRic_ListaMov::preprocess_page(int file,int counter) -{ - TCursor* cur = current_cursor(); - - if (counter) return TRUE; - - reset_print(); - - if (file == LF_MOV) - { - _anno = cur->curr(LF_MOV).get_int(MOV_ANNOES); - _datacomp = cur->curr(LF_MOV).get_date(MOV_DATACOMP); - _datadoc = cur->curr(LF_MOV).get_date(MOV_DATADOC); - _data74tr = cur->curr(LF_MOV).get_date(MOV_DATA74TER); - _causale = cur->curr(LF_MOV).get(MOV_CODCAUS); - _registro = cur->curr(LF_MOV).get(MOV_REG); - format_if_zero(_registro, 3); - _tipodoc = cur->curr(LF_MOV).get(MOV_TIPODOC); - _numdoc = cur->curr(LF_MOV).get(MOV_NUMDOC); - _datareg = cur->curr(LF_MOV).get_date(MOV_DATAREG); - _codcf = cur->curr(LF_MOV).get_long(MOV_CODCF); - _numero = cur->curr(LF_MOV).get_long(MOV_NUMREG); - _protiva = cur->curr(LF_MOV).get_long(MOV_PROTIVA); - _codval = cur->curr(LF_MOV).get(MOV_CODVALI); - _codpag = cur->curr(LF_MOV).get(MOV_CODPAG); - - _tot_dare = _tot_avere = ZERO; - _tot_doc = ZERO; - - _ae = date2esc(_datareg); - - _num_rec = cur->curr(LF_MOV).get_long(MOV_NUMGIO); - - bool controlla = controlla_mov(); //se TRUE => ci sono errori nella testata - bool verifica = (controlla_rmov() || controlla_riva()); - - if ( (_controllo == 1 && controlla) || _controllo == 2 || - (_controllo == 1 && verifica) ) - { - TString16 datareg_str = _datareg.string(); - // "Fai vedere lo stesso ..-..-.... anche se non c'e' la data..." - if (datareg_str.empty()) - datareg_str = " - - "; - TString16 datadoc_str = _datadoc.string(); - if (datadoc_str.empty()) - datadoc_str = " - - "; - int r = 1; - set_row(r++, ""); - set_row(r,"Operazione n. %-7ld", _numero); - set_row(r," del %s", (const char*)datareg_str); - set_row(r," doc. n. %-7s", (const char*)_numdoc); - set_row(r," del %s", (const char*)datadoc_str); - if (!_registro.blank()) //e' una fattura - { - set_row(r," registro IVA %-3s", (const char*)_registro); - set_row(r," protocollo n. %-5ld", _protiva); - } - set_row(r, " comp. %d", _anno); - - stampa_errori_mov(r); - - return TRUE; - } - return FALSE; - } - else if (file == LF_RMOV) - { - _gruppo = cur->curr(LF_RMOV).get_int(RMV_GRUPPO); - _conto = cur->curr(LF_RMOV).get_int(RMV_CONTO); - _sottoconto = cur->curr(LF_RMOV).get_long(RMV_SOTTOCONTO); - _gruppoc = cur->curr(LF_RMOV).get_int(RMV_GRUPPOC); - _contoc = cur->curr(LF_RMOV).get_int(RMV_CONTOC); - _sottocontoc = cur->curr(LF_RMOV).get_long(RMV_SOTTOCONTOC); - _importo = cur->curr(LF_RMOV).get_real(RMV_IMPORTO); - _sezione = cur->curr(LF_RMOV).get(RMV_SEZIONE)[0]; - TString80 descr = cur->curr(LF_RMOV).get(RMV_DESCR); - int numrig = cur->curr(LF_RMOV).get_int(RMV_NUMRIG); - - _tipo_conto = ""; - - if (_gruppo != 0 && _conto != 0 && _sottoconto != 0l) - _esiste_conto = DescrConto(_gruppo,_conto,_sottoconto); - else - { - _esiste_conto = FALSE; - _descr_conto = ""; - } - int r = 1; - set_row(r, "P%d", numrig); - set_row(r, "@5g%3s %-.20s @30g%-.24s @56g%03d %03d %06ld @71g%-.28s", (const char*) _causale, - (const char*) _descr_causale, (const char*) descr, _gruppo, _conto, _sottoconto, - (const char*) _descr_conto); - if (_sezione == 'D') - set_row(r, "@99g%r", &_importo); - else if (_sezione == 'A') - set_row(r, "@116g%r", &_importo); - else set_row(r, "@107g%r", &_importo); - - stampa_errori_rmov(r); - } - else if (file == LF_RMOVIVA) - { - real impo = cur->curr(LF_RMOVIVA).get_real(RMI_IMPONIBILE); - real impos = cur->curr(LF_RMOVIVA).get_real(RMI_IMPOSTA); - int numrig = cur->curr(LF_RMOVIVA).get_int(RMI_NUMRIG); - _tipocr = cur->curr(LF_RMOVIVA).get_int(RMI_TIPOCR); - _tipod = cur->curr(LF_RMOVIVA).get_int(RMI_TIPODET); - _codiva = cur->curr(LF_RMOVIVA).get(RMI_CODIVA); - _n_rec = cur->curr(LF_RMOVIVA).get_int(RMI_ANNOES); - _gruppocr = cur->curr(LF_RMOVIVA).get_int(RMI_GRUPPO); - _contocr = cur->curr(LF_RMOVIVA).get_int(RMI_CONTO); - _sottocontocr = cur->curr(LF_RMOVIVA).get_long(RMI_SOTTOCONTO); - - TString80 codiva_des(get_codiva_des(_codiva)); - - _tot_doc += impo + impos; - _impo = impo; - _impos = impos; - - if (!_tipodoc.blank()) - { - TTable tabtpd("%TPD"); - tabtpd.put("CODTAB", _tipodoc); - if (tabtpd.read() == NOERR) - { - bool cor = tabtpd.get_bool("B0"); - if (cor) - { - _impo = impo + impos; - _impos = ZERO; - } - } - } - - int r = 1; - set_row(r, "I%d", numrig); - set_row(r, "@5gImponibile %r Imposta %r Codice %4s %-50s %d", - &_impo, &_impos, (const char*) _codiva, (const char*) codiva_des, _tipod); - - stampa_errori_riva(r); - } - return TRUE; -} - -print_action TRic_ListaMov::postprocess_page(int file,int count) -{ - if (count) return NEXT_PAGE; - if (file == LF_MOV) - { - aggiorna_trasfer_Z(); - reset_print(); - _err.reset(); - int n = 1; - if (_tot_dare != _tot_avere) - { - set_row(n++, "@8g*** Il movimento risulta sbilanciato. Totali rilevati:@99g%r@116g%r", - &_tot_dare, &_tot_avere); - return REPEAT_PAGE; - } - } - if (file == LF_RMOVIVA) - aggiorna_trasfer_U(); - - return NEXT_PAGE; -} - -void TRic_ListaMov::postclose_print() -{ - if (_errore_grave) - message_box("Rilevati errori gravi durante il controllo movimenti: \n trasferimento interrotto"); - else - { - TConfig conf (CONFIG_DITTA); - conf.set("FlStTra", "M"); - - TTransfer_file& tr = trasfer(); - _record.overwrite("Z",240); //_record e' letto nella read_control_rec() - const int size = 256; - tr.write_control_rec(_record, size); - } -} - -void TRic_ListaMov::aggiorna_trasfer_Z() -{ - TLocalisamfile& mov = current_cursor()->file(LF_MOV); - - int i=0; - while (_registro[i]=='0' || _registro[i]==' ') i++; - - _registro = ""; - _registro << _registro[i]; - _registro.left_just(3, ' '); - - mov.put(MOV_REG, _registro); - mov.put(MOV_TIPODOC, _tipodoc); - mov.rewrite(); - - TString16 str; - TTransfer_file& tr = trasfer(); - long num = _inizioZ + _num_rec; - if (tr.read_rec_trasfer(num) > 0) - { - //tr.put(_registro, "Z1", 6); - //tr.put(_tipodoc, "Z1", 12); - if (_tiporeg != 0) - { - str = format("%d", _tiporeg); - tr.put(str, "Z1", 26); - } - str = _tot_doc.string(); - tr.put(str, "Z1", 13); - tr.put(_tipo_conto, "Z1", 11); - tr.write(num); - } -} - -void TRic_ListaMov::aggiorna_trasfer_U() -{ - TTransfer_file& tr = trasfer(); - long num = _inizioU + _n_rec; - if (tr.read_rec_trasfer(num) > 0) - { - TString16 str = _impo.string(); - tr.put(str, "U1", 14); - str = _impos.string(); - tr.put(str, "U1", 15); - tr.write(num); - } -} - -bool TRic_ListaMov::user_destroy() -{ - delete _giornale; - delete _trasfer; - delete _rel; - delete _cur; - delete _tmov; - delete _trmov; - delete _tiva; - delete _caus; - delete _ditte; - delete _clifo; - delete _pcon; - delete _tab_tra; - delete _tab_pag; - delete _tab_tpd; - delete _tab_iva; - - return TRUE; -} - -bool TRic_ListaMov::set_print(int m) -{ - TMask msk ("cg2700a"); - - TTransfer_file& tr = trasfer(); - - msk.set(F_NUMERO, tr.nultras()); - msk.set(F_DATALIMITE, tr.dataultras()); - msk.set(F_SDT, look_sdt()); - msk.set(F_SIGLA, tr.ult_file()); - msk.set(F_CHIAVE, tr.key()); - - if (msk.run() != K_ENTER) return FALSE; - - _controllo = msk.get_int(F_LISTA); - - if (_sdt == '*') - fremove(_pathfile); - - setta_parametri(" ", "C"); - - set_real_picture("###.###.###.###"); - - printer().footerlen(5); - - setta_intestazione(); - - _errore_grave = FALSE; - _err.reset(); - _inizioZ = tr.start('Z'); - _inizioU = tr.start('U'); - - return TRUE; -} - -void TRic_ListaMov::setta_intestazione() -{ - int soh = 1; - TString sep(132); - TString ragsoc(50); - - TLocalisamfile nditte(LF_NDITTE); - nditte.zero(); - nditte.put(NDT_CODDITTA, get_firm()); - if (nditte.read() == NOERR) - ragsoc = nditte.get(NDT_RAGSOC); - - reset_header(); - - sep << "Ditta " << get_firm(); - sep << " " << ragsoc; - sep.left_just(132); - - set_header (soh++, (const char*) sep); - - sep = ""; - sep << "Data @< Pag. @#"; - - sep.right_just(127); - - sep.overwrite ("LISTA DI CONTROLLO MOVIMENTI IN TRASFERIMENTO"); - set_header (soh++, (const char*)sep); - sep.fill('-'); - set_header (soh++, (const char *) sep); - set_header (soh++, "Rig Cod.causale @30gDescriz.aggiuntiva @56gCod.conto @71gDescriz.conto @99gDare @116gAvere"); - set_header (soh, (const char *) sep); -} - -void TRic_ListaMov::setta_parametri(const TString& sigla, const TString& flag) -{ - TTransfer_file& tr = trasfer(); - - TConfig conf (CONFIG_DITTA); - conf.set("FlStTra", flag); - - TString rec = tr.record(); - rec.overwrite(sigla,240); - - const int size = 256; - tr.write_control_rec(rec, size); -} - -int cg2700 (int argc, char* argv[]) -{ - TRic_ListaMov a; - a.run(argc, argv,"Lista controllo movimenti"); - return TRUE; -} +// +// Ricezione dati: lista controllo movimenti +// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cg2103.h" +#include "cglib04.h" +#include "cg2700.h" + +HIDDEN const char* err_msg[] = {"*** Data operazione non valida", + "--- Data competenza non compresa in alcun esercizio", + "*** Data operazione antecedente ad ultima stampa giornale", + "--- Data documento non valida", + "*** Codice causale non valido o non presente in archivio", + "--- Codice pagamento non valido o non presente in tabella", + "*** Codice registro IVA non valido o non presente in tabella", + "*** Codice cliente/fornitore non valido o non presente in anagrafica", + "--- Data 74 ter non valida", + "*** Data operazione antecedente ad ultima stampa registro IVA"}; + +HIDDEN int date2esc(const TDate& d, int* prevesc = NULL); + +class TRic_ListaMov : public TPrintapp +{ + TTable* _tab_tra,* _tab_pag,* _tab_tpd,* _tab_iva; + TIsamtempfile* _tmov,* _trmov,* _tiva; + TLocalisamfile* _caus,* _ditte,* _clifo,* _pcon; + TRelation* _rel; + TCursor* _cur; + TTransfer_file* _trasfer; + TLibro_giornale* _giornale; + TString80 _pathfile, _descr_causale, _descr_conto; + TString16 _causale, _registro, _numdoc, _tipodoc, _codval; + TString16 _codpag, _codiva, _tipo_conto; + TString _record; + bool _mov_sez, _errore_grave, _esiste_conto, _esiste_causale; + char _sdt, _sezione; + int _ae, _anno, _gruppo, _conto, _tipocr, _tipod, _tiporeg; + int _gruppoc, _contoc, _n_rec, _gruppocr, _contocr; + TDate _datacomp, _datadoc, _datareg, _data74tr; + real _importo, _impo, _impos, _tot_dare, _tot_avere, _tot_doc; + long _codcf, _numero, _protiva, _sottoconto; + long _inizioZ, _inizioU, _num_rec, _sottocontoc, _sottocontocr; + TBit_array _err; + byte _controllo; + +public: + virtual bool set_print(int m); + virtual bool user_create() ; + virtual bool user_destroy(); + virtual bool preprocess_page(int,int); + virtual print_action postprocess_page(int,int); + virtual void postclose_print(); + const char* look_sdt(); + const char* get_codiva_des(const char*); + bool DescrConto(int,int,long); + bool check_archivi(TProgind*); + bool look_pag(); + bool errori_partita(int,int,long); + bool controlla_mov(); + bool controlla_rmov(); + bool controlla_riva(); + void stampa_errori_mov(int); + void stampa_errori_rmov(int); + void stampa_errori_riva(int); + void aggiorna_trasfer_Z(); + void aggiorna_trasfer_U(); + void setta_parametri(const TString&, const TString&); + void setta_intestazione(); + TLibro_giornale& giornale() { return *_giornale; } + TTransfer_file& trasfer() { return *_trasfer; } + + TRic_ListaMov(): _err(80) {} + virtual ~TRic_ListaMov() {} +}; + +HIDDEN inline TRic_ListaMov& app() { return (TRic_ListaMov&)main_app();} + +HIDDEN int date2esc(const TDate& d, int* prevesc) +{ + if (prevesc) *prevesc = 0; + TTable esc("ESC"); + for (int err = esc.first(); err == NOERR; err = esc.next()) + { + const TDate ia(esc.get("D0")); // Data inizio esercizio + const TDate fa(esc.get("D1")); // Data fine esercizio + const anno = esc.get_int("CODTAB"); + if (d >= ia && d <= fa) + return anno; + if (prevesc) *prevesc = anno; + } + return 0; +} + +const char* TRic_ListaMov::look_sdt() +{ + TConfig conf(CONFIG_DITTA); + return conf.get("FlStTra"); +} + +bool TRic_ListaMov::look_pag() +{ + TTable t ("%CPG"); + t.zero(); + t.put("CODTAB",_codpag); + if (t.read() != NOERR) return FALSE; + return TRUE; +} + +const char* TRic_ListaMov::get_codiva_des(const char* codiva) +{ + TTable iva ("%IVA"); + + iva.zero(); + iva.put("CODTAB", codiva); + if (iva.read() == NOERR) + return iva.get("S0"); + else + return NULL; +} + +bool TRic_ListaMov::DescrConto(int g, int c, long s) +{ + TString80 ragsoc; + const char* descr = NULL; + TLocalisamfile pconti (LF_PCON); + pconti.setkey(1); + pconti.zero(); + pconti.put(PCN_GRUPPO, g); + pconti.put(PCN_CONTO, c); + pconti.put(PCN_SOTTOCONTO, 0L); + if (pconti.read() == NOERR) + { + _tipo_conto = pconti.get(PCN_TMCF); + if (_tipo_conto == "C" || _tipo_conto == "F") + { + TLocalisamfile clifo (LF_CLIFO); + clifo.setkey(1); + clifo.zero(); + clifo.put(CLI_TIPOCF, _tipo_conto); + clifo.put(CLI_CODCF, s); + if (clifo.read() != NOERR) + { + _descr_conto = ""; + return FALSE; + } + else + { + char tipoa = clifo.get_char("TIPOAPER"); + if (tipoa == 'F') //persona fisica + { + TString80 cognome, nome; + ragsoc = clifo.get("RAGSOC"); + cognome = ragsoc.mid(0,30); + nome = ragsoc.mid(30,20); + cognome.trim(); nome.trim(); + ragsoc = cognome; + ragsoc << " " << nome; + _descr_conto = ragsoc; + } + else _descr_conto = clifo.get("RAGSOC"); + } + } + else + { + pconti.zero(); + pconti.put(PCN_GRUPPO, g); + pconti.put(PCN_CONTO, c); + pconti.put(PCN_SOTTOCONTO, s); + if (pconti.read() != NOERR) + { + _descr_conto = ""; + return FALSE; + } + else _descr_conto = pconti.get(PCN_DESCR); + } + } + else + { + _descr_conto = ""; + return FALSE; + } + return TRUE; +} + +bool TRic_ListaMov::user_create() +{ + _trasfer = new TTransfer_file(); + + TProgind* pnd = NULL; + pnd = new TProgind (3,"Controllo archivi\nPrego attendere", + FALSE, TRUE, 30); + _tab_tra = new TTable ("%TRA"); + _tab_tpd = new TTable ("%TPD"); + _tab_pag = new TTable ("%CPG"); + _tab_iva = new TTable ("%IVA"); + _caus = new TLocalisamfile (LF_CAUSALI); + _ditte = new TLocalisamfile (LF_NDITTE); + _clifo = new TLocalisamfile (LF_CLIFO); + _pcon = new TLocalisamfile (LF_PCON); + + if (pnd) pnd->addstatus(1); + + if (!check_archivi(pnd)) + { + delete pnd; + return FALSE; + } + + if (pnd) pnd->addstatus(1); + + TString80 tmpmov = "%"; + tmpmov << get_firm_dir(); + tmpmov << "\\" << TEMP_MOV; + TString80 tmprmov = "%"; + tmprmov << get_firm_dir(); + tmprmov << "\\" << TEMP_RMOV; + TString80 tmprmoviva = "%"; + tmprmoviva << get_firm_dir(); + tmprmoviva << "\\" << TEMP_RMOVIVA; + + _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); + _trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0); + _tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0); + + _rel = new TRelation(_tmov); + _rel->add(_trmov,"NUMREG=NUMREG",1,0,0,FALSE); + _rel->add(_tiva, "NUMREG=NUMREG",1,0,0,FALSE); + _cur = new TCursor (_rel, "", 1); + + _giornale = new TLibro_giornale(); + + add_cursor(_cur); + + add_file (LF_MOV); + add_file (LF_RMOV, LF_MOV); + add_file (LF_RMOVIVA, LF_MOV); + + printer().footerlen(5); + + delete pnd; + + return TRUE; +} + +bool TRic_ListaMov::check_archivi(TProgind* pnd) +{ + TString80 nome; + long ditta_ric = get_firm(); + + if (!prefhndl->exist(ditta_ric)) + return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); + + TTransfer_file& tr = trasfer(); + + _pathfile = tr.path(); + + _pathfile = _pathfile << "\\trasfer"; + + if (!tr.open(_pathfile)) + return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); + + if (!tr.read_control_rec()) + return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); + else _record = tr.record(); + + TString16 sd = look_sdt(); + + if (sd.not_empty()) + _sdt = sd[0]; + else return error_box("Ricezione tabelle non effettuata: richiamare il programma relativo"); + + if (_sdt == 'T') + return error_box("Ricezione tabelle non effettuata: richiamare il programma relativo"); + + if (_sdt == 'M') + return yesno_box("Controllo gia' effettuato: si desidera ripeterlo ?"); + + if (_sdt != '*' && _sdt != 'C') + return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); + + TString16 ult = tr.ult_file(); + TString16 key = tr.key(); + + ult.strip_spaces(); + key.strip_spaces(); + + if (_sdt == 'C') + if ( ult.not_empty() || key.not_empty() ) + return error_box("Rilevati errori gravi negli archivi: procedura interrotta"); + + if (_sdt == '*') + return warning_box("Trasferimento interamente completato: proseguire per cancellare i file"); + + if (pnd) pnd->addstatus(1); + + return TRUE; +} + +void TRic_ListaMov::stampa_errori_mov(int riga) +{ + long i = _err.first_one(); + if (i != -1) + { + for (; i <= _err.last_one(); i++) + if (_err[i]) + set_row(++riga, "@8g%s", (const char*) err_msg[i]); + } +} + +bool TRic_ListaMov::controlla_mov() +{ + bool check_reg = TRUE; + TString16 causreg; + TDate udata; + char tipocf; + + _tiporeg = 0; + + if (!_datareg.ok()) + { + _errore_grave = TRUE; + _err.set(0L); + } + else if (!_datacomp.ok()) + { + const int ae = date2esc(_datacomp); + if (ae == 0) + _err.set(1); + } + + TLibro_giornale& gio = giornale(); + bool ok = gio.read(_ae); //se _ae e' zero la read considera come anno quello corrente + if (_datareg < gio.last_print()) + { + _errore_grave = TRUE; + _err.set(2); + } + + TString16 dd = _datadoc.string(); + if (dd.not_empty()) + if (!_datadoc.ok()) + _err.set(3); + + //if (_causale.not_empty()) + //{ + TLocalisamfile caus(LF_CAUSALI); + caus.setkey(1); + caus.zero(); + caus.put(CAU_CODCAUS,_causale); + if (caus.read() == NOERR) + { + _esiste_causale = TRUE; + _tipodoc = caus.get(CAU_TIPODOC); + } + else + { + caus.zero(); + _esiste_causale = FALSE; + if (look_causale(_causale)) //se la causale e' significativa + { + _errore_grave = TRUE; + _err.set(4); + } + } + //_tipodoc = caus.get(CAU_TIPODOC); ho sempre quello letto sul movimento! + causreg = caus.get(CAU_REG); + _descr_causale = caus.get(CAU_DESCR); + _mov_sez = caus.get_bool(CAU_MOVSEZ); + //} + + if (!_codpag.blank()) + { + bool ok = look_pag(); + if (!ok) + _err.set(5); + } + + if (!_registro.blank()) //movimento iva (fattura) + { + if (!look_causale(_causale)) //se la causale non e' significativa + { + _errore_grave = TRUE; + check_reg = FALSE; + _err.set(6); + } + if (check_reg && _ae) + { + TRegistro rg (_registro, _ae); + if (rg.name().empty()) + { + _errore_grave = TRUE; + check_reg = FALSE; + _err.set(6); + } + else + { + _tiporeg = rg.tipo(); + udata = rg.last_print(); + } + } + } + else if (!causreg.blank() && _ae) + { + TRegistro rg (causreg, _ae); + if (rg.name().empty()) + { + _errore_grave = TRUE; + check_reg = FALSE; + _err.set(6); + } + else + { + _tiporeg = rg.tipo(); + udata = rg.last_print(); + } + _registro = causreg; + } + + if (check_reg && !_registro.blank()) + { + if (_tiporeg == 1) tipocf = 'C'; + else if (_tiporeg == 2) tipocf = 'F'; + if (!_tipodoc.blank()) //se esiste, uso quello della causale!!! + { + TTable tabtpd("%TPD"); + tabtpd.put("CODTAB", _tipodoc); + if (tabtpd.read() == NOERR) + { + bool cor = tabtpd.get_bool("B0"); + if (!cor) + if (_codcf != 0l) + { + TLocalisamfile clifo(LF_CLIFO); + clifo.zero(); + clifo.put(CLI_CODCF, _codcf); + clifo.put(CLI_TIPOCF,tipocf); + if (clifo.read() != NOERR) + { + _errore_grave = TRUE; + _err.set(7); + } + } + else + { + _errore_grave = TRUE; + _err.set(7); + } + } + } + } + + TString16 d74 = _data74tr.string(); + if (d74.not_empty()) + if (!_data74tr.ok()) + _err.set(8); + + if (!_registro.blank() && check_reg) + if (_datareg < udata) + { + _errore_grave = TRUE; + _err.set(9); + } + + if (_err.ones()) + return TRUE; + + return FALSE; +} + +bool TRic_ListaMov::errori_partita(int g, int c, long s) +{ + TLocalisamfile pconti (LF_PCON); + pconti.setkey(1); + pconti.zero(); + pconti.put(PCN_GRUPPO, g); + pconti.put(PCN_CONTO, c); + pconti.put(PCN_SOTTOCONTO, 0L); + if (pconti.read() == NOERR) + { + char tipo = pconti.get(PCN_TMCF)[0]; + if (tipo == 'C' || tipo == 'F') + { + TLocalisamfile clifo (LF_CLIFO); + clifo.setkey(1); + clifo.zero(); + clifo.put(CLI_TIPOCF, tipo); + clifo.put(CLI_CODCF, s); + if (clifo.read() != NOERR) + return FALSE; + } + else + { + pconti.zero(); + pconti.put(PCN_GRUPPO, g); + pconti.put(PCN_CONTO, c); + pconti.put(PCN_SOTTOCONTO, s); + if (pconti.read() != NOERR) + return FALSE; + } + } + else return FALSE; + + return TRUE; +} + +bool TRic_ListaMov::controlla_rmov() +{ + TLocalisamfile& rmov = current_cursor()->file(LF_RMOV); + int gruppo, conto, gruppoc, contoc; + long sottoconto, sottocontoc; + char sezione; + real importo, dare, avere; + + if (current_cursor()->is_first_match(LF_RMOV)) + { + dare = avere = ZERO; + TRecnotype nrec = rmov.recno(); + rmov.zero(); + rmov.setkey(1); + rmov.put(RMV_NUMREG, _numero); + TRectype recc (rmov.curr()); + for (rmov.read(_isgteq); !rmov.eof() ;rmov.next()) + { + TRectype rec (rmov.curr()); + if (rec > recc) break; + gruppo = rec.get_int(RMV_GRUPPO); + conto = rec.get_int(RMV_CONTO); + sottoconto = rec.get_long(RMV_SOTTOCONTO); + gruppoc = rec.get_int(RMV_GRUPPOC); + contoc = rec.get_int(RMV_CONTOC); + sottocontoc = rec.get_long(RMV_SOTTOCONTOC); + sezione = rec.get_char(RMV_SEZIONE); + importo = rec.get_real(RMV_IMPORTO); + + if (sezione == 'D') + dare += importo; + if (sezione == 'A') + avere += importo; + + if (gruppo == 0 || conto == 0 || sottoconto == 0l) + { + rmov.readat(nrec); + return TRUE; + } + else + { + bool ok = errori_partita(gruppo,conto,sottoconto); + if (!ok) + { + rmov.readat(nrec); + return TRUE; + } + } + + if ( (importo == ZERO && sezione != ' ') || + (sezione != 'D' && sezione != 'A') ) + { + rmov.readat(nrec); + return TRUE; + } + + if (gruppoc == 0 || contoc == 0 || sottocontoc == 0l) + { + rmov.readat(nrec); + return TRUE; + } + else + { + bool ok = errori_partita(gruppoc,contoc,sottocontoc); + if (!ok) + { + rmov.readat(nrec); + return TRUE; + } + } + + if (_esiste_causale) + if (!_mov_sez && importo == ZERO) + { + rmov.readat(nrec); + return TRUE; + } + } + if (dare != avere) + { + rmov.readat(nrec); + return TRUE; + } + rmov.readat(nrec); + } + return FALSE; +} + +void TRic_ListaMov::stampa_errori_rmov(int riga) +{ + if (_gruppo == 0 || _conto == 0 || _sottoconto == 0l) + set_row(++riga, "@8g*** Sottoconto partita non valido o non presente in archivio"); + else + { + if (!_esiste_conto) + set_row(++riga, "@8g*** Sottoconto partita non valido o non presente in archivio"); + } + + if ( (_importo == ZERO && _sezione != ' ') || + (_sezione != 'D' && _sezione != 'A') ) + set_row(++riga, "@8g*** Segnale dare/avere non valido"); + + if (_sezione == 'D') + _tot_dare += _importo; + if (_sezione == 'A') + _tot_avere += _importo; + + if (_gruppoc == 0 || _contoc == 0 || _sottocontoc == 0l) + set_row(++riga, "@8g*** Sottoconto contropartita non valido o non presente in archivio"); + else + { + bool ok = errori_partita(_gruppoc,_contoc,_sottocontoc); + if (!ok) + set_row(++riga, "@8g*** Sottoconto contropartita non valido o non presente in archivio"); + } + + if (_esiste_causale) + if (!_mov_sez && _importo == ZERO) + set_row(++riga, "@8g--- Importo riga uguale a zero"); +} + +bool TRic_ListaMov::controlla_riva() +{ + TLocalisamfile& rmoviva = current_cursor()->file(LF_RMOVIVA); + TTable tab_iva("%IVA"); + TString16 codiva; + int tipodet, tipocr, gruppocr, contocr; + long sottocontocr; + + if (current_cursor()->is_first_match(LF_RMOVIVA)) + { + TRecnotype nrec = rmoviva.recno(); + rmoviva.setkey(1); + rmoviva.zero(); + rmoviva.put(RMI_NUMREG, _numero); + TRectype recc (rmoviva.curr()); + for (rmoviva.read(_isgteq); !rmoviva.eof() ;rmoviva.next()) + { + TRectype rec (rmoviva.curr()); + if (rec > recc) break; + codiva = rec.get(RMI_CODIVA); + tipodet = rec.get_int(RMI_TIPODET); + tipocr = rec.get_int(RMI_TIPOCR); + gruppocr = rec.get_int(RMI_GRUPPO); + contocr = rec.get_int(RMI_CONTO); + sottocontocr = rec.get_long(RMI_SOTTOCONTO); + + TTable iva ("%IVA"); + iva.zero(); + iva.put("CODTAB", codiva); + if (iva.read() != NOERR) + { + rmoviva.readat(nrec); + return TRUE; + } + if (!(tipocr >= 0 && tipocr <= 9)) + { + rmoviva.readat(nrec); + return TRUE; + } + if (gruppocr == 0 || contocr == 0 || sottocontocr == 0l) + { + rmoviva.readat(nrec); + return TRUE; + } + else + { + bool ok = errori_partita(gruppocr,contocr,sottocontocr); + if (!ok) + { + rmoviva.readat(nrec); + return TRUE; + } + } + + if (tipodet != 0 && tipodet != 1 && tipodet != 3 && tipodet != 9) + { + rmoviva.readat(nrec); + return TRUE; + } + } + rmoviva.readat(nrec); + } + return FALSE; +} + +void TRic_ListaMov::stampa_errori_riva(int riga) +{ + TTable iva ("%IVA"); + + iva.zero(); + iva.put("CODTAB", _codiva); + if (iva.read() != NOERR) + set_row(++riga, "@8g--- Codice IVA non valido o non presente in tabella"); + + if (!(_tipocr >= 0 && _tipocr <= 9)) + set_row(++riga, "@8g--- Tipo costo/ricavo non valido"); + + if (_gruppocr == 0 || _contocr == 0 || _sottocontocr == 0l) + set_row(++riga, "@8g*** Sottoconto costo/ricavo non valido o non presente in archivio"); + else + { + bool ok = errori_partita(_gruppocr,_contocr,_sottocontocr); + if (!ok) + set_row(++riga, "@8g*** Sottoconto costo/ricavo non valido o non presente in archivio"); + } + + if (_tipod != 0 && _tipod != 1 && _tipod != 3 && _tipod != 9) + set_row(++riga, "@8g--- Tipo indetraibilita' non valido"); +} + +bool TRic_ListaMov::preprocess_page(int file,int counter) +{ + TCursor* cur = current_cursor(); + + if (counter) return TRUE; + + reset_print(); + + if (file == LF_MOV) + { + _anno = cur->curr(LF_MOV).get_int(MOV_ANNOES); + _datacomp = cur->curr(LF_MOV).get_date(MOV_DATACOMP); + _datadoc = cur->curr(LF_MOV).get_date(MOV_DATADOC); + _data74tr = cur->curr(LF_MOV).get_date(MOV_DATA74TER); + _causale = cur->curr(LF_MOV).get(MOV_CODCAUS); + _registro = cur->curr(LF_MOV).get(MOV_REG); + format_if_zero(_registro, 3); + _tipodoc = cur->curr(LF_MOV).get(MOV_TIPODOC); + _numdoc = cur->curr(LF_MOV).get(MOV_NUMDOC); + _datareg = cur->curr(LF_MOV).get_date(MOV_DATAREG); + _codcf = cur->curr(LF_MOV).get_long(MOV_CODCF); + _numero = cur->curr(LF_MOV).get_long(MOV_NUMREG); + _protiva = cur->curr(LF_MOV).get_long(MOV_PROTIVA); + _codval = cur->curr(LF_MOV).get(MOV_CODVALI); + _codpag = cur->curr(LF_MOV).get(MOV_CODPAG); + + _tot_dare = _tot_avere = ZERO; + _tot_doc = ZERO; + + _ae = date2esc(_datareg); + + _num_rec = cur->curr(LF_MOV).get_long(MOV_NUMGIO); + + bool controlla = controlla_mov(); //se TRUE => ci sono errori nella testata + bool verifica = (controlla_rmov() || controlla_riva()); + + if ( (_controllo == 1 && controlla) || _controllo == 2 || + (_controllo == 1 && verifica) ) + { + TString16 datareg_str = _datareg.string(); + // "Fai vedere lo stesso ..-..-.... anche se non c'e' la data..." + if (datareg_str.empty()) + datareg_str = " - - "; + TString16 datadoc_str = _datadoc.string(); + if (datadoc_str.empty()) + datadoc_str = " - - "; + int r = 1; + set_row(r++, ""); + set_row(r,"Operazione n. %-7ld", _numero); + set_row(r," del %s", (const char*)datareg_str); + set_row(r," doc. n. %-7s", (const char*)_numdoc); + set_row(r," del %s", (const char*)datadoc_str); + if (!_registro.blank()) //e' una fattura + { + set_row(r," registro IVA %-3s", (const char*)_registro); + set_row(r," protocollo n. %-5ld", _protiva); + } + set_row(r, " comp. %d", _anno); + + stampa_errori_mov(r); + + return TRUE; + } + return FALSE; + } + else if (file == LF_RMOV) + { + _gruppo = cur->curr(LF_RMOV).get_int(RMV_GRUPPO); + _conto = cur->curr(LF_RMOV).get_int(RMV_CONTO); + _sottoconto = cur->curr(LF_RMOV).get_long(RMV_SOTTOCONTO); + _gruppoc = cur->curr(LF_RMOV).get_int(RMV_GRUPPOC); + _contoc = cur->curr(LF_RMOV).get_int(RMV_CONTOC); + _sottocontoc = cur->curr(LF_RMOV).get_long(RMV_SOTTOCONTOC); + _importo = cur->curr(LF_RMOV).get_real(RMV_IMPORTO); + _sezione = cur->curr(LF_RMOV).get(RMV_SEZIONE)[0]; + TString80 descr = cur->curr(LF_RMOV).get(RMV_DESCR); + int numrig = cur->curr(LF_RMOV).get_int(RMV_NUMRIG); + + _tipo_conto = ""; + + if (_gruppo != 0 && _conto != 0 && _sottoconto != 0l) + _esiste_conto = DescrConto(_gruppo,_conto,_sottoconto); + else + { + _esiste_conto = FALSE; + _descr_conto = ""; + } + int r = 1; + set_row(r, "P%d", numrig); + set_row(r, "@5g%3s %-.20s @30g%-.24s @56g%03d %03d %06ld @71g%-.28s", (const char*) _causale, + (const char*) _descr_causale, (const char*) descr, _gruppo, _conto, _sottoconto, + (const char*) _descr_conto); + if (_sezione == 'D') + set_row(r, "@99g%r", &_importo); + else if (_sezione == 'A') + set_row(r, "@116g%r", &_importo); + else set_row(r, "@107g%r", &_importo); + + stampa_errori_rmov(r); + } + else if (file == LF_RMOVIVA) + { + real impo = cur->curr(LF_RMOVIVA).get_real(RMI_IMPONIBILE); + real impos = cur->curr(LF_RMOVIVA).get_real(RMI_IMPOSTA); + int numrig = cur->curr(LF_RMOVIVA).get_int(RMI_NUMRIG); + _tipocr = cur->curr(LF_RMOVIVA).get_int(RMI_TIPOCR); + _tipod = cur->curr(LF_RMOVIVA).get_int(RMI_TIPODET); + _codiva = cur->curr(LF_RMOVIVA).get(RMI_CODIVA); + _n_rec = cur->curr(LF_RMOVIVA).get_int(RMI_ANNOES); + _gruppocr = cur->curr(LF_RMOVIVA).get_int(RMI_GRUPPO); + _contocr = cur->curr(LF_RMOVIVA).get_int(RMI_CONTO); + _sottocontocr = cur->curr(LF_RMOVIVA).get_long(RMI_SOTTOCONTO); + + TString80 codiva_des(get_codiva_des(_codiva)); + + _tot_doc += impo + impos; + _impo = impo; + _impos = impos; + + if (!_tipodoc.blank()) + { + TTable tabtpd("%TPD"); + tabtpd.put("CODTAB", _tipodoc); + if (tabtpd.read() == NOERR) + { + bool cor = tabtpd.get_bool("B0"); + if (cor) + { + _impo = impo + impos; + _impos = ZERO; + } + } + } + + int r = 1; + set_row(r, "I%d", numrig); + set_row(r, "@5gImponibile %r Imposta %r Codice %4s %-50s %d", + &_impo, &_impos, (const char*) _codiva, (const char*) codiva_des, _tipod); + + stampa_errori_riva(r); + } + return TRUE; +} + +print_action TRic_ListaMov::postprocess_page(int file,int count) +{ + if (count) return NEXT_PAGE; + if (file == LF_MOV) + { + aggiorna_trasfer_Z(); + reset_print(); + _err.reset(); + int n = 1; + if (_tot_dare != _tot_avere) + { + set_row(n++, "@8g*** Il movimento risulta sbilanciato. Totali rilevati:@99g%r@116g%r", + &_tot_dare, &_tot_avere); + return REPEAT_PAGE; + } + } + if (file == LF_RMOVIVA) + aggiorna_trasfer_U(); + + return NEXT_PAGE; +} + +void TRic_ListaMov::postclose_print() +{ + if (_errore_grave) + message_box("Rilevati errori gravi durante il controllo movimenti: \n trasferimento interrotto"); + else + { + TConfig conf (CONFIG_DITTA); + conf.set("FlStTra", "M"); + + TTransfer_file& tr = trasfer(); + _record.overwrite("Z",240); //_record e' letto nella read_control_rec() + const int size = 256; + tr.write_control_rec(_record, size); + } +} + +void TRic_ListaMov::aggiorna_trasfer_Z() +{ + TLocalisamfile& mov = current_cursor()->file(LF_MOV); + + int i=0; + while (_registro[i]=='0' || _registro[i]==' ') i++; + + _registro = ""; + _registro << _registro[i]; + _registro.left_just(3, ' '); + + mov.put(MOV_REG, _registro); + mov.put(MOV_TIPODOC, _tipodoc); + mov.rewrite(); + + TString16 str; + TTransfer_file& tr = trasfer(); + long num = _inizioZ + _num_rec; + if (tr.read_rec_trasfer(num) > 0) + { + //tr.put(_registro, "Z1", 6); + //tr.put(_tipodoc, "Z1", 12); + if (_tiporeg != 0) + { + str = format("%d", _tiporeg); + tr.put(str, "Z1", 26); + } + str = _tot_doc.string(); + tr.put(str, "Z1", 13); + tr.put(_tipo_conto, "Z1", 11); + tr.write(num); + } +} + +void TRic_ListaMov::aggiorna_trasfer_U() +{ + TTransfer_file& tr = trasfer(); + long num = _inizioU + _n_rec; + if (tr.read_rec_trasfer(num) > 0) + { + TString16 str = _impo.string(); + tr.put(str, "U1", 14); + str = _impos.string(); + tr.put(str, "U1", 15); + tr.write(num); + } +} + +bool TRic_ListaMov::user_destroy() +{ + delete _giornale; + delete _trasfer; + delete _rel; + delete _cur; + delete _tmov; + delete _trmov; + delete _tiva; + delete _caus; + delete _ditte; + delete _clifo; + delete _pcon; + delete _tab_tra; + delete _tab_pag; + delete _tab_tpd; + delete _tab_iva; + + return TRUE; +} + +bool TRic_ListaMov::set_print(int m) +{ + TMask msk ("cg2700a"); + + TTransfer_file& tr = trasfer(); + + msk.set(F_NUMERO, tr.nultras()); + msk.set(F_DATALIMITE, tr.dataultras()); + msk.set(F_SDT, look_sdt()); + msk.set(F_SIGLA, tr.ult_file()); + msk.set(F_CHIAVE, tr.key()); + + if (msk.run() != K_ENTER) return FALSE; + + _controllo = msk.get_int(F_LISTA); + + if (_sdt == '*') + fremove(_pathfile); + + setta_parametri(" ", "C"); + + set_real_picture("###.###.###.###"); + + printer().footerlen(5); + + setta_intestazione(); + + _errore_grave = FALSE; + _err.reset(); + _inizioZ = tr.start('Z'); + _inizioU = tr.start('U'); + + return TRUE; +} + +void TRic_ListaMov::setta_intestazione() +{ + int soh = 1; + TString sep(132); + TString ragsoc(50); + + TLocalisamfile nditte(LF_NDITTE); + nditte.zero(); + nditte.put(NDT_CODDITTA, get_firm()); + if (nditte.read() == NOERR) + ragsoc = nditte.get(NDT_RAGSOC); + + reset_header(); + + sep << "Ditta " << get_firm(); + sep << " " << ragsoc; + sep.left_just(132); + + set_header (soh++, (const char*) sep); + + sep = ""; + sep << "Data @< Pag. @#"; + + sep.right_just(127); + + sep.overwrite ("LISTA DI CONTROLLO MOVIMENTI IN TRASFERIMENTO"); + set_header (soh++, (const char*)sep); + sep.fill('-'); + set_header (soh++, (const char *) sep); + set_header (soh++, "Rig Cod.causale @30gDescriz.aggiuntiva @56gCod.conto @71gDescriz.conto @99gDare @116gAvere"); + set_header (soh, (const char *) sep); +} + +void TRic_ListaMov::setta_parametri(const TString& sigla, const TString& flag) +{ + TTransfer_file& tr = trasfer(); + + TConfig conf (CONFIG_DITTA); + conf.set("FlStTra", flag); + + TString rec = tr.record(); + rec.overwrite(sigla,240); + + const int size = 256; + tr.write_control_rec(rec, size); +} + +int cg2700 (int argc, char* argv[]) +{ + TRic_ListaMov a; + a.run(argc, argv,"Lista controllo movimenti"); + return TRUE; +} diff --git a/cg/cg2700.h b/cg/cg2700.h index 1ffc91bf5..938c20b7d 100755 --- a/cg/cg2700.h +++ b/cg/cg2700.h @@ -1,8 +1,8 @@ -#define F_CODDITTA 101 -#define F_RAGSOC 102 -#define F_LISTA 103 -#define F_NUMERO 104 -#define F_DATALIMITE 105 -#define F_SDT 106 -#define F_SIGLA 107 -#define F_CHIAVE 108 +#define F_CODDITTA 101 +#define F_RAGSOC 102 +#define F_LISTA 103 +#define F_NUMERO 104 +#define F_DATALIMITE 105 +#define F_SDT 106 +#define F_SIGLA 107 +#define F_CHIAVE 108 diff --git a/cg/cg2700a.uml b/cg/cg2700a.uml index c0bc8c12d..460c4b502 100755 --- a/cg/cg2700a.uml +++ b/cg/cg2700a.uml @@ -1,77 +1,77 @@ -#include "cg2700.h" - -PAGE "" -1 -1 78 17 - -NUMBER F_CODDITTA 5 -BEGIN - PROMPT 2 1 "Ditta ricevente " - FLAGS "FRD" - USE LF_NDITTE KEY 1 - CHECKTYPE REQUIRED - INPUT CODDITTA F_CODDITTA - OUTPUT F_CODDITTA CODDITTA - OUTPUT F_RAGSOC RAGSOC -END - -STRING F_RAGSOC 50 -BEGIN - PROMPT 2 2 "Ragione sociale " - FLAGS "D" -END - -RADIOBUTTON F_LISTA 31 -BEGIN - PROMPT 2 4 "Scelta controllo " - HELP "Indicare il tipo di controllo" - ITEM "1|Lista controllo movim. errati" - ITEM "2|Lista controllo tutti movim." -END - -NUMBER F_NUMERO 3 -BEGIN - PROMPT 2 9 "Numero invio " - FLAGS "D" -END - -DATE F_DATALIMITE -BEGIN - PROMPT 2 10 "Data limite trasferimento " - FLAGS "D" -END - -TEXT DLG_NULL -BEGIN - PROMPT 2 11 "Stato ricezione " -END - -STRING F_SDT 1 -BEGIN - PROMPT 31 11 "" - FLAGS "D" -END - -STRING F_SIGLA 1 -BEGIN - PROMPT 34 11 "" - FLAGS "D" -END - -STRING F_CHIAVE 15 -BEGIN - PROMPT 37 11 "" - FLAGS "D" -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - +#include "cg2700.h" + +PAGE "" -1 -1 78 17 + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 2 1 "Ditta ricevente " + FLAGS "FRD" + USE LF_NDITTE KEY 1 + CHECKTYPE REQUIRED + INPUT CODDITTA F_CODDITTA + OUTPUT F_CODDITTA CODDITTA + OUTPUT F_RAGSOC RAGSOC +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 2 2 "Ragione sociale " + FLAGS "D" +END + +RADIOBUTTON F_LISTA 31 +BEGIN + PROMPT 2 4 "Scelta controllo " + HELP "Indicare il tipo di controllo" + ITEM "1|Lista controllo movim. errati" + ITEM "2|Lista controllo tutti movim." +END + +NUMBER F_NUMERO 3 +BEGIN + PROMPT 2 9 "Numero invio " + FLAGS "D" +END + +DATE F_DATALIMITE +BEGIN + PROMPT 2 10 "Data limite trasferimento " + FLAGS "D" +END + +TEXT DLG_NULL +BEGIN + PROMPT 2 11 "Stato ricezione " +END + +STRING F_SDT 1 +BEGIN + PROMPT 31 11 "" + FLAGS "D" +END + +STRING F_SIGLA 1 +BEGIN + PROMPT 34 11 "" + FLAGS "D" +END + +STRING F_CHIAVE 15 +BEGIN + PROMPT 37 11 "" + FLAGS "D" +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + ENDMASK \ No newline at end of file diff --git a/cg/cg2800.cpp b/cg/cg2800.cpp index bb9010f78..d388d5310 100755 --- a/cg/cg2800.cpp +++ b/cg/cg2800.cpp @@ -1,1477 +1,1477 @@ -// Variazione movimenti di prima nota e movimenti iva - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cglib04.h" -#include "cglib.h" -#include "cg2103.h" -#include "conto.h" - -#include "cg2800.h" -#include "cg2801.h" -#include "cg2802.h" - -HIDDEN TString80 TEMP; - -//HIDDEN int date2esc(const TDate& d, int* prevesc = NULL); - -class TVar_mov : public TApplication -{ - TIsamtempfile* _tmov,* _trmov,* _tiva; - TLocalisamfile* _pcon,* _clifo; - TRectype* _rec_mov,* _rec_rmov,* _rec_riva; - TTransfer_file _tras_file; - char _scelta; - - TString _trasf,_std,_descr_civa; - long _dittaric,_numreg; - TString _control_rec,_record; - bool _righe,_corrisp; - int _numrig,_tiporeg; - -public: - TString _titolo; - - virtual bool create(); - virtual bool destroy(); - virtual bool menu(MENU_TAG m); - bool main_loop(); - bool esegui_controlli(); - bool leggi_trasfer(); - bool controlli(); - void leggi_record_controllo(); - bool video_PN(); - bool video_IVA(); - void registra_PN(TMask& m); - void registra_IVA(TMask& m); - bool esiste_testata_mov(TMask& m); - bool ricerca_movimento(TMask& m); - - bool esiste_riga_mov(TMask& m); - bool esiste_riga_iva(TMask& m); - - void ricerca_codcaus(const TString& codcaus); - void setta_campi_maschera(TMask& m); - bool setta_campi_maschera_iva(TMask& m); - - void registra_file_temp_mov(long,const TDate&,const TDate&,const TString&,TString&,long,long,const TString&,TString&); - void registra_file_trasfer_t(long,int,const TDate&,const TDate&,const TString&,TString&,long,long,const TString&,const TString&); - void registra_file_temp_rmov(long,int,int,int,long,char,const TString&,int,int,long,const real&); - void registra_file_trasfer_r(long,int,int,int,long,char,const TString&,int,int,long,const real&); - void registra_file_trasfer_t_iva(long,const TDate&,long,const TString&,const TString&,const TString&,const TString&,const TString&); - void registra_file_temp_riva(long,int,const real&,const TString&,const real&,int,int,int,int,long); - void registra_file_trasfer_r_iva(long,int,const real&,const TString&,const real&,int,int,int,int,long); - - void setta_parametri_record(const TString& sigla,const TString& flag); - - const char* converti (TString& data_AS400); - const char* riconverti(TString& data_PC); - - static bool codice_registro_hnd (TMask_field& f, KEY k); - static bool codice_causale_hnd (TMask_field& f, KEY k); - static bool numero_protocollo_hnd (TMask_field& f, KEY k); - static bool ultimo_protocollo_hnd (TMask_field& f, KEY k); - static bool codice_pagamento_hnd (TMask_field& f, KEY k); - static bool data_stampa (TMask_field& f, KEY k); - - static bool controllo_partita (TMask_field& f, KEY k); - static bool controllo_contropartita (TMask_field& f, KEY k); - static bool controllo_importo (TMask_field& f, KEY k); - - static bool codice_clifo_hnd (TMask_field& f, KEY k); - static bool codice_iva_hnd (TMask_field& f, KEY k); - static bool imposta_hnd (TMask_field& f, KEY k); - static bool detraibilita_hnd (TMask_field& f, KEY k); - static bool tipocr_hnd (TMask_field& f, KEY k); - - bool decodifica_codiva(const TString& codiva); - - TVar_mov(char mov); -}; - -HIDDEN TVar_mov& app() { return (TVar_mov &) main_app(); } - -HIDDEN int date2esc(const TDate& d, int* prevesc) -{ - if (prevesc) *prevesc = 0; - TTable esc("ESC"); - for (int err = esc.first(); err == NOERR; err = esc.next()) - { - const TDate ia(esc.get("D0")); // Data inizio esercizio - const TDate fa(esc.get("D1")); // Data fine esercizio - const anno = esc.get_int("CODTAB"); - if (d >= ia && d <= fa) - return anno; - if (prevesc) *prevesc = anno; - } - return 0; -} - -TVar_mov::TVar_mov(char mov) : _scelta(toupper(mov)) -{ - switch (_scelta) - { - case 'P': - _titolo = "Variazione movimenti prima nota"; - break; - - case 'I': - _titolo = "Variazione movimenti iva"; - break; - - default: - break; - } -} - -bool TVar_mov::create() -{ - TApplication::create(); - - _pcon = new TLocalisamfile (LF_PCON); - _clifo = new TLocalisamfile (LF_CLIFO); - _rec_mov = new TRectype (LF_MOV); - - if (_scelta == 'P') - { - TString80 tmpmov = "%"; - tmpmov << get_firm_dir(); - tmpmov << "\\" << TEMP_MOV; - TString80 tmprmov = "%"; - tmprmov << get_firm_dir(); - tmprmov << "\\" << TEMP_RMOV; - - _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); - _trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0); - _rec_rmov = new TRectype (LF_RMOV); - } - else - if (_scelta == 'I') - { - TString80 tmpmov = "%"; - tmpmov << get_firm_dir(); - tmpmov << "\\" << TEMP_MOV; - TString80 tmprmoviva = "%"; - tmprmoviva << get_firm_dir(); - tmprmoviva << "\\" << TEMP_RMOVIVA; - - _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); - _tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0); - _rec_riva = new TRectype (LF_RMOVIVA); - } - - dispatch_e_menu (BAR_ITEM(1)); - - return TRUE; -} - -bool TVar_mov::destroy() -{ - delete _rec_mov; - delete _pcon; - delete _clifo; - - if (_scelta == 'P') - { - delete _trmov; - delete _rec_rmov; - } - else - if (_scelta == 'I') - { - delete _tiva; - delete _rec_riva; - } - - delete _tmov; - - return TApplication::destroy(); -} - -void TVar_mov::leggi_record_controllo() -{ - _tras_file.read_control_rec(); - _control_rec = _tras_file.record(); -} - -const char* TVar_mov::converti (TString& data_AS400) -{ - TEMP = data_AS400.mid(4,2); - TEMP << "-" <get (MOV_REG); - - if (!setta_campi_maschera_iva(mask)) - return FALSE; - - mask.set_handler(F_CODCF, codice_clifo_hnd); - - if (_righe) - { - mask.set_handler(F_SOTTOCONTO, controllo_partita); - mask.set_handler(F_CODIVA, codice_iva_hnd); - mask.set_handler(F_IMPOSTA, imposta_hnd); - mask.set_handler(F_TIPODET, detraibilita_hnd); - mask.set_handler(F_TIPOCR, tipocr_hnd); - } - - tasto = mask.run(); - - switch (tasto) - { - case K_ESC : - break; - - case K_QUIT : - break; - - case K_SAVE : - { - registra_IVA(mask); - } - break; - - default: - break; - } - } - } - while (tasto != K_QUIT); //K_ENTER - - return TRUE; -} - -bool TVar_mov::ricerca_movimento(TMask& m) -{ - _numrig = atoi(m.get(F_NUMRIG)); - - if (_numrig == 0) - { - _righe = FALSE; - return esiste_testata_mov(m); - } - else - { - _righe = TRUE; - esiste_testata_mov(m); - if (_scelta == 'P') - return esiste_riga_mov(m); - else - return esiste_riga_iva(m); - } - - return TRUE; -} - -bool TVar_mov::esiste_testata_mov(TMask& m) -{ - long nprog; - - _numreg = m.get_long(F_NUMREG); - - _tmov->setkey(1); - _tmov->zero(); - _tmov->put(MOV_NUMREG, _numreg); - - if (_tmov->read() == NOERR) - { - if (_scelta == 'P') - { - nprog = _tmov->get_long(MOV_NUMGIO); - nprog += _tras_file.start('Z'); - } - else - if (_scelta == 'I') - { - _tiva->setkey(1); - _tiva->zero(); - _tiva->put(RMI_NUMREG, _numreg); - _tiva->read(); - long nr = _tiva->get_long(RMI_NUMREG); - if (_numreg != nr) - return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); - - nprog = _tmov->get_long(MOV_ANNOIVA); - nprog += _tras_file.start('U'); - } - - _tras_file.read_rec_trasfer(nprog); - _record = _tras_file.read_rec(); - - char annullato = _record.sub(248,249)[0]; - - if (annullato == 'A') - return error_box("Registrazione presente ma ANNULLATA: impossibile variarla"); - - *_rec_mov = _tmov->curr(); - } - else - return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); - - return TRUE; -} - -bool TVar_mov::esiste_riga_mov(TMask& m) -{ - _numreg = m.get_long(F_NUMREG); - _numrig = m.get_int (F_NUMRIG); - - _trmov->setkey(1); - _trmov->zero(); - _trmov->put(RMV_NUMREG, _numreg); - _trmov->put(RMV_NUMRIG, _numrig); - - if (_trmov->read() == NOERR) - { - long nprog = _trmov->get_long(RMV_ANNOES); - nprog += _tras_file.start('Z'); - - _tras_file.read_rec_trasfer(nprog); - _record = _tras_file.read_rec(); - - char annullato = _record.sub(248,249)[0]; - - if (annullato == 'A') - return error_box("Registrazione presente ma ANNULLATA: impossibile variarla"); - - *_rec_rmov = _trmov->curr(); - } - else - return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); - - return TRUE; -} - -bool TVar_mov::esiste_riga_iva(TMask& m) -{ - _numreg = m.get_long(F_NUMREG); - _numrig = m.get_int (F_NUMRIG); - - _tiva->setkey(1); - _tiva->zero(); - _tiva->put(RMI_NUMREG, _numreg); - _tiva->put(RMI_NUMRIG, _numrig); - - if (_tiva->read() == NOERR) - { - long nprog = _tiva->get_long(RMI_ANNOES); - nprog += _tras_file.start('U'); - - _tras_file.read_rec_trasfer(nprog); - _record = _tras_file.read_rec(); - - char annullato = _record.sub(248,249)[0]; - - if (annullato == 'A') - return error_box("Registrazione presente ma ANNULLATA: impossibile variarla"); - - *_rec_riva = _tiva->curr(); - } - else - return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); - - return TRUE; -} - -void TVar_mov::setta_campi_maschera(TMask& m) -{ - int annorif = atoi(_record.sub(21,22)); - TDate datareg (_rec_mov->get_date(MOV_DATAREG)); - TDate datadoc (_rec_mov->get_date(MOV_DATADOC)); - TString numdoc = _rec_mov->get (MOV_NUMDOC); - TString regiva = _rec_mov->get (MOV_REG); - regiva.trim(); - long protiva = _rec_mov->get_long(MOV_PROTIVA); - long nuprotiva = _rec_mov->get_long(MOV_UPROTIVA); - TString codcaus = _rec_mov->get (MOV_CODCAUS); - TString codpag = _rec_mov->get (MOV_CODPAG); - codpag.trim(); - - m.set(F_NUMREG, _numreg); - m.set(F_NUMRIG, _numrig); - m.set(F_DATAREG, datareg.string()); - m.set(F_ANNO, annorif); - m.set(F_DATADOC, datadoc.string()); - m.set(F_NUMDOC, numdoc); - m.set(F_REGIVA, regiva); - m.set(F_PROTIVA, protiva); - m.set(F_NUPROTIVA, nuprotiva); - m.set(F_CODCAUS, codcaus); - m.set(F_CODPAG, codpag); - - m.disable(F_NUMREG); - m.disable(F_NUMRIG); - - if (!_righe) - { - m.enable(F_DATAREG); - m.enable(F_ANNO); - m.enable(F_DATADOC); - m.enable(F_NUMDOC); - m.enable(F_REGIVA); - m.enable(F_PROTIVA); - m.enable(F_NUPROTIVA); - m.enable(F_CODCAUS); - m.enable(F_CODPAG); - m.disable(F_GRUPPO); - m.disable(F_CONTO); - m.disable(F_SOTTOCONTO); - m.disable(F_SEZIONE); - m.disable(F_IMPORTO); - m.disable(F_DESCR); - m.disable(F_GRUPPOC); - m.disable(F_CONTOC); - m.disable(F_SOTTOC); - } - else - if (_righe) - { - int gruppo = _trmov->get_int (RMV_GRUPPO); - int conto = _trmov->get_int (RMV_CONTO); - long sottocon = _trmov->get_long(RMV_SOTTOCONTO); - char sezione = _trmov->get_char(RMV_SEZIONE); - TString descr = _trmov->get (RMV_DESCR); - int gruppoc = _trmov->get_int (RMV_GRUPPOC); - int contoc = _trmov->get_int (RMV_CONTOC); - long sottoc = _trmov->get_long(RMV_SOTTOCONTOC); - real importo = _trmov->get_real(RMV_IMPORTO); - - m.set(F_GRUPPO, gruppo); - m.set(F_CONTO, conto); - m.set(F_SOTTOCONTO, sottocon); - m.set(F_SEZIONE, sezione); - m.set(F_DESCR, descr); - m.set(F_GRUPPOC, gruppoc); - m.set(F_CONTOC, contoc); - m.set(F_SOTTOC, sottoc); - m.set(F_IMPORTO, importo.string()); - - m.disable(F_DATAREG); - m.disable(F_ANNO); - m.disable(F_DATADOC); - m.disable(F_NUMDOC); - m.disable(F_REGIVA); - m.disable(F_PROTIVA); - m.disable(F_NUPROTIVA); - m.disable(F_CODCAUS); - m.disable(F_CODPAG); - - m.enable(F_GRUPPO); - m.enable(F_CONTO); - m.enable(F_SOTTOCONTO); - m.enable(F_SEZIONE); - m.enable(F_IMPORTO); - m.enable(F_DESCR); - m.enable(F_GRUPPOC); - m.enable(F_CONTOC); - m.enable(F_SOTTOC); - } -} - -bool TVar_mov::setta_campi_maschera_iva(TMask& m) -{ - TDate datareg (_rec_mov->get_date(MOV_DATAREG)); - TDate data74ter (_rec_mov->get_date(MOV_DATA74TER)); - TString regiva = _rec_mov->get (MOV_REG); - regiva.trim(); - TString codcaus = _rec_mov->get (MOV_CODCAUS); - long codcf = _rec_mov->get_long(MOV_CODCF); - - TString ragsoc = _record.sub(61,86); - TString ind = _record.sub(86,108); - TString localita = _record.sub(108,126); - TString cap = _record.sub(126,131); - TString prov = _record.sub(131,133); - - if (codcaus.not_empty()) - ricerca_codcaus(codcaus); - - int anno = date2esc(datareg); - - char cr = regiva[0]; - TString codreg; - - if (isdigit(cr)) - codreg.format("%03c", cr); - else - codreg.format("%-3c", cr); - - TRegistro rg (codreg, anno); - _tiporeg = rg.tipo(); - - if (regiva.not_empty()) - { - if (!rg.ok()) - return error_box("Registrazione presente ma con PRIMANOTA ERRATA: correggerla prima"); - } - else - return error_box("Campo NON VALIDO o codice NON PRESENTE in archivio"); - - m.set(F_NUMREG, _numreg); - m.set(F_NUMRIG, _numrig); - m.set(F_DATA74TER, data74ter.string()); - m.set(F_CODCF, codcf); - m.set(F_RAGSOCOCC, ragsoc); - m.set(F_INDOCC, ind); - m.set(F_LOCALITA, localita); - m.set(F_CAPOCC, cap); - m.set(F_PROVOCC, prov); - - m.disable(F_NUMREG); - m.disable(F_NUMRIG); - - if (!_righe) - { - m.enable(F_DATA74TER); - m.enable(F_CODCF); - m.enable(F_RAGSOCOCC); - m.enable(F_INDOCC); - m.enable(F_LOCALITA); - m.enable(F_CAPOCC); - m.enable(F_PROVOCC); - m.disable(F_IMPONIBILE); - m.disable(F_CODIVA); - m.disable(F_IMPOSTA); - m.disable(F_TIPODET); - m.disable(F_TIPOCR); - m.disable(F_GRUPPO); - m.disable(F_CONTO); - m.disable(F_SOTTOCONTO); - } - else - if (_righe) - { - real imponibile (_tiva->get_real(RMI_IMPONIBILE)); - TString codiva (_tiva->get (RMI_CODIVA)); - real imposta (_tiva->get_real(RMI_IMPOSTA)); - int tipodet = _tiva->get_int (RMI_TIPODET); - int tipocr = _tiva->get_int (RMI_TIPOCR); - int gruppo = _tiva->get_int (RMI_GRUPPO); - int conto = _tiva->get_int (RMI_CONTO); - long sottoc = _tiva->get_long(RMI_SOTTOCONTO); - - m.set(F_IMPONIBILE, imponibile.string()); - m.set(F_CODIVA, codiva); - m.set(F_IMPOSTA, imposta.string()); - m.set(F_TIPODET, tipodet); - m.set(F_TIPOCR, tipocr); - m.set(F_GRUPPO, gruppo); - m.set(F_CONTO, conto); - m.set(F_SOTTOCONTO, sottoc); - - m.disable(F_DATA74TER); - m.disable(F_CODCF); - m.disable(F_RAGSOCOCC); - m.disable(F_INDOCC); - m.disable(F_LOCALITA); - m.disable(F_CAPOCC); - m.disable(F_PROVOCC); - - m.enable(F_IMPONIBILE); - m.enable(F_CODIVA); - m.enable(F_IMPOSTA); - m.enable(F_TIPODET); - m.enable(F_TIPOCR); - m.enable(F_GRUPPO); - m.enable(F_CONTO); - m.enable(F_SOTTOCONTO); - } - - return TRUE; -} - -bool TVar_mov::codice_registro_hnd(TMask_field& f, KEY k) -{ - TTable reg ("REG"); - TString descr,dep; - - if (k == K_TAB || k == K_ENTER) - { - TString codreg = f.get(); - char cr = codreg[0]; - TDate datareg (f.mask().get(F_DATAREG)); - int anno = date2esc(datareg); - - if (isdigit(cr)) - dep.format("%04d%03c", anno, cr); - else - dep.format("%04d%-3c", anno, cr); - - reg.zero(); - reg.put("CODTAB", dep); - if (reg.read() == NOERR) - { - descr = reg.get("S0"); - f.mask().set(F_DESCRREG, descr); - } - else - if (codreg.not_empty() && f.mask().is_running()) - return warning_box("Codice registro IVA non presente in tabella"); - } - - return TRUE; -} - -bool TVar_mov::codice_causale_hnd(TMask_field& f, KEY k) -{ - TLocalisamfile cau (LF_CAUSALI); - TString descr; - - if (k == K_TAB || k == K_ENTER) - { - TString codcau = f.get(); - - if (f.mask().is_running()) - { - TString codreg = f.mask().get(F_REGIVA); - - if (codreg.not_empty()) - if (codcau.empty()) - return warning_box("Il codice registro IVA e' significativo: deve essere significativo anche il codice causale"); - } - - cau.setkey(1); - cau.zero(); - cau.put("CODCAUS", codcau); - if (cau.read() == NOERR) - { - descr = cau.get("DESCR"); - f.mask().set(F_DESCRCAU, descr); - } - else - if (f.mask().is_running()) - return warning_box("Codice causale non presente in tabella"); - } - return TRUE; -} - -bool TVar_mov::numero_protocollo_hnd(TMask_field& f, KEY k) -{ - if (k != K_ENTER) return FALSE; - - TString codreg = f.mask().get(F_REGIVA); - long protiva = atol(f.mask().get(F_PROTIVA)); - long uprotiva = atol(f.mask().get(F_NUPROTIVA)); - - if (codreg.empty()) - if (protiva != 0) - return warning_box("Il codice registro IVA non e' significativo: non e' possibile compilare il numero protocollo IVA"); - - return TRUE; -} - -bool TVar_mov::ultimo_protocollo_hnd(TMask_field& f, KEY k) -{ - if (k != K_ENTER) return FALSE; - - TString codreg = f.mask().get(F_REGIVA); - long protiva = atol(f.mask().get(F_PROTIVA)); - long uprotiva = atol(f.mask().get(F_NUPROTIVA)); - - if (codreg.empty()) - if (uprotiva != 0) - return warning_box("Il codice registro IVA non e' significativo: non e' possibile compilare l' ultimo numero protocollo IVA"); - - if (protiva == 0) - if (uprotiva != 0) - return warning_box("Numero protocollo IVA non significativo: non e' possibile compilare il numero protocollo IVA riepilogato"); - - return TRUE; -} - -bool TVar_mov::codice_pagamento_hnd(TMask_field& f, KEY k) -{ - TTable pag ("%CPG"); - TString descr,codpag,dep; - - if (k == K_TAB || k == K_ENTER) - { - codpag = f.get(); - dep.format("%04s", (const char*)codpag); - - pag.zero(); - pag.put("CODTAB", dep); - if (pag.read() == NOERR) - { - descr = pag.get("S0"); - f.mask().set(F_DESCRPAG, descr); - } - else - if (codpag.not_empty() && k == K_ENTER) - return warning_box("Codice pagamento non presente in tabella"); - } - - return TRUE; -} - -bool TVar_mov::data_stampa(TMask_field& f, KEY k) -{ - if (k != K_ENTER) return FALSE; - - TDate datareg (f.mask().get(F_DATAREG)); - const int ae = date2esc(datareg); - - TLibro_giornale gio; - gio.read(ae); //se _ae e' zero la read considera come anno quello corrente - - if (datareg < gio.last_print()) - return warning_box("La data di registrazione e' minore della data di stampa del Libro Giornale"); - - TString codreg = f.mask().get(F_REGIVA); - - if (!codreg.blank()) //movimento iva (fattura) - { - TRegistro rg (codreg, ae); - - if (datareg < rg.last_print()) - return error_box("La data di registrazione e' minore della data stampa del registro IVA"); - } - - return TRUE; -} - -bool TVar_mov::controllo_partita(TMask_field& f, KEY k) -{ - if (k == K_TAB || k == K_ENTER) - { - int gruppo = f.mask().get_int (F_GRUPPO); - int conto = f.mask().get_int (F_CONTO); - long sottoc = f.mask().get_long(F_SOTTOCONTO); - - TConto tc (gruppo,conto,sottoc); - - TString descr = tc.descrizione(); - f.mask().set(F_DESCRPARTITA, descr); - - if (k == K_ENTER) - if (!tc.find()) - return warning_box("Sottoconto partita non presente in anagrafica Piano dei Conti oppure anagrafica Clienti / Fornitori"); - } - - return TRUE; -} - -bool TVar_mov::controllo_contropartita(TMask_field& f, KEY k) -{ - if (k == K_TAB || k == K_ENTER) - { - int gruppo = f.mask().get_int (F_GRUPPOC); - int conto = f.mask().get_int (F_CONTOC); - long sottoc = f.mask().get_long(F_SOTTOC); - - TConto tc (gruppo,conto,sottoc); - - TString descr = tc.descrizione(); - f.mask().set(F_DESCRCPARTITA, descr); - - if (k == K_ENTER) - if (!tc.find()) - return warning_box("Sottoconto contropartita non presente in anagrafica Piano dei Conti oppure anagrafica Clienti / Fornitori"); - } - - return TRUE; -} - -bool TVar_mov::controllo_importo(TMask_field& f, KEY k) -{ - if (k == K_ENTER) - { - real importo (f.mask().get(F_IMPORTO)); - - if (importo == ZERO) - return warning_box("L' importo deve essere significativo"); - } - - return TRUE; -} - -bool TVar_mov::codice_clifo_hnd(TMask_field& f, KEY k) -{ - char tipo; - - if (k == K_TAB || k == K_ENTER) - { - long codcf = atol(f.get()); - if (app()._tiporeg == 1) - tipo = 'C'; - else - if (app()._tiporeg == 2) - tipo = 'F'; - - TConto tc (0,0,codcf,tipo); - - if (tc.find()) - { - TString descr = tc.descrizione(); - f.mask().set(F_RAGSOCCF, descr); - } - else - if (k == K_ENTER) - return warning_box("Campo NON VALIDO o codice non presente in archivio"); - } - - return TRUE; -} - -bool TVar_mov::codice_iva_hnd(TMask_field& f, KEY k) -{ - if (k == K_TAB || k == K_ENTER) - { - TString codiva = f.get(); - - bool ok = app().decodifica_codiva(codiva); - - f.mask().set(F_DESCRCODIVA, app()._descr_civa); - - if (k == K_ENTER) - { - real imponibile (f.mask().get(F_IMPONIBILE)); - real imposta (f.mask().get(F_IMPOSTA)); - - if ( (imponibile != ZERO || imposta != ZERO) && codiva.empty() ) - return warning_box("Il codice IVA deve essere indicato obbligatoriamente"); - - if (codiva.not_empty()) - if (!ok) - return warning_box("Codice non presente in tabella"); - } - } - - return TRUE; -} - -bool TVar_mov::decodifica_codiva(const TString& codiva) -{ - TTable iva ("%IVA"); - TString dep; - - dep.format("%-4s", (const char*)codiva); - - iva.zero(); - iva.put("CODTAB", dep); - if (iva.read() == NOERR) - { - _descr_civa = iva.get("S0"); - return TRUE; - } - else - { - _descr_civa = ""; - return FALSE; - } - - return TRUE; -} - -bool TVar_mov::imposta_hnd(TMask_field& f, KEY k) -{ - if (k == K_ENTER) - { - real imposta (f.mask().get(F_IMPOSTA)); - - if (app()._corrisp && imposta != ZERO) - return warning_box("Il movimento e' relativo ad un corrispettivo: l'imposta deve essere uguale a 0"); - } - - return TRUE; -} - -bool TVar_mov::detraibilita_hnd(TMask_field& f, KEY k) -{ - if (k == K_ENTER) - { - int det = atoi(f.get()); - - if (det != 0 && det != 1 && det != 3 && det != 9) - return warning_box("Valore non ammesso per il tipo detraibilita'"); - } - - return TRUE; -} - -bool TVar_mov::tipocr_hnd(TMask_field& f, KEY k) -{ - if (k == K_ENTER) - { - int tcr = atoi(f.get()); - - if (tcr != 0 && tcr != 1 && tcr != 2 && tcr != 3 - && tcr != 4 && tcr != 5 && tcr != 8 && tcr != 9) - return warning_box("Valore non ammesso per il tipo costo/ricavo"); - } - - return TRUE; -} - -void TVar_mov::registra_PN(TMask& m) -{ - if (!_righe) - { - long numreg = m.get_long(F_NUMREG); - int annorif = m.get_int (F_ANNO); - TDate datareg (m.get(F_DATAREG)); - TDate datadoc (m.get(F_DATADOC)); - TString numdoc = m.get (F_NUMDOC); - TString regiva = m.get (F_REGIVA); - long protiva = m.get_long(F_PROTIVA); - long nuprotiva = m.get_long(F_NUPROTIVA); - TString codcaus = m.get (F_CODCAUS); - TString codpag = m.get (F_CODPAG); - - registra_file_temp_mov(numreg,datareg,datadoc,numdoc,regiva,protiva,nuprotiva,codcaus,codpag); - registra_file_trasfer_t(numreg,annorif,datareg,datadoc,numdoc,regiva,protiva,nuprotiva,codcaus,codpag); - } - else - if (_righe) - { - long numreg = m.get_long(F_NUMREG); - int numrig = m.get_int (F_NUMRIG); - int gruppo = m.get_int (F_GRUPPO); - int conto = m.get_int (F_CONTO); - long sottoc = m.get_long(F_SOTTOCONTO); - char sezione = m.get (F_SEZIONE)[0]; - TString descr = m.get (F_DESCR); - int gruppoc = m.get_int (F_GRUPPOC); - int contoc = m.get_int (F_CONTOC); - long sottocc = m.get_long(F_SOTTOC); - real importo (m.get(F_IMPORTO)); - - registra_file_temp_rmov(numreg,numrig,gruppo,conto,sottoc,sezione,descr,gruppoc,contoc,sottocc,importo); - registra_file_trasfer_r(numreg,numrig,gruppo,conto,sottoc,sezione,descr,gruppoc,contoc,sottocc,importo); - } -} - -void TVar_mov::registra_file_temp_mov(long nr,const TDate& dr,const TDate& dd,const TString& nd,TString& ri, - long pi,long upi,const TString& cc,TString& cp) -{ - _tmov->setkey(1); - _tmov->zero(); - _tmov->put(MOV_NUMREG, nr); - if (_tmov->read() == NOERR) - { - _tmov->put(MOV_DATAREG, dr); - _tmov->put(MOV_DATADOC, dd); - _tmov->put(MOV_NUMDOC, nd); - _tmov->put(MOV_REG, ri); - _tmov->put(MOV_PROTIVA, pi); - _tmov->put(MOV_UPROTIVA, upi); - _tmov->put(MOV_CODCAUS, cc); - _tmov->put(MOV_CODPAG, cp); - - _tmov->rewrite(); - } -} - -void TVar_mov::registra_file_trasfer_t(long nr,int ar,const TDate& dr,const TDate& dd,const TString& nd,TString& ri, - long pi,long upi,const TString& cc,const TString& cp) -{ - TString app,str; - TRectype* rec; - rec = new TRectype (LF_RMOV); - - _trmov->setkey(1); - _trmov->zero(); - _trmov->put(RMV_NUMREG, nr); - *rec = _trmov->curr(); - - for (_trmov->read(); !_trmov->eof(); _trmov->next()) - { - if (_trmov->curr() > *rec) break; - - long numrec = _trmov->get_int(RMV_ANNOES); - numrec += _tras_file.start('Z'); - - _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota - - app = dr.string(); - str = riconverti(app); - _tras_file.put(str,"Z1",0,numrec); - app = dd.string(); - str = riconverti(app); - _tras_file.put(str,"Z1",4,numrec); - str = format("%d", ar); - _tras_file.put(str,"Z1",50,numrec); - str = format("%-7s", (const char*) nd); - _tras_file.put(str,"Z1",5,numrec); - if (ri == "") - ri = " "; - _tras_file.put(ri,"Z1",6,numrec); - _tras_file.put(cc,"Z1",8,numrec); - str = format("%05ld", pi); - _tras_file.put(str,"Z1",7,numrec); - str = format("%05ld", upi); - _tras_file.put(str,"Z1",10,numrec); - str = format("%2s", (const char*) cp); - _tras_file.put(str,"Z1",9,numrec); - - _tras_file.write(numrec); - } - - delete rec; -} - -void TVar_mov::registra_file_temp_rmov(long nr,int nri,int g,int c,long s,char sez,const TString& desc, - int gc,int cc,long sc,const real& imp) -{ - _trmov->setkey(1); - _trmov->zero(); - _trmov->put(RMV_NUMREG, nr); - _trmov->put(RMV_NUMRIG, nri); - if (_trmov->read() == NOERR) - { - _trmov->put(RMV_GRUPPO, g); - _trmov->put(RMV_CONTO, c); - _trmov->put(RMV_SOTTOCONTO, s); - _trmov->put(RMV_SEZIONE, sez); - _trmov->put(RMV_DESCR, desc); - _trmov->put(RMV_GRUPPOC, gc); - _trmov->put(RMV_CONTOC, cc); - _trmov->put(RMV_SOTTOCONTOC, sc); - _trmov->put(RMV_IMPORTO, imp); - - _trmov->rewrite(); - } -} - -void TVar_mov::registra_file_trasfer_r(long nr,int nri,int g,int c,long s,char sez,const TString& desc, - int gc,int cc,long sc,const real& imp) -{ - TString app,str; - - _trmov->setkey(1); - _trmov->zero(); - _trmov->put(RMV_NUMREG, nr); - _trmov->put(RMV_NUMRIG, nri); - - if (_trmov->read() == NOERR) - { - long numrec = _trmov->get_int(RMV_ANNOES); - numrec += _tras_file.start('Z'); - - _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota - - str = format("%02d", g); - _tras_file.put(str,"Z1",17,numrec); - str = format("%02d", c); - _tras_file.put(str,"Z1",18,numrec); - str = format("%06ld", s); - _tras_file.put(str,"Z1",19,numrec); - str = format("%c", sez); - _tras_file.put(str,"Z1",20,numrec); - str = format("%-30s", (const char*)desc); - _tras_file.put(str,"Z1",16,numrec); - str = format("%02d", gc); - _tras_file.put(str,"Z1",21,numrec); - str = format("%02d", cc); - _tras_file.put(str,"Z1",22,numrec); - str = format("%06ld", sc); - _tras_file.put(str,"Z1",23,numrec); - str = format("%011s", (const char*) imp.string()); - _tras_file.put(str,"Z1",24,numrec); - - _tras_file.write(numrec); - } -} - -void TVar_mov::registra_IVA(TMask& m) -{ - if (!_righe) - { - long numreg = m.get_long(F_NUMREG); - TDate data74ter (m.get(F_DATA74TER)); - long codcf = m.get_long(F_CODCF); - TString ragsococc = m.get (F_RAGSOCOCC); - TString indocc = m.get (F_INDOCC); - TString localita = m.get (F_LOCALITA); - TString capocc = m.get (F_CAPOCC); - TString provocc = m.get (F_PROVOCC); - - _tmov->setkey(1); - _tmov->zero(); - _tmov->put(MOV_NUMREG, numreg); - if (_tmov->read() == NOERR) - { - _tmov->put(MOV_DATA74TER, data74ter); - _tmov->put(MOV_CODCF, codcf); - - _tmov->rewrite(); - } - - registra_file_trasfer_t_iva(numreg,data74ter,codcf,ragsococc,indocc,localita,capocc,provocc); - } - else - if (_righe) - { - long numreg = m.get_long(F_NUMREG); - int numrig = m.get_int (F_NUMRIG); - real imponibile (m.get (F_IMPONIBILE)); - TString codiva = m.get (F_CODIVA); - real imposta (m.get (F_IMPOSTA)); - int tipodet = m.get_int (F_TIPODET); - int tipocr = m.get_int (F_TIPOCR); - int gruppo = m.get_int (F_GRUPPO); - int conto = m.get_int (F_CONTO); - long sottoc = m.get_long(F_SOTTOCONTO); - - registra_file_temp_riva(numreg,numrig,imponibile,codiva,imposta,tipodet,tipocr,gruppo,conto,sottoc); - registra_file_trasfer_r_iva(numreg,numrig,imponibile,codiva,imposta,tipodet,tipocr,gruppo,conto,sottoc); - } -} - -void TVar_mov::registra_file_trasfer_t_iva(long nr,const TDate& d74,long cf,const TString& rgo,const TString& io, - const TString& lo,const TString& co,const TString& po) -{ - TString app,str; - TRectype* rec; - rec = new TRectype (LF_RMOVIVA); - - _tiva->setkey(1); - _tiva->zero(); - _tiva->put(RMI_NUMREG, nr); - *rec = _tiva->curr(); - - for (_tiva->read(); !_tiva->eof(); _tiva->next()) - { - if (_tiva->curr() > *rec) break; - - long numrec = _tiva->get_int(RMI_ANNOES); - numrec += _tras_file.start('U'); - - _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota - - app = d74.string(); - str = riconverti(app); - _tras_file.put(str,"U1",4,numrec); - str = format("%06d", cf); - _tras_file.put(str,"U1",6,numrec); - str = format("%-25s", (const char*)rgo ); - _tras_file.put(str,"U1",50,numrec); - str = format("%-22s", (const char*)io); - _tras_file.put(str,"U1",51,numrec); - str = format("%-18s", (const char*)lo); - _tras_file.put(str,"U1",52,numrec); - str = format("%05s", (const char*)co ); - _tras_file.put(str,"U1",53,numrec); - str = format("%-2s", (const char*)po); - _tras_file.put(str,"U1",54,numrec); - - _tras_file.write(numrec); - } - - delete rec; -} - -void TVar_mov::registra_file_temp_riva(long nr,int nri,const real& imp,const TString& civa,const real& imposta, - int tdet,int tcr,int g,int c,long s) -{ - _tiva->setkey(1); - _tiva->zero(); - _tiva->put(RMI_NUMREG, nr); - _tiva->put(RMI_NUMRIG, nri); - if (_tiva->read() == NOERR) - { - _tiva->put(RMI_IMPONIBILE, imp); - _tiva->put(RMI_CODIVA, civa); - _tiva->put(RMI_IMPOSTA, imposta); - _tiva->put(RMI_TIPODET, tdet); - _tiva->put(RMI_TIPOCR, tcr); - _tiva->put(RMI_GRUPPO, g); - _tiva->put(RMI_CONTO, c); - _tiva->put(RMI_SOTTOCONTO, s); - - _tiva->rewrite(); - } -} - -void TVar_mov::registra_file_trasfer_r_iva(long nr,int nri,const real& imp,const TString& civa,const real& imposta, - int tdet,int tcr,int g,int c,long s) -{ - TString app,str; - - _tiva->setkey(1); - _tiva->zero(); - _tiva->put(RMI_NUMREG, nr); - _tiva->put(RMI_NUMRIG, nri); - - if (_tiva->read() == NOERR) - { - long numrec = _tiva->get_int(RMI_ANNOES); - numrec += _tras_file.start('U'); - - _tras_file.read_rec_trasfer(numrec); //Leggo il record dell' iva - - str = format("%011s", (const char*) imp.string()); - _tras_file.put(str,"U1",14,numrec); - str = format("%02s", (const char*) civa); - _tras_file.put(str,"U1",13,numrec); - str = format("%09s", (const char*) imposta.string()); - _tras_file.put(str,"U1",15,numrec); - str = format("%d", tdet); - _tras_file.put(str,"U1",16,numrec); - str = format("%d", tcr); - _tras_file.put(str,"U1",17,numrec); - str = format("%02d", g); - _tras_file.put(str,"U1",19,numrec); - str = format("%02d", c); - _tras_file.put(str,"U1",20,numrec); - str = format("%06ld", s); - _tras_file.put(str,"U1",21,numrec); - - _tras_file.write(numrec); - } -} - -bool TVar_mov::leggi_trasfer() -{ - _trasf = _tras_file.path(_dittaric); - _trasf << "\\trasfer"; - - _tras_file.open(_trasf); - - if (_tras_file.exist()) - { - if (_tras_file.read_control_rec()) - _control_rec = _tras_file.record(); - else - return error_box("Rilevati gravi errori negli archivi:procedura interrotta"); - } - else - return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); - - return TRUE; -} - -bool TVar_mov::esegui_controlli() -{ - TConfig conf(CONFIG_DITTA); - - _std = conf.get("FlStTra"); - - if (!prefhndl->exist(_dittaric)) - return error_box("Rilevati gravi errori negli archivi: procedura interrotta"); - - if (!leggi_trasfer()) - return FALSE; - - if (!controlli()) - return FALSE; - - return TRUE; -} - -void TVar_mov::setta_parametri_record(const TString& sigla,const TString& flag) -{ - TConfig conf (CONFIG_DITTA); - - conf.set("FlStTra", flag); - - leggi_record_controllo(); - _control_rec.overwrite(sigla,240); - - const int size = 256; - - _tras_file.write_control_rec(_control_rec, size); -} - -bool TVar_mov::controlli() -{ - if (_std == "T") - return error_box("Variazione NON POSSIBILE: eseguire prima la ricezione delle tabelle"); - - if (_std == "M") - return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato"); - - if (_std == "*") - { - warning_box("Trasferimento interamente completato: proseguire per cancellare il file"); - fremove(_trasf); - return FALSE; - } - - return TRUE; -} - -bool TVar_mov::menu(MENU_TAG m) -{ - if (m == BAR_ITEM(1)) - return main_loop(); - return FALSE; -} - -int cg2800 (int argc, char* argv[]) -{ - switch (*argv[2]) - { - case 'P': - { - TVar_mov main_app(*argv[2]); - main_app.run(argc, argv,main_app._titolo); - } - break; - case 'I': - { - TVar_mov main_app(*argv[2]); - main_app.run(argc, argv,main_app._titolo); - } - break; - case 'S': - { - TDitta_ric a; - a.run(argc, argv,"Scelta ditta per ricezione"); - } - break; - case 'A': - { - TAnn_mov a; - a.run(argc, argv,"Annullamento movimenti da ricevere"); - } - break; - - default: - break; - } - //main_app.run(argc, argv,main_app._titolo); - return TRUE; -} +// Variazione movimenti di prima nota e movimenti iva + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cglib04.h" +#include "cglib.h" +#include "cg2103.h" +#include "conto.h" + +#include "cg2800.h" +#include "cg2801.h" +#include "cg2802.h" + +HIDDEN TString80 TEMP; + +//HIDDEN int date2esc(const TDate& d, int* prevesc = NULL); + +class TVar_mov : public TApplication +{ + TIsamtempfile* _tmov,* _trmov,* _tiva; + TLocalisamfile* _pcon,* _clifo; + TRectype* _rec_mov,* _rec_rmov,* _rec_riva; + TTransfer_file _tras_file; + char _scelta; + + TString _trasf,_std,_descr_civa; + long _dittaric,_numreg; + TString _control_rec,_record; + bool _righe,_corrisp; + int _numrig,_tiporeg; + +public: + TString _titolo; + + virtual bool create(); + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + bool main_loop(); + bool esegui_controlli(); + bool leggi_trasfer(); + bool controlli(); + void leggi_record_controllo(); + bool video_PN(); + bool video_IVA(); + void registra_PN(TMask& m); + void registra_IVA(TMask& m); + bool esiste_testata_mov(TMask& m); + bool ricerca_movimento(TMask& m); + + bool esiste_riga_mov(TMask& m); + bool esiste_riga_iva(TMask& m); + + void ricerca_codcaus(const TString& codcaus); + void setta_campi_maschera(TMask& m); + bool setta_campi_maschera_iva(TMask& m); + + void registra_file_temp_mov(long,const TDate&,const TDate&,const TString&,TString&,long,long,const TString&,TString&); + void registra_file_trasfer_t(long,int,const TDate&,const TDate&,const TString&,TString&,long,long,const TString&,const TString&); + void registra_file_temp_rmov(long,int,int,int,long,char,const TString&,int,int,long,const real&); + void registra_file_trasfer_r(long,int,int,int,long,char,const TString&,int,int,long,const real&); + void registra_file_trasfer_t_iva(long,const TDate&,long,const TString&,const TString&,const TString&,const TString&,const TString&); + void registra_file_temp_riva(long,int,const real&,const TString&,const real&,int,int,int,int,long); + void registra_file_trasfer_r_iva(long,int,const real&,const TString&,const real&,int,int,int,int,long); + + void setta_parametri_record(const TString& sigla,const TString& flag); + + const char* converti (TString& data_AS400); + const char* riconverti(TString& data_PC); + + static bool codice_registro_hnd (TMask_field& f, KEY k); + static bool codice_causale_hnd (TMask_field& f, KEY k); + static bool numero_protocollo_hnd (TMask_field& f, KEY k); + static bool ultimo_protocollo_hnd (TMask_field& f, KEY k); + static bool codice_pagamento_hnd (TMask_field& f, KEY k); + static bool data_stampa (TMask_field& f, KEY k); + + static bool controllo_partita (TMask_field& f, KEY k); + static bool controllo_contropartita (TMask_field& f, KEY k); + static bool controllo_importo (TMask_field& f, KEY k); + + static bool codice_clifo_hnd (TMask_field& f, KEY k); + static bool codice_iva_hnd (TMask_field& f, KEY k); + static bool imposta_hnd (TMask_field& f, KEY k); + static bool detraibilita_hnd (TMask_field& f, KEY k); + static bool tipocr_hnd (TMask_field& f, KEY k); + + bool decodifica_codiva(const TString& codiva); + + TVar_mov(char mov); +}; + +HIDDEN TVar_mov& app() { return (TVar_mov &) main_app(); } + +HIDDEN int date2esc(const TDate& d, int* prevesc) +{ + if (prevesc) *prevesc = 0; + TTable esc("ESC"); + for (int err = esc.first(); err == NOERR; err = esc.next()) + { + const TDate ia(esc.get("D0")); // Data inizio esercizio + const TDate fa(esc.get("D1")); // Data fine esercizio + const anno = esc.get_int("CODTAB"); + if (d >= ia && d <= fa) + return anno; + if (prevesc) *prevesc = anno; + } + return 0; +} + +TVar_mov::TVar_mov(char mov) : _scelta(toupper(mov)) +{ + switch (_scelta) + { + case 'P': + _titolo = "Variazione movimenti prima nota"; + break; + + case 'I': + _titolo = "Variazione movimenti iva"; + break; + + default: + break; + } +} + +bool TVar_mov::create() +{ + TApplication::create(); + + _pcon = new TLocalisamfile (LF_PCON); + _clifo = new TLocalisamfile (LF_CLIFO); + _rec_mov = new TRectype (LF_MOV); + + if (_scelta == 'P') + { + TString80 tmpmov = "%"; + tmpmov << get_firm_dir(); + tmpmov << "\\" << TEMP_MOV; + TString80 tmprmov = "%"; + tmprmov << get_firm_dir(); + tmprmov << "\\" << TEMP_RMOV; + + _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); + _trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0); + _rec_rmov = new TRectype (LF_RMOV); + } + else + if (_scelta == 'I') + { + TString80 tmpmov = "%"; + tmpmov << get_firm_dir(); + tmpmov << "\\" << TEMP_MOV; + TString80 tmprmoviva = "%"; + tmprmoviva << get_firm_dir(); + tmprmoviva << "\\" << TEMP_RMOVIVA; + + _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); + _tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0); + _rec_riva = new TRectype (LF_RMOVIVA); + } + + dispatch_e_menu (BAR_ITEM(1)); + + return TRUE; +} + +bool TVar_mov::destroy() +{ + delete _rec_mov; + delete _pcon; + delete _clifo; + + if (_scelta == 'P') + { + delete _trmov; + delete _rec_rmov; + } + else + if (_scelta == 'I') + { + delete _tiva; + delete _rec_riva; + } + + delete _tmov; + + return TApplication::destroy(); +} + +void TVar_mov::leggi_record_controllo() +{ + _tras_file.read_control_rec(); + _control_rec = _tras_file.record(); +} + +const char* TVar_mov::converti (TString& data_AS400) +{ + TEMP = data_AS400.mid(4,2); + TEMP << "-" <get (MOV_REG); + + if (!setta_campi_maschera_iva(mask)) + return FALSE; + + mask.set_handler(F_CODCF, codice_clifo_hnd); + + if (_righe) + { + mask.set_handler(F_SOTTOCONTO, controllo_partita); + mask.set_handler(F_CODIVA, codice_iva_hnd); + mask.set_handler(F_IMPOSTA, imposta_hnd); + mask.set_handler(F_TIPODET, detraibilita_hnd); + mask.set_handler(F_TIPOCR, tipocr_hnd); + } + + tasto = mask.run(); + + switch (tasto) + { + case K_ESC : + break; + + case K_QUIT : + break; + + case K_SAVE : + { + registra_IVA(mask); + } + break; + + default: + break; + } + } + } + while (tasto != K_QUIT); //K_ENTER + + return TRUE; +} + +bool TVar_mov::ricerca_movimento(TMask& m) +{ + _numrig = atoi(m.get(F_NUMRIG)); + + if (_numrig == 0) + { + _righe = FALSE; + return esiste_testata_mov(m); + } + else + { + _righe = TRUE; + esiste_testata_mov(m); + if (_scelta == 'P') + return esiste_riga_mov(m); + else + return esiste_riga_iva(m); + } + + return TRUE; +} + +bool TVar_mov::esiste_testata_mov(TMask& m) +{ + long nprog; + + _numreg = m.get_long(F_NUMREG); + + _tmov->setkey(1); + _tmov->zero(); + _tmov->put(MOV_NUMREG, _numreg); + + if (_tmov->read() == NOERR) + { + if (_scelta == 'P') + { + nprog = _tmov->get_long(MOV_NUMGIO); + nprog += _tras_file.start('Z'); + } + else + if (_scelta == 'I') + { + _tiva->setkey(1); + _tiva->zero(); + _tiva->put(RMI_NUMREG, _numreg); + _tiva->read(); + long nr = _tiva->get_long(RMI_NUMREG); + if (_numreg != nr) + return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); + + nprog = _tmov->get_long(MOV_ANNOIVA); + nprog += _tras_file.start('U'); + } + + _tras_file.read_rec_trasfer(nprog); + _record = _tras_file.read_rec(); + + char annullato = _record.sub(248,249)[0]; + + if (annullato == 'A') + return error_box("Registrazione presente ma ANNULLATA: impossibile variarla"); + + *_rec_mov = _tmov->curr(); + } + else + return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); + + return TRUE; +} + +bool TVar_mov::esiste_riga_mov(TMask& m) +{ + _numreg = m.get_long(F_NUMREG); + _numrig = m.get_int (F_NUMRIG); + + _trmov->setkey(1); + _trmov->zero(); + _trmov->put(RMV_NUMREG, _numreg); + _trmov->put(RMV_NUMRIG, _numrig); + + if (_trmov->read() == NOERR) + { + long nprog = _trmov->get_long(RMV_ANNOES); + nprog += _tras_file.start('Z'); + + _tras_file.read_rec_trasfer(nprog); + _record = _tras_file.read_rec(); + + char annullato = _record.sub(248,249)[0]; + + if (annullato == 'A') + return error_box("Registrazione presente ma ANNULLATA: impossibile variarla"); + + *_rec_rmov = _trmov->curr(); + } + else + return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); + + return TRUE; +} + +bool TVar_mov::esiste_riga_iva(TMask& m) +{ + _numreg = m.get_long(F_NUMREG); + _numrig = m.get_int (F_NUMRIG); + + _tiva->setkey(1); + _tiva->zero(); + _tiva->put(RMI_NUMREG, _numreg); + _tiva->put(RMI_NUMRIG, _numrig); + + if (_tiva->read() == NOERR) + { + long nprog = _tiva->get_long(RMI_ANNOES); + nprog += _tras_file.start('U'); + + _tras_file.read_rec_trasfer(nprog); + _record = _tras_file.read_rec(); + + char annullato = _record.sub(248,249)[0]; + + if (annullato == 'A') + return error_box("Registrazione presente ma ANNULLATA: impossibile variarla"); + + *_rec_riva = _tiva->curr(); + } + else + return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); + + return TRUE; +} + +void TVar_mov::setta_campi_maschera(TMask& m) +{ + int annorif = atoi(_record.sub(21,22)); + TDate datareg (_rec_mov->get_date(MOV_DATAREG)); + TDate datadoc (_rec_mov->get_date(MOV_DATADOC)); + TString numdoc = _rec_mov->get (MOV_NUMDOC); + TString regiva = _rec_mov->get (MOV_REG); + regiva.trim(); + long protiva = _rec_mov->get_long(MOV_PROTIVA); + long nuprotiva = _rec_mov->get_long(MOV_UPROTIVA); + TString codcaus = _rec_mov->get (MOV_CODCAUS); + TString codpag = _rec_mov->get (MOV_CODPAG); + codpag.trim(); + + m.set(F_NUMREG, _numreg); + m.set(F_NUMRIG, _numrig); + m.set(F_DATAREG, datareg.string()); + m.set(F_ANNO, annorif); + m.set(F_DATADOC, datadoc.string()); + m.set(F_NUMDOC, numdoc); + m.set(F_REGIVA, regiva); + m.set(F_PROTIVA, protiva); + m.set(F_NUPROTIVA, nuprotiva); + m.set(F_CODCAUS, codcaus); + m.set(F_CODPAG, codpag); + + m.disable(F_NUMREG); + m.disable(F_NUMRIG); + + if (!_righe) + { + m.enable(F_DATAREG); + m.enable(F_ANNO); + m.enable(F_DATADOC); + m.enable(F_NUMDOC); + m.enable(F_REGIVA); + m.enable(F_PROTIVA); + m.enable(F_NUPROTIVA); + m.enable(F_CODCAUS); + m.enable(F_CODPAG); + m.disable(F_GRUPPO); + m.disable(F_CONTO); + m.disable(F_SOTTOCONTO); + m.disable(F_SEZIONE); + m.disable(F_IMPORTO); + m.disable(F_DESCR); + m.disable(F_GRUPPOC); + m.disable(F_CONTOC); + m.disable(F_SOTTOC); + } + else + if (_righe) + { + int gruppo = _trmov->get_int (RMV_GRUPPO); + int conto = _trmov->get_int (RMV_CONTO); + long sottocon = _trmov->get_long(RMV_SOTTOCONTO); + char sezione = _trmov->get_char(RMV_SEZIONE); + TString descr = _trmov->get (RMV_DESCR); + int gruppoc = _trmov->get_int (RMV_GRUPPOC); + int contoc = _trmov->get_int (RMV_CONTOC); + long sottoc = _trmov->get_long(RMV_SOTTOCONTOC); + real importo = _trmov->get_real(RMV_IMPORTO); + + m.set(F_GRUPPO, gruppo); + m.set(F_CONTO, conto); + m.set(F_SOTTOCONTO, sottocon); + m.set(F_SEZIONE, sezione); + m.set(F_DESCR, descr); + m.set(F_GRUPPOC, gruppoc); + m.set(F_CONTOC, contoc); + m.set(F_SOTTOC, sottoc); + m.set(F_IMPORTO, importo.string()); + + m.disable(F_DATAREG); + m.disable(F_ANNO); + m.disable(F_DATADOC); + m.disable(F_NUMDOC); + m.disable(F_REGIVA); + m.disable(F_PROTIVA); + m.disable(F_NUPROTIVA); + m.disable(F_CODCAUS); + m.disable(F_CODPAG); + + m.enable(F_GRUPPO); + m.enable(F_CONTO); + m.enable(F_SOTTOCONTO); + m.enable(F_SEZIONE); + m.enable(F_IMPORTO); + m.enable(F_DESCR); + m.enable(F_GRUPPOC); + m.enable(F_CONTOC); + m.enable(F_SOTTOC); + } +} + +bool TVar_mov::setta_campi_maschera_iva(TMask& m) +{ + TDate datareg (_rec_mov->get_date(MOV_DATAREG)); + TDate data74ter (_rec_mov->get_date(MOV_DATA74TER)); + TString regiva = _rec_mov->get (MOV_REG); + regiva.trim(); + TString codcaus = _rec_mov->get (MOV_CODCAUS); + long codcf = _rec_mov->get_long(MOV_CODCF); + + TString ragsoc = _record.sub(61,86); + TString ind = _record.sub(86,108); + TString localita = _record.sub(108,126); + TString cap = _record.sub(126,131); + TString prov = _record.sub(131,133); + + if (codcaus.not_empty()) + ricerca_codcaus(codcaus); + + int anno = date2esc(datareg); + + char cr = regiva[0]; + TString codreg; + + if (isdigit(cr)) + codreg.format("%03c", cr); + else + codreg.format("%-3c", cr); + + TRegistro rg (codreg, anno); + _tiporeg = rg.tipo(); + + if (regiva.not_empty()) + { + if (!rg.ok()) + return error_box("Registrazione presente ma con PRIMANOTA ERRATA: correggerla prima"); + } + else + return error_box("Campo NON VALIDO o codice NON PRESENTE in archivio"); + + m.set(F_NUMREG, _numreg); + m.set(F_NUMRIG, _numrig); + m.set(F_DATA74TER, data74ter.string()); + m.set(F_CODCF, codcf); + m.set(F_RAGSOCOCC, ragsoc); + m.set(F_INDOCC, ind); + m.set(F_LOCALITA, localita); + m.set(F_CAPOCC, cap); + m.set(F_PROVOCC, prov); + + m.disable(F_NUMREG); + m.disable(F_NUMRIG); + + if (!_righe) + { + m.enable(F_DATA74TER); + m.enable(F_CODCF); + m.enable(F_RAGSOCOCC); + m.enable(F_INDOCC); + m.enable(F_LOCALITA); + m.enable(F_CAPOCC); + m.enable(F_PROVOCC); + m.disable(F_IMPONIBILE); + m.disable(F_CODIVA); + m.disable(F_IMPOSTA); + m.disable(F_TIPODET); + m.disable(F_TIPOCR); + m.disable(F_GRUPPO); + m.disable(F_CONTO); + m.disable(F_SOTTOCONTO); + } + else + if (_righe) + { + real imponibile (_tiva->get_real(RMI_IMPONIBILE)); + TString codiva (_tiva->get (RMI_CODIVA)); + real imposta (_tiva->get_real(RMI_IMPOSTA)); + int tipodet = _tiva->get_int (RMI_TIPODET); + int tipocr = _tiva->get_int (RMI_TIPOCR); + int gruppo = _tiva->get_int (RMI_GRUPPO); + int conto = _tiva->get_int (RMI_CONTO); + long sottoc = _tiva->get_long(RMI_SOTTOCONTO); + + m.set(F_IMPONIBILE, imponibile.string()); + m.set(F_CODIVA, codiva); + m.set(F_IMPOSTA, imposta.string()); + m.set(F_TIPODET, tipodet); + m.set(F_TIPOCR, tipocr); + m.set(F_GRUPPO, gruppo); + m.set(F_CONTO, conto); + m.set(F_SOTTOCONTO, sottoc); + + m.disable(F_DATA74TER); + m.disable(F_CODCF); + m.disable(F_RAGSOCOCC); + m.disable(F_INDOCC); + m.disable(F_LOCALITA); + m.disable(F_CAPOCC); + m.disable(F_PROVOCC); + + m.enable(F_IMPONIBILE); + m.enable(F_CODIVA); + m.enable(F_IMPOSTA); + m.enable(F_TIPODET); + m.enable(F_TIPOCR); + m.enable(F_GRUPPO); + m.enable(F_CONTO); + m.enable(F_SOTTOCONTO); + } + + return TRUE; +} + +bool TVar_mov::codice_registro_hnd(TMask_field& f, KEY k) +{ + TTable reg ("REG"); + TString descr,dep; + + if (k == K_TAB || k == K_ENTER) + { + TString codreg = f.get(); + char cr = codreg[0]; + TDate datareg (f.mask().get(F_DATAREG)); + int anno = date2esc(datareg); + + if (isdigit(cr)) + dep.format("%04d%03c", anno, cr); + else + dep.format("%04d%-3c", anno, cr); + + reg.zero(); + reg.put("CODTAB", dep); + if (reg.read() == NOERR) + { + descr = reg.get("S0"); + f.mask().set(F_DESCRREG, descr); + } + else + if (codreg.not_empty() && f.mask().is_running()) + return warning_box("Codice registro IVA non presente in tabella"); + } + + return TRUE; +} + +bool TVar_mov::codice_causale_hnd(TMask_field& f, KEY k) +{ + TLocalisamfile cau (LF_CAUSALI); + TString descr; + + if (k == K_TAB || k == K_ENTER) + { + TString codcau = f.get(); + + if (f.mask().is_running()) + { + TString codreg = f.mask().get(F_REGIVA); + + if (codreg.not_empty()) + if (codcau.empty()) + return warning_box("Il codice registro IVA e' significativo: deve essere significativo anche il codice causale"); + } + + cau.setkey(1); + cau.zero(); + cau.put("CODCAUS", codcau); + if (cau.read() == NOERR) + { + descr = cau.get("DESCR"); + f.mask().set(F_DESCRCAU, descr); + } + else + if (f.mask().is_running()) + return warning_box("Codice causale non presente in tabella"); + } + return TRUE; +} + +bool TVar_mov::numero_protocollo_hnd(TMask_field& f, KEY k) +{ + if (k != K_ENTER) return FALSE; + + TString codreg = f.mask().get(F_REGIVA); + long protiva = atol(f.mask().get(F_PROTIVA)); + long uprotiva = atol(f.mask().get(F_NUPROTIVA)); + + if (codreg.empty()) + if (protiva != 0) + return warning_box("Il codice registro IVA non e' significativo: non e' possibile compilare il numero protocollo IVA"); + + return TRUE; +} + +bool TVar_mov::ultimo_protocollo_hnd(TMask_field& f, KEY k) +{ + if (k != K_ENTER) return FALSE; + + TString codreg = f.mask().get(F_REGIVA); + long protiva = atol(f.mask().get(F_PROTIVA)); + long uprotiva = atol(f.mask().get(F_NUPROTIVA)); + + if (codreg.empty()) + if (uprotiva != 0) + return warning_box("Il codice registro IVA non e' significativo: non e' possibile compilare l' ultimo numero protocollo IVA"); + + if (protiva == 0) + if (uprotiva != 0) + return warning_box("Numero protocollo IVA non significativo: non e' possibile compilare il numero protocollo IVA riepilogato"); + + return TRUE; +} + +bool TVar_mov::codice_pagamento_hnd(TMask_field& f, KEY k) +{ + TTable pag ("%CPG"); + TString descr,codpag,dep; + + if (k == K_TAB || k == K_ENTER) + { + codpag = f.get(); + dep.format("%04s", (const char*)codpag); + + pag.zero(); + pag.put("CODTAB", dep); + if (pag.read() == NOERR) + { + descr = pag.get("S0"); + f.mask().set(F_DESCRPAG, descr); + } + else + if (codpag.not_empty() && k == K_ENTER) + return warning_box("Codice pagamento non presente in tabella"); + } + + return TRUE; +} + +bool TVar_mov::data_stampa(TMask_field& f, KEY k) +{ + if (k != K_ENTER) return FALSE; + + TDate datareg (f.mask().get(F_DATAREG)); + const int ae = date2esc(datareg); + + TLibro_giornale gio; + gio.read(ae); //se _ae e' zero la read considera come anno quello corrente + + if (datareg < gio.last_print()) + return warning_box("La data di registrazione e' minore della data di stampa del Libro Giornale"); + + TString codreg = f.mask().get(F_REGIVA); + + if (!codreg.blank()) //movimento iva (fattura) + { + TRegistro rg (codreg, ae); + + if (datareg < rg.last_print()) + return error_box("La data di registrazione e' minore della data stampa del registro IVA"); + } + + return TRUE; +} + +bool TVar_mov::controllo_partita(TMask_field& f, KEY k) +{ + if (k == K_TAB || k == K_ENTER) + { + int gruppo = f.mask().get_int (F_GRUPPO); + int conto = f.mask().get_int (F_CONTO); + long sottoc = f.mask().get_long(F_SOTTOCONTO); + + TConto tc (gruppo,conto,sottoc); + + TString descr = tc.descrizione(); + f.mask().set(F_DESCRPARTITA, descr); + + if (k == K_ENTER) + if (!tc.find()) + return warning_box("Sottoconto partita non presente in anagrafica Piano dei Conti oppure anagrafica Clienti / Fornitori"); + } + + return TRUE; +} + +bool TVar_mov::controllo_contropartita(TMask_field& f, KEY k) +{ + if (k == K_TAB || k == K_ENTER) + { + int gruppo = f.mask().get_int (F_GRUPPOC); + int conto = f.mask().get_int (F_CONTOC); + long sottoc = f.mask().get_long(F_SOTTOC); + + TConto tc (gruppo,conto,sottoc); + + TString descr = tc.descrizione(); + f.mask().set(F_DESCRCPARTITA, descr); + + if (k == K_ENTER) + if (!tc.find()) + return warning_box("Sottoconto contropartita non presente in anagrafica Piano dei Conti oppure anagrafica Clienti / Fornitori"); + } + + return TRUE; +} + +bool TVar_mov::controllo_importo(TMask_field& f, KEY k) +{ + if (k == K_ENTER) + { + real importo (f.mask().get(F_IMPORTO)); + + if (importo == ZERO) + return warning_box("L' importo deve essere significativo"); + } + + return TRUE; +} + +bool TVar_mov::codice_clifo_hnd(TMask_field& f, KEY k) +{ + char tipo; + + if (k == K_TAB || k == K_ENTER) + { + long codcf = atol(f.get()); + if (app()._tiporeg == 1) + tipo = 'C'; + else + if (app()._tiporeg == 2) + tipo = 'F'; + + TConto tc (0,0,codcf,tipo); + + if (tc.find()) + { + TString descr = tc.descrizione(); + f.mask().set(F_RAGSOCCF, descr); + } + else + if (k == K_ENTER) + return warning_box("Campo NON VALIDO o codice non presente in archivio"); + } + + return TRUE; +} + +bool TVar_mov::codice_iva_hnd(TMask_field& f, KEY k) +{ + if (k == K_TAB || k == K_ENTER) + { + TString codiva = f.get(); + + bool ok = app().decodifica_codiva(codiva); + + f.mask().set(F_DESCRCODIVA, app()._descr_civa); + + if (k == K_ENTER) + { + real imponibile (f.mask().get(F_IMPONIBILE)); + real imposta (f.mask().get(F_IMPOSTA)); + + if ( (imponibile != ZERO || imposta != ZERO) && codiva.empty() ) + return warning_box("Il codice IVA deve essere indicato obbligatoriamente"); + + if (codiva.not_empty()) + if (!ok) + return warning_box("Codice non presente in tabella"); + } + } + + return TRUE; +} + +bool TVar_mov::decodifica_codiva(const TString& codiva) +{ + TTable iva ("%IVA"); + TString dep; + + dep.format("%-4s", (const char*)codiva); + + iva.zero(); + iva.put("CODTAB", dep); + if (iva.read() == NOERR) + { + _descr_civa = iva.get("S0"); + return TRUE; + } + else + { + _descr_civa = ""; + return FALSE; + } + + return TRUE; +} + +bool TVar_mov::imposta_hnd(TMask_field& f, KEY k) +{ + if (k == K_ENTER) + { + real imposta (f.mask().get(F_IMPOSTA)); + + if (app()._corrisp && imposta != ZERO) + return warning_box("Il movimento e' relativo ad un corrispettivo: l'imposta deve essere uguale a 0"); + } + + return TRUE; +} + +bool TVar_mov::detraibilita_hnd(TMask_field& f, KEY k) +{ + if (k == K_ENTER) + { + int det = atoi(f.get()); + + if (det != 0 && det != 1 && det != 3 && det != 9) + return warning_box("Valore non ammesso per il tipo detraibilita'"); + } + + return TRUE; +} + +bool TVar_mov::tipocr_hnd(TMask_field& f, KEY k) +{ + if (k == K_ENTER) + { + int tcr = atoi(f.get()); + + if (tcr != 0 && tcr != 1 && tcr != 2 && tcr != 3 + && tcr != 4 && tcr != 5 && tcr != 8 && tcr != 9) + return warning_box("Valore non ammesso per il tipo costo/ricavo"); + } + + return TRUE; +} + +void TVar_mov::registra_PN(TMask& m) +{ + if (!_righe) + { + long numreg = m.get_long(F_NUMREG); + int annorif = m.get_int (F_ANNO); + TDate datareg (m.get(F_DATAREG)); + TDate datadoc (m.get(F_DATADOC)); + TString numdoc = m.get (F_NUMDOC); + TString regiva = m.get (F_REGIVA); + long protiva = m.get_long(F_PROTIVA); + long nuprotiva = m.get_long(F_NUPROTIVA); + TString codcaus = m.get (F_CODCAUS); + TString codpag = m.get (F_CODPAG); + + registra_file_temp_mov(numreg,datareg,datadoc,numdoc,regiva,protiva,nuprotiva,codcaus,codpag); + registra_file_trasfer_t(numreg,annorif,datareg,datadoc,numdoc,regiva,protiva,nuprotiva,codcaus,codpag); + } + else + if (_righe) + { + long numreg = m.get_long(F_NUMREG); + int numrig = m.get_int (F_NUMRIG); + int gruppo = m.get_int (F_GRUPPO); + int conto = m.get_int (F_CONTO); + long sottoc = m.get_long(F_SOTTOCONTO); + char sezione = m.get (F_SEZIONE)[0]; + TString descr = m.get (F_DESCR); + int gruppoc = m.get_int (F_GRUPPOC); + int contoc = m.get_int (F_CONTOC); + long sottocc = m.get_long(F_SOTTOC); + real importo (m.get(F_IMPORTO)); + + registra_file_temp_rmov(numreg,numrig,gruppo,conto,sottoc,sezione,descr,gruppoc,contoc,sottocc,importo); + registra_file_trasfer_r(numreg,numrig,gruppo,conto,sottoc,sezione,descr,gruppoc,contoc,sottocc,importo); + } +} + +void TVar_mov::registra_file_temp_mov(long nr,const TDate& dr,const TDate& dd,const TString& nd,TString& ri, + long pi,long upi,const TString& cc,TString& cp) +{ + _tmov->setkey(1); + _tmov->zero(); + _tmov->put(MOV_NUMREG, nr); + if (_tmov->read() == NOERR) + { + _tmov->put(MOV_DATAREG, dr); + _tmov->put(MOV_DATADOC, dd); + _tmov->put(MOV_NUMDOC, nd); + _tmov->put(MOV_REG, ri); + _tmov->put(MOV_PROTIVA, pi); + _tmov->put(MOV_UPROTIVA, upi); + _tmov->put(MOV_CODCAUS, cc); + _tmov->put(MOV_CODPAG, cp); + + _tmov->rewrite(); + } +} + +void TVar_mov::registra_file_trasfer_t(long nr,int ar,const TDate& dr,const TDate& dd,const TString& nd,TString& ri, + long pi,long upi,const TString& cc,const TString& cp) +{ + TString app,str; + TRectype* rec; + rec = new TRectype (LF_RMOV); + + _trmov->setkey(1); + _trmov->zero(); + _trmov->put(RMV_NUMREG, nr); + *rec = _trmov->curr(); + + for (_trmov->read(); !_trmov->eof(); _trmov->next()) + { + if (_trmov->curr() > *rec) break; + + long numrec = _trmov->get_int(RMV_ANNOES); + numrec += _tras_file.start('Z'); + + _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota + + app = dr.string(); + str = riconverti(app); + _tras_file.put(str,"Z1",0,numrec); + app = dd.string(); + str = riconverti(app); + _tras_file.put(str,"Z1",4,numrec); + str = format("%d", ar); + _tras_file.put(str,"Z1",50,numrec); + str = format("%-7s", (const char*) nd); + _tras_file.put(str,"Z1",5,numrec); + if (ri == "") + ri = " "; + _tras_file.put(ri,"Z1",6,numrec); + _tras_file.put(cc,"Z1",8,numrec); + str = format("%05ld", pi); + _tras_file.put(str,"Z1",7,numrec); + str = format("%05ld", upi); + _tras_file.put(str,"Z1",10,numrec); + str = format("%2s", (const char*) cp); + _tras_file.put(str,"Z1",9,numrec); + + _tras_file.write(numrec); + } + + delete rec; +} + +void TVar_mov::registra_file_temp_rmov(long nr,int nri,int g,int c,long s,char sez,const TString& desc, + int gc,int cc,long sc,const real& imp) +{ + _trmov->setkey(1); + _trmov->zero(); + _trmov->put(RMV_NUMREG, nr); + _trmov->put(RMV_NUMRIG, nri); + if (_trmov->read() == NOERR) + { + _trmov->put(RMV_GRUPPO, g); + _trmov->put(RMV_CONTO, c); + _trmov->put(RMV_SOTTOCONTO, s); + _trmov->put(RMV_SEZIONE, sez); + _trmov->put(RMV_DESCR, desc); + _trmov->put(RMV_GRUPPOC, gc); + _trmov->put(RMV_CONTOC, cc); + _trmov->put(RMV_SOTTOCONTOC, sc); + _trmov->put(RMV_IMPORTO, imp); + + _trmov->rewrite(); + } +} + +void TVar_mov::registra_file_trasfer_r(long nr,int nri,int g,int c,long s,char sez,const TString& desc, + int gc,int cc,long sc,const real& imp) +{ + TString app,str; + + _trmov->setkey(1); + _trmov->zero(); + _trmov->put(RMV_NUMREG, nr); + _trmov->put(RMV_NUMRIG, nri); + + if (_trmov->read() == NOERR) + { + long numrec = _trmov->get_int(RMV_ANNOES); + numrec += _tras_file.start('Z'); + + _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota + + str = format("%02d", g); + _tras_file.put(str,"Z1",17,numrec); + str = format("%02d", c); + _tras_file.put(str,"Z1",18,numrec); + str = format("%06ld", s); + _tras_file.put(str,"Z1",19,numrec); + str = format("%c", sez); + _tras_file.put(str,"Z1",20,numrec); + str = format("%-30s", (const char*)desc); + _tras_file.put(str,"Z1",16,numrec); + str = format("%02d", gc); + _tras_file.put(str,"Z1",21,numrec); + str = format("%02d", cc); + _tras_file.put(str,"Z1",22,numrec); + str = format("%06ld", sc); + _tras_file.put(str,"Z1",23,numrec); + str = format("%011s", (const char*) imp.string()); + _tras_file.put(str,"Z1",24,numrec); + + _tras_file.write(numrec); + } +} + +void TVar_mov::registra_IVA(TMask& m) +{ + if (!_righe) + { + long numreg = m.get_long(F_NUMREG); + TDate data74ter (m.get(F_DATA74TER)); + long codcf = m.get_long(F_CODCF); + TString ragsococc = m.get (F_RAGSOCOCC); + TString indocc = m.get (F_INDOCC); + TString localita = m.get (F_LOCALITA); + TString capocc = m.get (F_CAPOCC); + TString provocc = m.get (F_PROVOCC); + + _tmov->setkey(1); + _tmov->zero(); + _tmov->put(MOV_NUMREG, numreg); + if (_tmov->read() == NOERR) + { + _tmov->put(MOV_DATA74TER, data74ter); + _tmov->put(MOV_CODCF, codcf); + + _tmov->rewrite(); + } + + registra_file_trasfer_t_iva(numreg,data74ter,codcf,ragsococc,indocc,localita,capocc,provocc); + } + else + if (_righe) + { + long numreg = m.get_long(F_NUMREG); + int numrig = m.get_int (F_NUMRIG); + real imponibile (m.get (F_IMPONIBILE)); + TString codiva = m.get (F_CODIVA); + real imposta (m.get (F_IMPOSTA)); + int tipodet = m.get_int (F_TIPODET); + int tipocr = m.get_int (F_TIPOCR); + int gruppo = m.get_int (F_GRUPPO); + int conto = m.get_int (F_CONTO); + long sottoc = m.get_long(F_SOTTOCONTO); + + registra_file_temp_riva(numreg,numrig,imponibile,codiva,imposta,tipodet,tipocr,gruppo,conto,sottoc); + registra_file_trasfer_r_iva(numreg,numrig,imponibile,codiva,imposta,tipodet,tipocr,gruppo,conto,sottoc); + } +} + +void TVar_mov::registra_file_trasfer_t_iva(long nr,const TDate& d74,long cf,const TString& rgo,const TString& io, + const TString& lo,const TString& co,const TString& po) +{ + TString app,str; + TRectype* rec; + rec = new TRectype (LF_RMOVIVA); + + _tiva->setkey(1); + _tiva->zero(); + _tiva->put(RMI_NUMREG, nr); + *rec = _tiva->curr(); + + for (_tiva->read(); !_tiva->eof(); _tiva->next()) + { + if (_tiva->curr() > *rec) break; + + long numrec = _tiva->get_int(RMI_ANNOES); + numrec += _tras_file.start('U'); + + _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota + + app = d74.string(); + str = riconverti(app); + _tras_file.put(str,"U1",4,numrec); + str = format("%06d", cf); + _tras_file.put(str,"U1",6,numrec); + str = format("%-25s", (const char*)rgo ); + _tras_file.put(str,"U1",50,numrec); + str = format("%-22s", (const char*)io); + _tras_file.put(str,"U1",51,numrec); + str = format("%-18s", (const char*)lo); + _tras_file.put(str,"U1",52,numrec); + str = format("%05s", (const char*)co ); + _tras_file.put(str,"U1",53,numrec); + str = format("%-2s", (const char*)po); + _tras_file.put(str,"U1",54,numrec); + + _tras_file.write(numrec); + } + + delete rec; +} + +void TVar_mov::registra_file_temp_riva(long nr,int nri,const real& imp,const TString& civa,const real& imposta, + int tdet,int tcr,int g,int c,long s) +{ + _tiva->setkey(1); + _tiva->zero(); + _tiva->put(RMI_NUMREG, nr); + _tiva->put(RMI_NUMRIG, nri); + if (_tiva->read() == NOERR) + { + _tiva->put(RMI_IMPONIBILE, imp); + _tiva->put(RMI_CODIVA, civa); + _tiva->put(RMI_IMPOSTA, imposta); + _tiva->put(RMI_TIPODET, tdet); + _tiva->put(RMI_TIPOCR, tcr); + _tiva->put(RMI_GRUPPO, g); + _tiva->put(RMI_CONTO, c); + _tiva->put(RMI_SOTTOCONTO, s); + + _tiva->rewrite(); + } +} + +void TVar_mov::registra_file_trasfer_r_iva(long nr,int nri,const real& imp,const TString& civa,const real& imposta, + int tdet,int tcr,int g,int c,long s) +{ + TString app,str; + + _tiva->setkey(1); + _tiva->zero(); + _tiva->put(RMI_NUMREG, nr); + _tiva->put(RMI_NUMRIG, nri); + + if (_tiva->read() == NOERR) + { + long numrec = _tiva->get_int(RMI_ANNOES); + numrec += _tras_file.start('U'); + + _tras_file.read_rec_trasfer(numrec); //Leggo il record dell' iva + + str = format("%011s", (const char*) imp.string()); + _tras_file.put(str,"U1",14,numrec); + str = format("%02s", (const char*) civa); + _tras_file.put(str,"U1",13,numrec); + str = format("%09s", (const char*) imposta.string()); + _tras_file.put(str,"U1",15,numrec); + str = format("%d", tdet); + _tras_file.put(str,"U1",16,numrec); + str = format("%d", tcr); + _tras_file.put(str,"U1",17,numrec); + str = format("%02d", g); + _tras_file.put(str,"U1",19,numrec); + str = format("%02d", c); + _tras_file.put(str,"U1",20,numrec); + str = format("%06ld", s); + _tras_file.put(str,"U1",21,numrec); + + _tras_file.write(numrec); + } +} + +bool TVar_mov::leggi_trasfer() +{ + _trasf = _tras_file.path(_dittaric); + _trasf << "\\trasfer"; + + _tras_file.open(_trasf); + + if (_tras_file.exist()) + { + if (_tras_file.read_control_rec()) + _control_rec = _tras_file.record(); + else + return error_box("Rilevati gravi errori negli archivi:procedura interrotta"); + } + else + return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); + + return TRUE; +} + +bool TVar_mov::esegui_controlli() +{ + TConfig conf(CONFIG_DITTA); + + _std = conf.get("FlStTra"); + + if (!prefhndl->exist(_dittaric)) + return error_box("Rilevati gravi errori negli archivi: procedura interrotta"); + + if (!leggi_trasfer()) + return FALSE; + + if (!controlli()) + return FALSE; + + return TRUE; +} + +void TVar_mov::setta_parametri_record(const TString& sigla,const TString& flag) +{ + TConfig conf (CONFIG_DITTA); + + conf.set("FlStTra", flag); + + leggi_record_controllo(); + _control_rec.overwrite(sigla,240); + + const int size = 256; + + _tras_file.write_control_rec(_control_rec, size); +} + +bool TVar_mov::controlli() +{ + if (_std == "T") + return error_box("Variazione NON POSSIBILE: eseguire prima la ricezione delle tabelle"); + + if (_std == "M") + return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato"); + + if (_std == "*") + { + warning_box("Trasferimento interamente completato: proseguire per cancellare il file"); + fremove(_trasf); + return FALSE; + } + + return TRUE; +} + +bool TVar_mov::menu(MENU_TAG m) +{ + if (m == BAR_ITEM(1)) + return main_loop(); + return FALSE; +} + +int cg2800 (int argc, char* argv[]) +{ + switch (*argv[2]) + { + case 'P': + { + TVar_mov main_app(*argv[2]); + main_app.run(argc, argv,main_app._titolo); + } + break; + case 'I': +{ + TVar_mov main_app(*argv[2]); + main_app.run(argc, argv,main_app._titolo); +} +break; + case 'S': +{ + TDitta_ric a; + a.run(argc, argv,"Scelta ditta per ricezione"); +} +break; + case 'A': +{ + TAnn_mov a; + a.run(argc, argv,"Annullamento movimenti da ricevere"); +} +break; + +default: +break; +} +//main_app.run(argc, argv,main_app._titolo); +return TRUE; +} diff --git a/cg/cg2800.h b/cg/cg2800.h index 829705c07..8b98f0f87 100755 --- a/cg/cg2800.h +++ b/cg/cg2800.h @@ -1,68 +1,68 @@ -// Campi maschera cg2800a.uml - -#define F_NUMREG 101 -#define F_NUMRIG 102 - -// Campi maschera cg2800b.uml - -#define F_DATAREG 103 -#define F_DATADOC 104 -#define F_ANNO 105 -#define F_REGIVA 106 -#define F_PROTIVA 107 -#define F_NUPROTIVA 108 -#define F_CODCAUS 109 -#define F_CODPAG 110 -#define F_GRUPPO 111 -#define F_CONTO 112 -#define F_SOTTOCONTO 113 -#define F_SEZIONE 114 -#define F_IMPORTO 115 -#define F_DESCR 116 -#define F_GRUPPOC 117 -#define F_CONTOC 118 -#define F_SOTTOC 119 -#define F_NUMDOC 120 -#define F_DESCRREG 121 -#define F_DESCRCAU 122 -#define F_DESCRPAG 123 -#define F_DESCRPARTITA 124 -#define F_DESCRCPARTITA 125 - -// Campi maschera cg2800c.uml - -#define F_CODCF 150 -#define F_RAGSOCOCC 151 -#define F_DATA74TER 152 -#define F_INDOCC 153 -#define F_LOCALITA 154 -#define F_CAPOCC 155 -#define F_PROVOCC 156 -#define F_IMPONIBILE 157 -#define F_IMPOSTA 158 -#define F_CODIVA 159 -#define F_TIPODET 160 -#define F_TIPOCR 161 -#define F_RAGSOCCF 162 -#define F_DESCRCODIVA 163 - -// Campi maschera cg2801a.uml - -#define F_CODDITTA 200 -#define F_RAGDITTA 201 - -// Campi maschera cg2803a.uml - -#define F_CODDITTARIC 250 -#define F_RAGSOC 251 -#define F_NULTRAS 252 -#define F_DATAULTRAS 253 -#define F_STD 254 -#define F_USELAB 255 -#define F_STATO 256 -#define F_AGGCAUSALI 257 -#define F_AGGCLIFO 258 -#define F_AGGPCON 259 -#define F_AGGIVD 260 -#define F_FATTEM 261 +// Campi maschera cg2800a.uml + +#define F_NUMREG 101 +#define F_NUMRIG 102 + +// Campi maschera cg2800b.uml + +#define F_DATAREG 103 +#define F_DATADOC 104 +#define F_ANNO 105 +#define F_REGIVA 106 +#define F_PROTIVA 107 +#define F_NUPROTIVA 108 +#define F_CODCAUS 109 +#define F_CODPAG 110 +#define F_GRUPPO 111 +#define F_CONTO 112 +#define F_SOTTOCONTO 113 +#define F_SEZIONE 114 +#define F_IMPORTO 115 +#define F_DESCR 116 +#define F_GRUPPOC 117 +#define F_CONTOC 118 +#define F_SOTTOC 119 +#define F_NUMDOC 120 +#define F_DESCRREG 121 +#define F_DESCRCAU 122 +#define F_DESCRPAG 123 +#define F_DESCRPARTITA 124 +#define F_DESCRCPARTITA 125 + +// Campi maschera cg2800c.uml + +#define F_CODCF 150 +#define F_RAGSOCOCC 151 +#define F_DATA74TER 152 +#define F_INDOCC 153 +#define F_LOCALITA 154 +#define F_CAPOCC 155 +#define F_PROVOCC 156 +#define F_IMPONIBILE 157 +#define F_IMPOSTA 158 +#define F_CODIVA 159 +#define F_TIPODET 160 +#define F_TIPOCR 161 +#define F_RAGSOCCF 162 +#define F_DESCRCODIVA 163 + +// Campi maschera cg2801a.uml + +#define F_CODDITTA 200 +#define F_RAGDITTA 201 + +// Campi maschera cg2803a.uml + +#define F_CODDITTARIC 250 +#define F_RAGSOC 251 +#define F_NULTRAS 252 +#define F_DATAULTRAS 253 +#define F_STD 254 +#define F_USELAB 255 +#define F_STATO 256 +#define F_AGGCAUSALI 257 +#define F_AGGCLIFO 258 +#define F_AGGPCON 259 +#define F_AGGIVD 260 +#define F_FATTEM 261 #define F_FATTRIC 262 \ No newline at end of file diff --git a/cg/cg2800a.uml b/cg/cg2800a.uml index 50336ffbc..ea4ff55be 100755 --- a/cg/cg2800a.uml +++ b/cg/cg2800a.uml @@ -1,32 +1,32 @@ -#include "cg2800.h" - -PAGE "" -1 -1 50 8 - -NUMBER F_NUMREG 6 -BEGIN - PROMPT 2 1 "Numero di registrazione " - HELP "Inserire il numero di registrazione che si vuole modificare" - FLAGS "RZ" - CHECKTYPE REQUIRED -END - -NUMBER F_NUMRIG 2 -BEGIN - PROMPT 2 3 "Numero di riga " - HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata" - FLAGS "RZ" -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK +#include "cg2800.h" + +PAGE "" -1 -1 50 8 + +NUMBER F_NUMREG 6 +BEGIN + PROMPT 2 1 "Numero di registrazione " + HELP "Inserire il numero di registrazione che si vuole modificare" + FLAGS "RZ" + CHECKTYPE REQUIRED +END + +NUMBER F_NUMRIG 2 +BEGIN + PROMPT 2 3 "Numero di riga " + HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata" + FLAGS "RZ" +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2800b.uml b/cg/cg2800b.uml index 843ae3517..d807258ac 100755 --- a/cg/cg2800b.uml +++ b/cg/cg2800b.uml @@ -1,179 +1,179 @@ -#include "cg2800.h" - -TOOLBAR "" 0 20 0 2 - -BUTTON DLG_SAVEREC 10 2 -BEGIN -PROMPT -15 -1 "~Registra" -MESSAGE EXIT,K_SAVE -END - -BUTTON DLG_CANCEL 10 2 -BEGIN -PROMPT -45 -1 "" -MESSAGE EXIT,K_ESC -END - -BUTTON DLG_QUIT 10 2 -BEGIN -PROMPT -55 -1 "" -MESSAGE EXIT,K_QUIT -END - -ENDPAGE - -PAGE "" -1 -1 78 18 - -NUMBER F_NUMREG 6 -BEGIN - PROMPT 1 1 "Numero registrazione " - HELP "Inserire il numero di registrazione che si vuole modificare" - FLAGS "RZ" - CHECKTYPE REQUIRED -END - -NUMBER F_NUMRIG 2 -BEGIN - PROMPT 40 1 "Numero di riga " - HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata" - FLAGS "RZ" -END - -DATE F_DATAREG -BEGIN - PROMPT 1 3 "Data registrazione " -END - -LIST F_ANNO 10 -BEGIN - PROMPT 40 3 "Anno di riferimento " - ITEM "0|Corrente" - ITEM "1|Precedente" -END - -DATE F_DATADOC -BEGIN - PROMPT 1 4 "Data del documento " -END - -STRING F_NUMDOC 7 -BEGIN - PROMPT 40 4 "Numero docomento " -END - -STRING F_REGIVA 1 -BEGIN - PROMPT 1 6 "Registro IVA " -END - -STRING F_DESCRREG 49 -BEGIN - PROMPT 28 6 "" - FLAGS "D" -END - -NUMBER F_PROTIVA 5 -BEGIN - PROMPT 1 7 "Numero protocollo iva " - FLAGS "R" -END - -NUMBER F_NUPROTIVA 5 -BEGIN - PROMPT 40 7 "Ultimo protoc. riepilog. " - FLAGS "R" -END - -STRING F_CODCAUS 3 -BEGIN - PROMPT 1 8 "Codice causale " - FLAGS "Z" -END - -STRING F_DESCRCAU 49 -BEGIN - PROMPT 28 8 "" - FLAGS "D" -END - -STRING F_CODPAG 2 -BEGIN - PROMPT 1 9 "Codice pagamento " -END - -STRING F_DESCRPAG 49 -BEGIN - PROMPT 28 9 "" - FLAGS "D" -END - -NUMBER F_GRUPPO 2 -BEGIN - PROMPT 1 11 "Sottoconto partita " - FLAGS "R" -END - -NUMBER F_CONTO 2 -BEGIN - PROMPT 29 11 "" - FLAGS "R" -END - -NUMBER F_SOTTOCONTO 6 -BEGIN - PROMPT 34 11 "" - FLAGS "R" -END - -STRING F_DESCRPARTITA 50 -BEGIN - PROMPT 1 12 "Descrizione partita " - FLAGS "D" -END - -LIST F_SEZIONE 7 -BEGIN - PROMPT 1 13 "Sezione " - ITEM "D|Dare" - ITEM "A|Avere" -END - -STRING F_DESCR 30 -BEGIN - PROMPT 1 14 "Descrizione aggiuntiva " -END - -NUMBER F_IMPORTO 15 -BEGIN - PROMPT 1 15 "Importo " - FLAGS "R" - PICTURE "." -END - -NUMBER F_GRUPPOC 2 -BEGIN - PROMPT 1 16 "Sottoconto contropart. " - FLAGS "R" -END - -NUMBER F_CONTOC 2 -BEGIN - PROMPT 29 16 "" - FLAGS "R" -END - -NUMBER F_SOTTOC 6 -BEGIN - PROMPT 34 16 "" - FLAGS "R" -END - -STRING F_DESCRCPARTITA 50 -BEGIN - PROMPT 1 17 "Descrizione c/partita " - FLAGS "D" -END - -ENDPAGE - -ENDMASK +#include "cg2800.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_SAVEREC 10 2 +BEGIN +PROMPT -15 -1 "~Registra" +MESSAGE EXIT,K_SAVE +END + +BUTTON DLG_CANCEL 10 2 +BEGIN +PROMPT -45 -1 "" +MESSAGE EXIT,K_ESC +END + +BUTTON DLG_QUIT 10 2 +BEGIN +PROMPT -55 -1 "" +MESSAGE EXIT,K_QUIT +END + +ENDPAGE + +PAGE "" -1 -1 78 18 + +NUMBER F_NUMREG 6 +BEGIN + PROMPT 1 1 "Numero registrazione " + HELP "Inserire il numero di registrazione che si vuole modificare" + FLAGS "RZ" + CHECKTYPE REQUIRED +END + +NUMBER F_NUMRIG 2 +BEGIN + PROMPT 40 1 "Numero di riga " + HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata" + FLAGS "RZ" +END + +DATE F_DATAREG +BEGIN + PROMPT 1 3 "Data registrazione " +END + +LIST F_ANNO 10 +BEGIN + PROMPT 40 3 "Anno di riferimento " + ITEM "0|Corrente" + ITEM "1|Precedente" +END + +DATE F_DATADOC +BEGIN + PROMPT 1 4 "Data del documento " +END + +STRING F_NUMDOC 7 +BEGIN + PROMPT 40 4 "Numero docomento " +END + +STRING F_REGIVA 1 +BEGIN + PROMPT 1 6 "Registro IVA " +END + +STRING F_DESCRREG 49 +BEGIN + PROMPT 28 6 "" + FLAGS "D" +END + +NUMBER F_PROTIVA 5 +BEGIN + PROMPT 1 7 "Numero protocollo iva " + FLAGS "R" +END + +NUMBER F_NUPROTIVA 5 +BEGIN + PROMPT 40 7 "Ultimo protoc. riepilog. " + FLAGS "R" +END + +STRING F_CODCAUS 3 +BEGIN + PROMPT 1 8 "Codice causale " + FLAGS "Z" +END + +STRING F_DESCRCAU 49 +BEGIN + PROMPT 28 8 "" + FLAGS "D" +END + +STRING F_CODPAG 2 +BEGIN + PROMPT 1 9 "Codice pagamento " +END + +STRING F_DESCRPAG 49 +BEGIN + PROMPT 28 9 "" + FLAGS "D" +END + +NUMBER F_GRUPPO 2 +BEGIN + PROMPT 1 11 "Sottoconto partita " + FLAGS "R" +END + +NUMBER F_CONTO 2 +BEGIN + PROMPT 29 11 "" + FLAGS "R" +END + +NUMBER F_SOTTOCONTO 6 +BEGIN + PROMPT 34 11 "" + FLAGS "R" +END + +STRING F_DESCRPARTITA 50 +BEGIN + PROMPT 1 12 "Descrizione partita " + FLAGS "D" +END + +LIST F_SEZIONE 7 +BEGIN + PROMPT 1 13 "Sezione " + ITEM "D|Dare" + ITEM "A|Avere" +END + +STRING F_DESCR 30 +BEGIN + PROMPT 1 14 "Descrizione aggiuntiva " +END + +NUMBER F_IMPORTO 15 +BEGIN + PROMPT 1 15 "Importo " + FLAGS "R" + PICTURE "." +END + +NUMBER F_GRUPPOC 2 +BEGIN + PROMPT 1 16 "Sottoconto contropart. " + FLAGS "R" +END + +NUMBER F_CONTOC 2 +BEGIN + PROMPT 29 16 "" + FLAGS "R" +END + +NUMBER F_SOTTOC 6 +BEGIN + PROMPT 34 16 "" + FLAGS "R" +END + +STRING F_DESCRCPARTITA 50 +BEGIN + PROMPT 1 17 "Descrizione c/partita " + FLAGS "D" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2800c.uml b/cg/cg2800c.uml index 97e1bb08f..b59984aa0 100755 --- a/cg/cg2800c.uml +++ b/cg/cg2800c.uml @@ -1,167 +1,167 @@ -#include "cg2800.h" - -TOOLBAR "" 0 20 0 2 - -BUTTON DLG_SAVEREC 10 2 -BEGIN -PROMPT -15 -1 "~Registra" -MESSAGE EXIT,K_SAVE -END - -BUTTON DLG_CANCEL 10 2 -BEGIN -PROMPT -45 -1 "" -MESSAGE EXIT,K_ESC -END - -BUTTON DLG_QUIT 10 2 -BEGIN -PROMPT -55 -1 "" -MESSAGE EXIT,K_QUIT -END - -ENDPAGE - -PAGE "" -1 -1 78 18 - -NUMBER F_NUMREG 6 -BEGIN - PROMPT 1 1 "Numero registrazione " - HELP "Inserire il numero di registrazione che si vuole modificare" - FLAGS "RZ" - CHECKTYPE REQUIRED -END - -NUMBER F_NUMRIG 2 -BEGIN - PROMPT 52 1 "Numero di riga " - HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata" - FLAGS "RZ" -END - -NUMBER F_CODCF 6 -BEGIN - PROMPT 1 3 "Codice C/F " - FLAGS "R" -END - -STRING F_RAGSOCCF 50 -BEGIN - PROMPT 26 3 "" - FLAGS "D" -END - -DATE F_DATA74TER -BEGIN - PROMPT 1 4 "Data reg. 74TER " -END - -GROUPBOX DLG_NULL 78 5 -BEGIN - PROMPT 0 6 "Cliente occasionale" -END - -STRING F_RAGSOCOCC 25 -BEGIN - PROMPT 1 7 "Ragione sociale " -END - -STRING F_INDOCC 22 -BEGIN - PROMPT 1 8 "Indirizzo " -END - -STRING F_LOCALITA 18 -BEGIN - PROMPT 1 9 "Localita' " -END - -STRING F_CAPOCC 5 -BEGIN - PROMPT 46 9 "C.A.P. " -END - -STRING F_PROVOCC 2 -BEGIN - PROMPT 62 9 "Provincia " -END - -NUMBER F_IMPONIBILE 15 -BEGIN - PROMPT 1 11 "Imponibile " - FLAGS "R" - PICTURE "." -END - -STRING F_CODIVA 2 -BEGIN - PROMPT 1 12 "Codice IVA " - FLAGS "Z" -END - -STRING F_DESCRCODIVA 48 -BEGIN - PROMPT 28 12 "" - FLAGS "D" -END - -NUMBER F_IMPOSTA 15 -BEGIN - PROMPT 1 13 "Imposta " - FLAGS "R" - PICTURE "." -END - -NUMBER F_TIPODET 1 -BEGIN - PROMPT 1 14 "Tipo detraibilita' " - SHEET "Codice|Tipo detraibilita'@75" - INPUT F_TIPODET - ITEM " |Regime normale" - ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti" - ITEM "3|IVA indicata per passaggi interni al solo fine del calcolo di ventilazione" - ITEM "9|IVA non detraibile per l'articolo 19" - OUTPUT F_TIPODET -END - -LIST F_TIPOCR 47 -BEGIN - PROMPT 1 15 "Tipo Costo/Ricavo " - ITEM " |0. Acquisti o vendite in genere" - ITEM "1|1. Acquisti beni per rivendita" - ITEM "2|2. Acquisti beni ammortizzabili" - ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%" - ITEM "4|4. Vendita beni strumentali art. 17" - ITEM "5|5. Beni per rivendita da non ventilare" - ITEM "8|8. Altri beni strumentali acquistati in leasing" - ITEM "9|9. Spese generali" - HELP "Tipo Costo/Ricavo del conto" -END - -NUMBER F_GRUPPO 2 -BEGIN - PROMPT 1 16 "Sottoconto costo/ricavo " - FLAGS "R" -END - -NUMBER F_CONTO 2 -BEGIN - PROMPT 30 16 "" - FLAGS "R" -END - -NUMBER F_SOTTOCONTO 6 -BEGIN - PROMPT 35 16 "" - FLAGS "R" -END - -STRING F_DESCRPARTITA 50 -BEGIN - PROMPT 1 17 "Descrizione sottoconto " - FLAGS "D" -END - -ENDPAGE - -ENDMASK +#include "cg2800.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_SAVEREC 10 2 +BEGIN +PROMPT -15 -1 "~Registra" +MESSAGE EXIT,K_SAVE +END + +BUTTON DLG_CANCEL 10 2 +BEGIN +PROMPT -45 -1 "" +MESSAGE EXIT,K_ESC +END + +BUTTON DLG_QUIT 10 2 +BEGIN +PROMPT -55 -1 "" +MESSAGE EXIT,K_QUIT +END + +ENDPAGE + +PAGE "" -1 -1 78 18 + +NUMBER F_NUMREG 6 +BEGIN + PROMPT 1 1 "Numero registrazione " + HELP "Inserire il numero di registrazione che si vuole modificare" + FLAGS "RZ" + CHECKTYPE REQUIRED +END + +NUMBER F_NUMRIG 2 +BEGIN + PROMPT 52 1 "Numero di riga " + HELP "Inserire il numero della riga desiderata. Se non viene specificata si entra in modifica della testata" + FLAGS "RZ" +END + +NUMBER F_CODCF 6 +BEGIN + PROMPT 1 3 "Codice C/F " + FLAGS "R" +END + +STRING F_RAGSOCCF 50 +BEGIN + PROMPT 26 3 "" + FLAGS "D" +END + +DATE F_DATA74TER +BEGIN + PROMPT 1 4 "Data reg. 74TER " +END + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 0 6 "Cliente occasionale" +END + +STRING F_RAGSOCOCC 25 +BEGIN + PROMPT 1 7 "Ragione sociale " +END + +STRING F_INDOCC 22 +BEGIN + PROMPT 1 8 "Indirizzo " +END + +STRING F_LOCALITA 18 +BEGIN + PROMPT 1 9 "Localita' " +END + +STRING F_CAPOCC 5 +BEGIN + PROMPT 46 9 "C.A.P. " +END + +STRING F_PROVOCC 2 +BEGIN + PROMPT 62 9 "Provincia " +END + +NUMBER F_IMPONIBILE 15 +BEGIN + PROMPT 1 11 "Imponibile " + FLAGS "R" + PICTURE "." +END + +STRING F_CODIVA 2 +BEGIN + PROMPT 1 12 "Codice IVA " + FLAGS "Z" +END + +STRING F_DESCRCODIVA 48 +BEGIN + PROMPT 28 12 "" + FLAGS "D" +END + +NUMBER F_IMPOSTA 15 +BEGIN + PROMPT 1 13 "Imposta " + FLAGS "R" + PICTURE "." +END + +NUMBER F_TIPODET 1 +BEGIN + PROMPT 1 14 "Tipo detraibilita' " + SHEET "Codice|Tipo detraibilita'@75" + INPUT F_TIPODET + ITEM " |Regime normale" + ITEM "1|IVA indetraibile su acquisti riferiti a ricavi esenti" + ITEM "3|IVA indicata per passaggi interni al solo fine del calcolo di ventilazione" + ITEM "9|IVA non detraibile per l'articolo 19" + OUTPUT F_TIPODET +END + +LIST F_TIPOCR 47 +BEGIN + PROMPT 1 15 "Tipo Costo/Ricavo " + ITEM " |0. Acquisti o vendite in genere" + ITEM "1|1. Acquisti beni per rivendita" + ITEM "2|2. Acquisti beni ammortizzabili" + ITEM "3|3. Acquisti beni ammortizzabili con detr. 6%" + ITEM "4|4. Vendita beni strumentali art. 17" + ITEM "5|5. Beni per rivendita da non ventilare" + ITEM "8|8. Altri beni strumentali acquistati in leasing" + ITEM "9|9. Spese generali" + HELP "Tipo Costo/Ricavo del conto" +END + +NUMBER F_GRUPPO 2 +BEGIN + PROMPT 1 16 "Sottoconto costo/ricavo " + FLAGS "R" +END + +NUMBER F_CONTO 2 +BEGIN + PROMPT 30 16 "" + FLAGS "R" +END + +NUMBER F_SOTTOCONTO 6 +BEGIN + PROMPT 35 16 "" + FLAGS "R" +END + +STRING F_DESCRPARTITA 50 +BEGIN + PROMPT 1 17 "Descrizione sottoconto " + FLAGS "D" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2801.cpp b/cg/cg2801.cpp index 54ba65bfe..d2a29b392 100755 --- a/cg/cg2801.cpp +++ b/cg/cg2801.cpp @@ -1,241 +1,241 @@ -#include "cglib04.h" -#include "cg2801.h" - -bool TDitta_ric::create() -{ - TApplication::create(); - - _nditte = new TLocalisamfile (LF_PCON); - - dispatch_e_menu (BAR_ITEM(1)); - - return TRUE; -} - -bool TDitta_ric::destroy() -{ - delete _nditte; - - return TApplication::destroy(); -} - -bool TDitta_ric::set() -{ - TMask msk ("cg2801a"); - KEY tasto; - - tasto = msk.run(); - - if (tasto != K_ENTER) return FALSE; - - _dittaric = msk.get_int(F_CODDITTA); - - if (!esegui_controlli()) return FALSE; - - set_firm(_dittaric); - - return FALSE; -} - -bool TDitta_ric::leggi_trasfer() -{ - _trasf = _tras_file.path(_dittaric); - _trasf << "\\trasfer"; - - _tras_file.open(_trasf); - - if (_tras_file.exist()) - { - if (_tras_file.read_control_rec()) - { - _control_rec = _tras_file.record(); - _uselab = _tras_file.ult_file(); - _key = _tras_file.key(); - _sigle_file = _tras_file.sigle_file(); - _nrec_file = _tras_file.nrec_file(); - } - else - return error_box("Rilevati gravi errori negli archivi:procedura interrotta"); - } - else - return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); - - return TRUE; -} - -bool TDitta_ric::esegui_controlli() -{ - TConfig conf(CONFIG_DITTA); - - _std = conf.get("FlStTra"); - - if (!prefhndl->exist(_dittaric)) - return error_box("Codice ditta NON PRESENTE in archivio oppure NON ATTIVATO in contabilita' generale"); - - if (_std == "") - { - if (!leggi_trasfer()) - return FALSE; - - if (_uselab != " ") - return error_box("Ultimo trasferimento NON COMPLETATO: completarlo"); - } - else - return error_box("Ultimo trasferimento NON COMPLETATO: completarlo"); - - if (!controlli()) - return FALSE; - - return TRUE; -} - -bool TDitta_ric::controlli() -{ - TString ana_com,pcon_cau,uselab; - bool fatto = FALSE; - - TConfig conf(CONFIG_DITTA); - - ana_com = conf.get("AnCfCm","cg"); - pcon_cau = conf.get("PcTcCm","cg"); - - if (ana_com == "X" || pcon_cau == "X") - { - if (ana_com == "X") - { - int p = _sigle_file.find('A'); - if (p >= 0) - { - _sigle_file.overwrite(" ",p); - _nrec_file.overwrite("000000", p * 6); - } - } - - if (pcon_cau == "X") - { - int p = _sigle_file.find('W'); - if (p >= 0) - { - _sigle_file.overwrite(" ",p); - _nrec_file.overwrite("000000", p * 6); - } - - p = _sigle_file.find('P'); - if (p >= 0) - { - _sigle_file.overwrite(" ",p); - _nrec_file.overwrite("000000", p * 6); - } - } - - _control_rec.overwrite(_sigle_file,38); - _control_rec.overwrite(_nrec_file,47); - _tras_file.write_control_rec(_control_rec,256); - leggi_record_controllo(); - } - - setta_parametri_record("","T",FALSE); - - int k = 0; - - for ( int j = 0; j < _sigle_file.len(); j++) - { - TString sigla = _sigle_file.mid(j,1); - long nrec = atol(_nrec_file.mid(k,6)); - - if (sigla != "Z" && sigla != "U" && sigla != "B") - { - if (nrec != 0) - { - uselab = sigla; - _control_rec.overwrite(uselab,240); - _control_rec.overwrite(" ",241); - fatto = TRUE; - break; - } - } - k += 6; - } - - if (!fatto) - { - int p = _sigle_file.find('Z'); - if (p >= 0) - { - setta_parametri_record("","C",FALSE); - _control_rec.overwrite(" ",240); - _control_rec.overwrite(" ",241); - } - else - { - setta_parametri_record("","*",FALSE); - _control_rec.overwrite(" ",240); - _control_rec.overwrite(" ",241); - fremove(_trasf); - setta_parametri_record(""," ",FALSE); - } - } - - char agg_cau = _control_rec.sub(235,236)[0]; - char agg_clifo = _control_rec.sub(236,237)[0]; - char agg_pcon = _control_rec.sub(237,238)[0]; - - if (agg_cau != ' ') - agg_cau = 'D'; - if (agg_clifo != ' ') - agg_clifo = 'D'; - if (agg_pcon != ' ') - agg_pcon = 'D'; - - TString agg(4); - - agg[0] = agg_cau; - agg[1] = agg_clifo; - agg[2] = agg_pcon; - agg[3] = '\0'; - - _control_rec.overwrite(agg,235); - - const int size = 256; - - if (!_tras_file.write_control_rec(_control_rec, size)) - return FALSE; - - TConfig cfd (CONFIG_DITTA); - - TString std = cfd.get("FlStTra"); - if (std == "") - return error_box ("Non risultano TRASFERIMENTI ATTIVI sulla ditta richiesta"); - - return TRUE; -} - -void TDitta_ric::leggi_record_controllo() -{ - _tras_file.read_control_rec(); - _control_rec = _tras_file.record(); -} - -void TDitta_ric::setta_parametri_record(const TString& sigla,const TString& flag,bool uselab) -{ - TConfig conf (CONFIG_DITTA); - - conf.set("FlStTra", flag); - - if (uselab) - { - leggi_record_controllo(); - _control_rec.overwrite(sigla,240); - - const int size = 256; - - _tras_file.write_control_rec(_control_rec, size); - } -} - -bool TDitta_ric::menu(MENU_TAG m) -{ - if (m == BAR_ITEM(1)) - return set(); - return FALSE; -} +#include "cglib04.h" +#include "cg2801.h" + +bool TDitta_ric::create() +{ + TApplication::create(); + + _nditte = new TLocalisamfile (LF_PCON); + + dispatch_e_menu (BAR_ITEM(1)); + + return TRUE; +} + +bool TDitta_ric::destroy() +{ + delete _nditte; + + return TApplication::destroy(); +} + +bool TDitta_ric::set() +{ + TMask msk ("cg2801a"); + KEY tasto; + + tasto = msk.run(); + + if (tasto != K_ENTER) return FALSE; + + _dittaric = msk.get_int(F_CODDITTA); + + if (!esegui_controlli()) return FALSE; + + set_firm(_dittaric); + + return FALSE; +} + +bool TDitta_ric::leggi_trasfer() +{ + _trasf = _tras_file.path(_dittaric); + _trasf << "\\trasfer"; + + _tras_file.open(_trasf); + + if (_tras_file.exist()) + { + if (_tras_file.read_control_rec()) + { + _control_rec = _tras_file.record(); + _uselab = _tras_file.ult_file(); + _key = _tras_file.key(); + _sigle_file = _tras_file.sigle_file(); + _nrec_file = _tras_file.nrec_file(); + } + else + return error_box("Rilevati gravi errori negli archivi:procedura interrotta"); + } + else + return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); + + return TRUE; +} + +bool TDitta_ric::esegui_controlli() +{ + TConfig conf(CONFIG_DITTA); + + _std = conf.get("FlStTra"); + + if (!prefhndl->exist(_dittaric)) + return error_box("Codice ditta NON PRESENTE in archivio oppure NON ATTIVATO in contabilita' generale"); + + if (_std == "") + { + if (!leggi_trasfer()) + return FALSE; + + if (_uselab != " ") + return error_box("Ultimo trasferimento NON COMPLETATO: completarlo"); + } + else + return error_box("Ultimo trasferimento NON COMPLETATO: completarlo"); + + if (!controlli()) + return FALSE; + + return TRUE; +} + +bool TDitta_ric::controlli() +{ + TString ana_com,pcon_cau,uselab; + bool fatto = FALSE; + + TConfig conf(CONFIG_DITTA); + + ana_com = conf.get("AnCfCm","cg"); + pcon_cau = conf.get("PcTcCm","cg"); + + if (ana_com == "X" || pcon_cau == "X") + { + if (ana_com == "X") + { + int p = _sigle_file.find('A'); + if (p >= 0) + { + _sigle_file.overwrite(" ",p); + _nrec_file.overwrite("000000", p * 6); + } + } + + if (pcon_cau == "X") + { + int p = _sigle_file.find('W'); + if (p >= 0) + { + _sigle_file.overwrite(" ",p); + _nrec_file.overwrite("000000", p * 6); + } + + p = _sigle_file.find('P'); + if (p >= 0) + { + _sigle_file.overwrite(" ",p); + _nrec_file.overwrite("000000", p * 6); + } + } + + _control_rec.overwrite(_sigle_file,38); + _control_rec.overwrite(_nrec_file,47); + _tras_file.write_control_rec(_control_rec,256); + leggi_record_controllo(); + } + + setta_parametri_record("","T",FALSE); + + int k = 0; + + for ( int j = 0; j < _sigle_file.len(); j++) + { + TString sigla = _sigle_file.mid(j,1); + long nrec = atol(_nrec_file.mid(k,6)); + + if (sigla != "Z" && sigla != "U" && sigla != "B") + { + if (nrec != 0) + { + uselab = sigla; + _control_rec.overwrite(uselab,240); + _control_rec.overwrite(" ",241); + fatto = TRUE; + break; + } + } + k += 6; + } + + if (!fatto) + { + int p = _sigle_file.find('Z'); + if (p >= 0) + { + setta_parametri_record("","C",FALSE); + _control_rec.overwrite(" ",240); + _control_rec.overwrite(" ",241); + } + else + { + setta_parametri_record("","*",FALSE); + _control_rec.overwrite(" ",240); + _control_rec.overwrite(" ",241); + fremove(_trasf); + setta_parametri_record(""," ",FALSE); + } + } + + char agg_cau = _control_rec.sub(235,236)[0]; + char agg_clifo = _control_rec.sub(236,237)[0]; + char agg_pcon = _control_rec.sub(237,238)[0]; + + if (agg_cau != ' ') + agg_cau = 'D'; + if (agg_clifo != ' ') + agg_clifo = 'D'; + if (agg_pcon != ' ') + agg_pcon = 'D'; + + TString agg(4); + + agg[0] = agg_cau; + agg[1] = agg_clifo; + agg[2] = agg_pcon; + agg[3] = '\0'; + + _control_rec.overwrite(agg,235); + + const int size = 256; + + if (!_tras_file.write_control_rec(_control_rec, size)) + return FALSE; + + TConfig cfd (CONFIG_DITTA); + + TString std = cfd.get("FlStTra"); + if (std == "") + return error_box ("Non risultano TRASFERIMENTI ATTIVI sulla ditta richiesta"); + + return TRUE; +} + +void TDitta_ric::leggi_record_controllo() +{ + _tras_file.read_control_rec(); + _control_rec = _tras_file.record(); +} + +void TDitta_ric::setta_parametri_record(const TString& sigla,const TString& flag,bool uselab) +{ + TConfig conf (CONFIG_DITTA); + + conf.set("FlStTra", flag); + + if (uselab) + { + leggi_record_controllo(); + _control_rec.overwrite(sigla,240); + + const int size = 256; + + _tras_file.write_control_rec(_control_rec, size); + } +} + +bool TDitta_ric::menu(MENU_TAG m) +{ + if (m == BAR_ITEM(1)) + return set(); + return FALSE; +} diff --git a/cg/cg2801.h b/cg/cg2801.h index 104fd44ae..4d71a40ce 100755 --- a/cg/cg2801.h +++ b/cg/cg2801.h @@ -1,43 +1,43 @@ -// Scelta ditta per ricezione - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cg2800.h" -//#include "cglib04.h" - -class TDitta_ric : public TApplication -{ - TLocalisamfile* _nditte; - TTransfer_file _tras_file; - - TString _trasf,_std,_uselab,_record,_nrec_file,_sigle_file,_key; - long _dittaric; - TString _control_rec; - -public: - TString _titolo; - - virtual bool create(); - virtual bool destroy(); - virtual bool menu(MENU_TAG m); - - bool set(); - - bool esegui_controlli(); - bool leggi_trasfer(); - bool controlli(); - void leggi_record_controllo(); - void setta_parametri_record(const TString& sigla,const TString& flag,bool uselab); - - TDitta_ric() {}; -}; +// Scelta ditta per ricezione + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cg2800.h" +//#include "cglib04.h" + +class TDitta_ric : public TApplication +{ + TLocalisamfile* _nditte; + TTransfer_file _tras_file; + + TString _trasf,_std,_uselab,_record,_nrec_file,_sigle_file,_key; + long _dittaric; + TString _control_rec; + +public: + TString _titolo; + + virtual bool create(); + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + + bool set(); + + bool esegui_controlli(); + bool leggi_trasfer(); + bool controlli(); + void leggi_record_controllo(); + void setta_parametri_record(const TString& sigla,const TString& flag,bool uselab); + + TDitta_ric() {}; +}; diff --git a/cg/cg2801a.uml b/cg/cg2801a.uml index 10b85d5f6..36dc88409 100755 --- a/cg/cg2801a.uml +++ b/cg/cg2801a.uml @@ -1,47 +1,47 @@ -#include "cg2800.h" - -PAGE "Selezione Ditta" -1 -1 64 6 - -NUMBER F_CODDITTA 5 -BEGIN - PROMPT 1 1 "Codice " - HELP "Codice della ditta da attivare" - FLAGS "FR" - USE LF_NDITTE KEY 1 - INPUT CODDITTA F_CODDITTA - DISPLAY "Codice" CODDITTA - DISPLAY "Ragione sociale@50" RAGSOC - OUTPUT F_CODDITTA CODDITTA - OUTPUT F_RAGDITTA RAGSOC - CHECKTYPE NORMAL - WARNING "Ditta assente" - KEY 1 - GROUP 1 -END - -STRING F_RAGDITTA 50 -BEGIN - PROMPT 1 2 "Rag. Soc. " - USE LF_NDITTE KEY 2 - HELP "Ragione sociale della ditta da selezionare" - INPUT RAGSOC F_RAGDITTA - DISPLAY "Ragione sociale@50" RAGSOC - DISPLAY "Codice" CODDITTA - COPY OUTPUT F_CODDITTA - KEY 2 - GROUP 1 -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK +#include "cg2800.h" + +PAGE "Selezione Ditta" -1 -1 64 6 + +NUMBER F_CODDITTA 5 +BEGIN + PROMPT 1 1 "Codice " + HELP "Codice della ditta da attivare" + FLAGS "FR" + USE LF_NDITTE KEY 1 + INPUT CODDITTA F_CODDITTA + DISPLAY "Codice" CODDITTA + DISPLAY "Ragione sociale@50" RAGSOC + OUTPUT F_CODDITTA CODDITTA + OUTPUT F_RAGDITTA RAGSOC + CHECKTYPE NORMAL + WARNING "Ditta assente" + KEY 1 + GROUP 1 +END + +STRING F_RAGDITTA 50 +BEGIN + PROMPT 1 2 "Rag. Soc. " + USE LF_NDITTE KEY 2 + HELP "Ragione sociale della ditta da selezionare" + INPUT RAGSOC F_RAGDITTA + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Codice" CODDITTA + COPY OUTPUT F_CODDITTA + KEY 2 + GROUP 1 +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2802.cpp b/cg/cg2802.cpp index 4e73b6338..fe4381292 100755 --- a/cg/cg2802.cpp +++ b/cg/cg2802.cpp @@ -1,363 +1,363 @@ -#include "cglib04.h" -#include "cg2802.h" - -HIDDEN int date2esc(const TDate& d, int* prevesc) -{ - if (prevesc) *prevesc = 0; - TTable esc("ESC"); - for (int err = esc.first(); err == NOERR; err = esc.next()) - { - const TDate ia(esc.get("D0")); // Data inizio esercizio - const TDate fa(esc.get("D1")); // Data fine esercizio - const anno = esc.get_int("CODTAB"); - if (d >= ia && d <= fa) - return anno; - if (prevesc) *prevesc = anno; - } - return 0; -} - -bool TAnn_mov::create() -{ - TApplication::create(); - - _pcon = new TLocalisamfile (LF_PCON); - _clifo = new TLocalisamfile (LF_CLIFO); - - TString80 tmpmov = "%"; - tmpmov << get_firm_dir(); - tmpmov << "\\" << TEMP_MOV; - TString80 tmprmov = "%"; - tmprmov << get_firm_dir(); - tmprmov << "\\" << TEMP_RMOV; - TString80 tmprmoviva = "%"; - tmprmoviva << get_firm_dir(); - tmprmoviva << "\\" << TEMP_RMOVIVA; - - _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); - _trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0); - _tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0); - - _rec_mov = new TRectype (LF_MOV); - - dispatch_e_menu (BAR_ITEM(1)); - - return TRUE; -} - -bool TAnn_mov::destroy() -{ - delete _pcon; - delete _clifo; - - delete _tmov; - delete _trmov; - delete _tiva; - - delete _rec_mov; - - return TApplication::destroy(); -} - -bool TAnn_mov::set() -{ - _dittaric = get_firm(); - - if (!esegui_controlli()) return FALSE; - - if (!video()) - return FALSE; - - return FALSE; -} - -bool TAnn_mov::video() -{ - TMask msk ("cg2802a"); - KEY tasto; - - do - { - tasto = msk.run(); - - if (tasto != K_ENTER) return FALSE; - - if (esiste_testata_mov(msk)) - { - TMask mask ("cg2802b"); - - mask.set_handler(F_REGIVA, codice_registro_hnd); - mask.set_handler(F_CODCAUS, codice_causale_hnd); - - setta_campi_maschera(mask); - - tasto = mask.run(); - - switch (tasto) - { - case K_ESC : - break; - - case K_QUIT : - break; - - case K_SAVE : - { - annulla(mask); - } - break; - - default: - break; - } - } - } - while (tasto != K_QUIT); //K_ENTER - - return TRUE; -} - -bool TAnn_mov::esiste_testata_mov(TMask& m) -{ - long nrec; - - _numreg = m.get_long(F_NUMREG); - - _tmov->setkey(1); - _tmov->zero(); - _tmov->put(MOV_NUMREG, _numreg); - - if (_tmov->read() == NOERR) - { - nrec = _tmov->get_long(MOV_NUMGIO); - nrec += _tras_file.start('Z'); - - _tras_file.read_rec_trasfer(nrec); - _record = _tras_file.read_rec(); - - char annullato = _record.sub(248,249)[0]; - - if (annullato == 'A') - return error_box("Registrazione presente ma gia' ANNULLATA in precedenza"); - - *_rec_mov = _tmov->curr(); - } - else - return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); - - return TRUE; -} - -void TAnn_mov::setta_campi_maschera(TMask& m) -{ - TDate datareg (_rec_mov->get_date(MOV_DATAREG)); - TDate datadoc (_rec_mov->get_date(MOV_DATADOC)); - TString numdoc = _rec_mov->get (MOV_NUMDOC); - TString regiva = _rec_mov->get (MOV_REG); - regiva.trim(); - long protiva = _rec_mov->get_long(MOV_PROTIVA); - TString codcaus = _rec_mov->get (MOV_CODCAUS); - - m.set(F_NUMREG, _numreg); - m.set(F_DATAREG, datareg.string()); - m.set(F_DATADOC, datadoc.string()); - m.set(F_NUMDOC, numdoc); - m.set(F_REGIVA, regiva); - m.set(F_PROTIVA, protiva); - m.set(F_CODCAUS, codcaus); - - m.disable(F_NUMREG); - m.disable(F_DATAREG); - m.disable(F_DATADOC); - m.disable(F_NUMDOC); - m.disable(F_REGIVA); - m.disable(F_PROTIVA); - m.disable(F_CODCAUS); -} - -void TAnn_mov::annulla(TMask& m) -{ - TRectype* rec_rmov,* rec_riva; - rec_rmov = new TRectype (LF_RMOV); - - long numreg = m.get_long(F_NUMREG); - - _trmov->setkey(1); - _trmov->zero(); - _trmov->put(RMV_NUMREG, numreg); - *rec_rmov = _trmov->curr(); - - for (_trmov->read(); !_trmov->eof(); _trmov->next()) - { - if (_trmov->curr() > *rec_rmov) break; - - long numrec = _trmov->get_int(RMV_ANNOES); - numrec += _tras_file.start('Z'); - - _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota - - _tras_file.put("A","Z1",51,numrec); - - _tras_file.write(numrec); - } - - delete rec_rmov; - - rec_riva = new TRectype (LF_RMOVIVA); - - _tiva->setkey(1); - _tiva->zero(); - _tiva->put(RMI_NUMREG, numreg); - *rec_riva = _tiva->curr(); - - for (_tiva->read(); !_tiva->eof(); _tiva->next()) - { - if (_tiva->curr() > *rec_riva) break; - - long numrec = _tiva->get_int(RMI_ANNOES); - numrec += _tras_file.start('U'); - - _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota - - _tras_file.put("A","U1",51,numrec); - - _tras_file.write(numrec); - } - - delete rec_riva; -} - -bool TAnn_mov::leggi_trasfer() -{ - _trasf = _tras_file.path(_dittaric); - _trasf << "\\trasfer"; - - _tras_file.open(_trasf); - - if (_tras_file.exist()) - { - if (_tras_file.read_control_rec()) - _control_rec = _tras_file.record(); - else - return error_box("Rilevati gravi errori negli archivi:procedura interrotta"); - } - else - return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); - - return TRUE; -} - -bool TAnn_mov::codice_registro_hnd(TMask_field& f, KEY k) -{ - TTable reg ("REG"); - TString descr,dep; - - if (k == K_TAB) - { - TString codreg = f.get(); - char cr = codreg[0]; - TDate datareg (f.mask().get(F_DATAREG)); - int anno = date2esc(datareg); - - if (isdigit(cr)) - dep.format("%04d%03c", anno, cr); - else - dep.format("%04d%-3c", anno, cr); - - reg.zero(); - reg.put("CODTAB", dep); - if (reg.read() == NOERR) - { - descr = reg.get("S0"); - f.mask().set(F_DESCRREG, descr); - } - } - - return TRUE; -} - -bool TAnn_mov::codice_causale_hnd(TMask_field& f, KEY k) -{ - TLocalisamfile cau (LF_CAUSALI); - TString descr; - - if (k == K_TAB) - { - TString codcau = f.get(); - - cau.setkey(1); - cau.zero(); - cau.put("CODCAUS", codcau); - if (cau.read() == NOERR) - { - descr = cau.get("DESCR"); - f.mask().set(F_DESCRCAU, descr); - } - } - - return TRUE; -} - -bool TAnn_mov::esegui_controlli() -{ - TConfig conf(CONFIG_DITTA); - - _std = conf.get("FlStTra"); - - if (!prefhndl->exist(_dittaric)) - return error_box("Rilevati GRAVI ERRORI negli archivi: procedura interrotta"); - - if (!leggi_trasfer()) - return FALSE; - - if (!controlli()) - return FALSE; - - return TRUE; -} - -bool TAnn_mov::controlli() -{ - if (_std == "M") - return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato"); - - if (_std == "*") - { - warning_box("Trasferimento interamente completato: proseguire per cancellare il file"); - fremove(_trasf); - setta_parametri_record(""," ",FALSE); - return FALSE; - } - - return TRUE; -} - -void TAnn_mov::leggi_record_controllo() -{ - _tras_file.read_control_rec(); - _control_rec = _tras_file.record(); -} - -void TAnn_mov::setta_parametri_record(const TString& sigla,const TString& flag,bool uselab) -{ - TConfig conf (CONFIG_DITTA); - - conf.set("FlStTra", flag); - - if (uselab) - { - leggi_record_controllo(); - _control_rec.overwrite(sigla,240); - - const int size = 256; - - _tras_file.write_control_rec(_control_rec, size); - } -} - -bool TAnn_mov::menu(MENU_TAG m) -{ - if (m == BAR_ITEM(1)) - return set(); - return FALSE; -} +#include "cglib04.h" +#include "cg2802.h" + +HIDDEN int date2esc(const TDate& d, int* prevesc) +{ + if (prevesc) *prevesc = 0; + TTable esc("ESC"); + for (int err = esc.first(); err == NOERR; err = esc.next()) + { + const TDate ia(esc.get("D0")); // Data inizio esercizio + const TDate fa(esc.get("D1")); // Data fine esercizio + const anno = esc.get_int("CODTAB"); + if (d >= ia && d <= fa) + return anno; + if (prevesc) *prevesc = anno; + } + return 0; +} + +bool TAnn_mov::create() +{ + TApplication::create(); + + _pcon = new TLocalisamfile (LF_PCON); + _clifo = new TLocalisamfile (LF_CLIFO); + + TString80 tmpmov = "%"; + tmpmov << get_firm_dir(); + tmpmov << "\\" << TEMP_MOV; + TString80 tmprmov = "%"; + tmprmov << get_firm_dir(); + tmprmov << "\\" << TEMP_RMOV; + TString80 tmprmoviva = "%"; + tmprmoviva << get_firm_dir(); + tmprmoviva << "\\" << TEMP_RMOVIVA; + + _tmov = new TIsamtempfile(LF_MOV, tmpmov, 0); + _trmov = new TIsamtempfile(LF_RMOV, tmprmov, 0); + _tiva = new TIsamtempfile(LF_RMOVIVA, tmprmoviva, 0); + + _rec_mov = new TRectype (LF_MOV); + + dispatch_e_menu (BAR_ITEM(1)); + + return TRUE; +} + +bool TAnn_mov::destroy() +{ + delete _pcon; + delete _clifo; + + delete _tmov; + delete _trmov; + delete _tiva; + + delete _rec_mov; + + return TApplication::destroy(); +} + +bool TAnn_mov::set() +{ + _dittaric = get_firm(); + + if (!esegui_controlli()) return FALSE; + + if (!video()) + return FALSE; + + return FALSE; +} + +bool TAnn_mov::video() +{ + TMask msk ("cg2802a"); + KEY tasto; + + do + { + tasto = msk.run(); + + if (tasto != K_ENTER) return FALSE; + + if (esiste_testata_mov(msk)) + { + TMask mask ("cg2802b"); + + mask.set_handler(F_REGIVA, codice_registro_hnd); + mask.set_handler(F_CODCAUS, codice_causale_hnd); + + setta_campi_maschera(mask); + + tasto = mask.run(); + + switch (tasto) + { + case K_ESC : + break; + + case K_QUIT : + break; + + case K_SAVE : + { + annulla(mask); + } + break; + + default: + break; + } + } + } + while (tasto != K_QUIT); //K_ENTER + + return TRUE; +} + +bool TAnn_mov::esiste_testata_mov(TMask& m) +{ + long nrec; + + _numreg = m.get_long(F_NUMREG); + + _tmov->setkey(1); + _tmov->zero(); + _tmov->put(MOV_NUMREG, _numreg); + + if (_tmov->read() == NOERR) + { + nrec = _tmov->get_long(MOV_NUMGIO); + nrec += _tras_file.start('Z'); + + _tras_file.read_rec_trasfer(nrec); + _record = _tras_file.read_rec(); + + char annullato = _record.sub(248,249)[0]; + + if (annullato == 'A') + return error_box("Registrazione presente ma gia' ANNULLATA in precedenza"); + + *_rec_mov = _tmov->curr(); + } + else + return error_box("Registrazione richiesta NON PRESENTE tra i movimenti in trasferimento"); + + return TRUE; +} + +void TAnn_mov::setta_campi_maschera(TMask& m) +{ + TDate datareg (_rec_mov->get_date(MOV_DATAREG)); + TDate datadoc (_rec_mov->get_date(MOV_DATADOC)); + TString numdoc = _rec_mov->get (MOV_NUMDOC); + TString regiva = _rec_mov->get (MOV_REG); + regiva.trim(); + long protiva = _rec_mov->get_long(MOV_PROTIVA); + TString codcaus = _rec_mov->get (MOV_CODCAUS); + + m.set(F_NUMREG, _numreg); + m.set(F_DATAREG, datareg.string()); + m.set(F_DATADOC, datadoc.string()); + m.set(F_NUMDOC, numdoc); + m.set(F_REGIVA, regiva); + m.set(F_PROTIVA, protiva); + m.set(F_CODCAUS, codcaus); + + m.disable(F_NUMREG); + m.disable(F_DATAREG); + m.disable(F_DATADOC); + m.disable(F_NUMDOC); + m.disable(F_REGIVA); + m.disable(F_PROTIVA); + m.disable(F_CODCAUS); +} + +void TAnn_mov::annulla(TMask& m) +{ + TRectype* rec_rmov,* rec_riva; + rec_rmov = new TRectype (LF_RMOV); + + long numreg = m.get_long(F_NUMREG); + + _trmov->setkey(1); + _trmov->zero(); + _trmov->put(RMV_NUMREG, numreg); + *rec_rmov = _trmov->curr(); + + for (_trmov->read(); !_trmov->eof(); _trmov->next()) + { + if (_trmov->curr() > *rec_rmov) break; + + long numrec = _trmov->get_int(RMV_ANNOES); + numrec += _tras_file.start('Z'); + + _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota + + _tras_file.put("A","Z1",51,numrec); + + _tras_file.write(numrec); + } + + delete rec_rmov; + + rec_riva = new TRectype (LF_RMOVIVA); + + _tiva->setkey(1); + _tiva->zero(); + _tiva->put(RMI_NUMREG, numreg); + *rec_riva = _tiva->curr(); + + for (_tiva->read(); !_tiva->eof(); _tiva->next()) + { + if (_tiva->curr() > *rec_riva) break; + + long numrec = _tiva->get_int(RMI_ANNOES); + numrec += _tras_file.start('U'); + + _tras_file.read_rec_trasfer(numrec); //Leggo il record della prima nota + + _tras_file.put("A","U1",51,numrec); + + _tras_file.write(numrec); + } + + delete rec_riva; +} + +bool TAnn_mov::leggi_trasfer() +{ + _trasf = _tras_file.path(_dittaric); + _trasf << "\\trasfer"; + + _tras_file.open(_trasf); + + if (_tras_file.exist()) + { + if (_tras_file.read_control_rec()) + _control_rec = _tras_file.record(); + else + return error_box("Rilevati gravi errori negli archivi:procedura interrotta"); + } + else + return error_box("Al momento non presenti trasferimenti attivi sulla ditta selezionata"); + + return TRUE; +} + +bool TAnn_mov::codice_registro_hnd(TMask_field& f, KEY k) +{ + TTable reg ("REG"); + TString descr,dep; + + if (k == K_TAB) + { + TString codreg = f.get(); + char cr = codreg[0]; + TDate datareg (f.mask().get(F_DATAREG)); + int anno = date2esc(datareg); + + if (isdigit(cr)) + dep.format("%04d%03c", anno, cr); + else + dep.format("%04d%-3c", anno, cr); + + reg.zero(); + reg.put("CODTAB", dep); + if (reg.read() == NOERR) + { + descr = reg.get("S0"); + f.mask().set(F_DESCRREG, descr); + } + } + + return TRUE; +} + +bool TAnn_mov::codice_causale_hnd(TMask_field& f, KEY k) +{ + TLocalisamfile cau (LF_CAUSALI); + TString descr; + + if (k == K_TAB) + { + TString codcau = f.get(); + + cau.setkey(1); + cau.zero(); + cau.put("CODCAUS", codcau); + if (cau.read() == NOERR) + { + descr = cau.get("DESCR"); + f.mask().set(F_DESCRCAU, descr); + } + } + + return TRUE; +} + +bool TAnn_mov::esegui_controlli() +{ + TConfig conf(CONFIG_DITTA); + + _std = conf.get("FlStTra"); + + if (!prefhndl->exist(_dittaric)) + return error_box("Rilevati GRAVI ERRORI negli archivi: procedura interrotta"); + + if (!leggi_trasfer()) + return FALSE; + + if (!controlli()) + return FALSE; + + return TRUE; +} + +bool TAnn_mov::controlli() +{ + if (_std == "M") + return error_box("Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato"); + + if (_std == "*") + { + warning_box("Trasferimento interamente completato: proseguire per cancellare il file"); + fremove(_trasf); + setta_parametri_record(""," ",FALSE); + return FALSE; + } + + return TRUE; +} + +void TAnn_mov::leggi_record_controllo() +{ + _tras_file.read_control_rec(); + _control_rec = _tras_file.record(); +} + +void TAnn_mov::setta_parametri_record(const TString& sigla,const TString& flag,bool uselab) +{ + TConfig conf (CONFIG_DITTA); + + conf.set("FlStTra", flag); + + if (uselab) + { + leggi_record_controllo(); + _control_rec.overwrite(sigla,240); + + const int size = 256; + + _tras_file.write_control_rec(_control_rec, size); + } +} + +bool TAnn_mov::menu(MENU_TAG m) +{ + if (m == BAR_ITEM(1)) + return set(); + return FALSE; +} diff --git a/cg/cg2802.h b/cg/cg2802.h index 77d1fb8e8..51927ea2a 100755 --- a/cg/cg2802.h +++ b/cg/cg2802.h @@ -1,55 +1,55 @@ -// Annullamento movimenti da ricevere - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "cg2800.h" - -HIDDEN int date2esc(const TDate& d, int* prevesc = NULL); - -class TAnn_mov : public TApplication -{ - TIsamtempfile* _tmov,* _trmov,* _tiva; - TLocalisamfile* _pcon,* _clifo; - TRectype* _rec_mov; - TTransfer_file _tras_file; - - TString _trasf,_std,_uselab,_record,_nrec_file,_sigle_file,_key; - long _dittaric,_numreg; - TString _control_rec; - -public: - TString _titolo; - - virtual bool create(); - virtual bool destroy(); - virtual bool menu(MENU_TAG m); - - bool set(); - - bool esegui_controlli(); - bool leggi_trasfer(); - bool controlli(); - void leggi_record_controllo(); - bool video(); - void annulla(TMask& m); - bool esiste_testata_mov(TMask& m); - - void setta_campi_maschera(TMask& m); - - void setta_parametri_record(const TString& sigla,const TString& flag,bool uselab); - - static bool codice_registro_hnd (TMask_field& f, KEY k); - static bool codice_causale_hnd (TMask_field& f, KEY k); - - TAnn_mov() {}; -}; +// Annullamento movimenti da ricevere + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cg2800.h" + +HIDDEN int date2esc(const TDate& d, int* prevesc = NULL); + +class TAnn_mov : public TApplication +{ + TIsamtempfile* _tmov,* _trmov,* _tiva; + TLocalisamfile* _pcon,* _clifo; + TRectype* _rec_mov; + TTransfer_file _tras_file; + + TString _trasf,_std,_uselab,_record,_nrec_file,_sigle_file,_key; + long _dittaric,_numreg; + TString _control_rec; + +public: + TString _titolo; + + virtual bool create(); + virtual bool destroy(); + virtual bool menu(MENU_TAG m); + + bool set(); + + bool esegui_controlli(); + bool leggi_trasfer(); + bool controlli(); + void leggi_record_controllo(); + bool video(); + void annulla(TMask& m); + bool esiste_testata_mov(TMask& m); + + void setta_campi_maschera(TMask& m); + + void setta_parametri_record(const TString& sigla,const TString& flag,bool uselab); + + static bool codice_registro_hnd (TMask_field& f, KEY k); + static bool codice_causale_hnd (TMask_field& f, KEY k); + + TAnn_mov() {}; +}; diff --git a/cg/cg2802a.uml b/cg/cg2802a.uml index 2f2152aec..39d5a0339 100755 --- a/cg/cg2802a.uml +++ b/cg/cg2802a.uml @@ -1,25 +1,25 @@ -#include "cg2800.h" - -PAGE "" -1 -1 50 6 - -NUMBER F_NUMREG 6 -BEGIN - PROMPT 2 1 "Numero di registrazione " - HELP "Inserire il numero di registrazione che si vuole modificare" - FLAGS "RZ" - CHECKTYPE REQUIRED -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK +#include "cg2800.h" + +PAGE "" -1 -1 50 6 + +NUMBER F_NUMREG 6 +BEGIN + PROMPT 2 1 "Numero di registrazione " + HELP "Inserire il numero di registrazione che si vuole modificare" + FLAGS "RZ" + CHECKTYPE REQUIRED +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2802b.uml b/cg/cg2802b.uml index 598c01e0f..0d2f18551 100755 --- a/cg/cg2802b.uml +++ b/cg/cg2802b.uml @@ -1,86 +1,86 @@ -#include "cg2800.h" - -TOOLBAR "" 0 20 0 2 - -BUTTON DLG_SAVEREC 10 2 -BEGIN -PROMPT -15 -1 "~Registra" -MESSAGE EXIT,K_SAVE -END - -BUTTON DLG_CANCEL 10 2 -BEGIN -PROMPT -45 -1 "" -MESSAGE EXIT,K_ESC -END - -BUTTON DLG_QUIT 10 2 -BEGIN -PROMPT -55 -1 "" -MESSAGE EXIT,K_QUIT -END - -ENDPAGE - -PAGE "" -1 -1 78 18 - -NUMBER F_NUMREG 6 -BEGIN - PROMPT 1 1 "Numero registrazione " - HELP "Inserire il numero di registrazione che si vuole modificare" - FLAGS "RZ" - CHECKTYPE REQUIRED -END - -DATE F_DATAREG -BEGIN - PROMPT 1 3 "Data registrazione " -END - -STRING F_NUMDOC 7 -BEGIN - PROMPT 1 5 "Numero docomento " -END - -DATE F_DATADOC -BEGIN - PROMPT 1 6 "Data del documento " -END - -STRING F_REGIVA 1 -BEGIN - PROMPT 1 8 "Registro IVA " -END - -STRING F_DESCRREG 49 -BEGIN - PROMPT 28 8 "" - FLAGS "D" -END - -NUMBER F_PROTIVA 5 -BEGIN - PROMPT 1 9 "Numero protocollo iva " - FLAGS "R" -END - -STRING F_CODCAUS 3 -BEGIN - PROMPT 1 11 "Codice causale " - FLAGS "Z" -END - -STRING F_DESCRCAU 49 -BEGIN - PROMPT 28 11 "" - FLAGS "D" -END - -STRING F_DESCR 30 -BEGIN - PROMPT 1 13 "Descrizione aggiuntiva " -END - -ENDPAGE - -ENDMASK +#include "cg2800.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_SAVEREC 10 2 +BEGIN +PROMPT -15 -1 "~Registra" +MESSAGE EXIT,K_SAVE +END + +BUTTON DLG_CANCEL 10 2 +BEGIN +PROMPT -45 -1 "" +MESSAGE EXIT,K_ESC +END + +BUTTON DLG_QUIT 10 2 +BEGIN +PROMPT -55 -1 "" +MESSAGE EXIT,K_QUIT +END + +ENDPAGE + +PAGE "" -1 -1 78 18 + +NUMBER F_NUMREG 6 +BEGIN + PROMPT 1 1 "Numero registrazione " + HELP "Inserire il numero di registrazione che si vuole modificare" + FLAGS "RZ" + CHECKTYPE REQUIRED +END + +DATE F_DATAREG +BEGIN + PROMPT 1 3 "Data registrazione " +END + +STRING F_NUMDOC 7 +BEGIN + PROMPT 1 5 "Numero docomento " +END + +DATE F_DATADOC +BEGIN + PROMPT 1 6 "Data del documento " +END + +STRING F_REGIVA 1 +BEGIN + PROMPT 1 8 "Registro IVA " +END + +STRING F_DESCRREG 49 +BEGIN + PROMPT 28 8 "" + FLAGS "D" +END + +NUMBER F_PROTIVA 5 +BEGIN + PROMPT 1 9 "Numero protocollo iva " + FLAGS "R" +END + +STRING F_CODCAUS 3 +BEGIN + PROMPT 1 11 "Codice causale " + FLAGS "Z" +END + +STRING F_DESCRCAU 49 +BEGIN + PROMPT 28 11 "" + FLAGS "D" +END + +STRING F_DESCR 30 +BEGIN + PROMPT 1 13 "Descrizione aggiuntiva " +END + +ENDPAGE + +ENDMASK diff --git a/cg/cg2803a.uml b/cg/cg2803a.uml index 104920ee8..c54d05755 100755 --- a/cg/cg2803a.uml +++ b/cg/cg2803a.uml @@ -1,100 +1,100 @@ -#include "cg2800.h" - -PAGE "" -1 -1 78 20 - -NUMBER F_CODDITTARIC 5 -BEGIN - PROMPT 1 1 "Ditta ricevente " - USE LF_NDITTE KEY 1 - INPUT CODDITTA F_CODDITTARIC - OUTPUT F_RAGSOC RAGSOC - FLAGS "RDZ" - CHECKTYPE REQUIRED -END - -STRING F_RAGSOC 50 -BEGIN - PROMPT 1 2 "Ragione sociale " - FLAGS "D" -END - -NUMBER F_NULTRAS 3 -BEGIN - PROMPT 1 4 "Numero ultimo invio ricevuto " -END - -DATE F_DATAULTRAS -BEGIN - PROMPT 1 6 "Data ultimo invio ricevuto " -END - -STRING F_STD 1 -BEGIN - PROMPT 1 8 "Stato del trasferimento " -END - -STRING F_USELAB 1 -BEGIN - PROMPT 34 8 "" -END - -STRING F_STATO 14 -BEGIN - PROMPT 38 8 "" -END - -LIST F_AGGCAUSALI 6 -BEGIN - PROMPT 1 10 "Aggiornamento causali gia' presenti " - ITEM "N|No" - ITEM "D|Descr." - ITEM "T|Tutto" -END - -LIST F_AGGCLIFO 6 -BEGIN - PROMPT 1 11 "Aggiornamento Clienti/Fornitori gia' presenti " - ITEM "N|No" - ITEM "D|Descr." - ITEM "T|Tutto" -END - -LIST F_AGGPCON 6 -BEGIN - PROMPT 1 12 "Aggiornamento voci Piano dei Conti gia' presenti " - ITEM "N|No" - ITEM "D|Descr." - ITEM "T|Tutto" -END - -LIST F_AGGIVD 6 -BEGIN - PROMPT 1 13 "Aggiornamento classi Piano dei Conti " - ITEM "N|No" - ITEM "D|Descr." - ITEM "T|Tutto" -END - -BOOLEAN F_FATTEM -BEGIN - PROMPT 1 14 "Riattribuzione num. protocollo su fatture emesse " -END - -BOOLEAN F_FATTRIC -BEGIN - PROMPT 1 15 "Riattribuzione num. protocollo su fatture ricevute " -END - -BUTTON DLG_OK 9 2 -BEGIN - PROMPT -12 -1 "" -END - -BUTTON DLG_QUIT 9 2 -BEGIN - PROMPT -22 -1 "" -END - -ENDPAGE - -ENDMASK +#include "cg2800.h" + +PAGE "" -1 -1 78 20 + +NUMBER F_CODDITTARIC 5 +BEGIN + PROMPT 1 1 "Ditta ricevente " + USE LF_NDITTE KEY 1 + INPUT CODDITTA F_CODDITTARIC + OUTPUT F_RAGSOC RAGSOC + FLAGS "RDZ" + CHECKTYPE REQUIRED +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 1 2 "Ragione sociale " + FLAGS "D" +END + +NUMBER F_NULTRAS 3 +BEGIN + PROMPT 1 4 "Numero ultimo invio ricevuto " +END + +DATE F_DATAULTRAS +BEGIN + PROMPT 1 6 "Data ultimo invio ricevuto " +END + +STRING F_STD 1 +BEGIN + PROMPT 1 8 "Stato del trasferimento " +END + +STRING F_USELAB 1 +BEGIN + PROMPT 34 8 "" +END + +STRING F_STATO 14 +BEGIN + PROMPT 38 8 "" +END + +LIST F_AGGCAUSALI 6 +BEGIN + PROMPT 1 10 "Aggiornamento causali gia' presenti " + ITEM "N|No" + ITEM "D|Descr." + ITEM "T|Tutto" +END + +LIST F_AGGCLIFO 6 +BEGIN + PROMPT 1 11 "Aggiornamento Clienti/Fornitori gia' presenti " + ITEM "N|No" + ITEM "D|Descr." + ITEM "T|Tutto" +END + +LIST F_AGGPCON 6 +BEGIN + PROMPT 1 12 "Aggiornamento voci Piano dei Conti gia' presenti " + ITEM "N|No" + ITEM "D|Descr." + ITEM "T|Tutto" +END + +LIST F_AGGIVD 6 +BEGIN + PROMPT 1 13 "Aggiornamento classi Piano dei Conti " + ITEM "N|No" + ITEM "D|Descr." + ITEM "T|Tutto" +END + +BOOLEAN F_FATTEM +BEGIN + PROMPT 1 14 "Riattribuzione num. protocollo su fatture emesse " +END + +BOOLEAN F_FATTRIC +BEGIN + PROMPT 1 15 "Riattribuzione num. protocollo su fatture ricevute " +END + +BUTTON DLG_OK 9 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 9 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK