From 1d7bc3d6b0a073b761ec1da73b2215a632d3d4bd Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 11 Mar 2008 16:48:19 +0000 Subject: [PATCH] Patch level : 4.0 905 Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 patch 1092 git-svn-id: svn://10.65.10.50/trunk@16297 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg0200.h | 2 + cg/cg0200a.uml | 35 ++-- cg/cg0400.cpp | 16 +- cg/cg2100.cpp | 55 ++++-- cg/cg2100.h | 14 +- cg/cg2102.cpp | 4 +- cg/cg2103.cpp | 3 + cg/cg2106.cpp | 2 +- cg/cg2107.cpp | 6 +- cg/cg21cg.uml | 2 - cg/cg21iva.uml | 68 ++++--- cg/cg2200.cpp | 2 +- cg/cg3900.cpp | 511 ++++++++++++++++++++++++++++++++++++++++-------- cg/cg3900a.h | 4 + cg/cg3900a.rep | 4 +- cg/cg3900a.uml | 63 +++++- cg/cg4304.cpp | 14 +- cg/cg4400.cpp | 41 +++- cg/cg6100.cpp | 2 +- cg/cg6400.cpp | 99 +++++----- cg/cg6600.cpp | 7 +- cg/cg6800.cpp | 2 +- cg/cg6900.cpp | 111 ++++++----- cg/cg6900.h | 13 +- cg/cg6902.cpp | 80 ++++---- cg/cg6903.cpp | 2 +- cg/cg6904.cpp | 36 ++-- cg/cglib01.cpp | 17 +- cg/cglib03.cpp | 22 ++- cg/cglib04.cpp | 160 +++++++-------- cg/cglib04.h | 27 ++- cg/cgpagame.cpp | 94 +++++---- cg/cgprassi.hlp | Bin 206106 -> 0 bytes cg/cgtrc.ini | 5 +- cg/cgtrcpc.ini | 1 + cg/f20.dir | 2 +- cg/f20.trr | 7 +- cg/f25.dir | 2 +- cg/f25.trr | 3 +- cg/prassid.doc | 83 -------- cg/prassis.doc | 29 --- 41 files changed, 1007 insertions(+), 643 deletions(-) delete mode 100755 cg/cgprassi.hlp delete mode 100755 cg/prassid.doc delete mode 100755 cg/prassis.doc diff --git a/cg/cg0200.h b/cg/cg0200.h index 0aec1ed9d..06acccd38 100755 --- a/cg/cg0200.h +++ b/cg/cg0200.h @@ -164,6 +164,8 @@ #define F_MAIL 303 #define DLG_OGGETTI 304 #define F_DIRTY 305 +#define F_BYMAIL 306 +#define F_DOCMAIL 307 ////////////////////////////////////// diff --git a/cg/cg0200a.uml b/cg/cg0200a.uml index 9034bc999..c53b5c818 100755 --- a/cg/cg0200a.uml +++ b/cg/cg0200a.uml @@ -45,7 +45,7 @@ BEGIN FIELD CODCF FLAGS "GR" KEY 1 - USE LF_CLIFO KEY 1 + USE LF_CLIFO INPUT TIPOCF F_TIPOCF SELECT INPUT CODCF F_CODCF DISPLAY "Codice@6R" CODCF @@ -412,7 +412,7 @@ BEGIN GROUP 6 END -GROUPBOX DLG_NULL 76 8 +GROUPBOX DLG_NULL 76 10 BEGIN PROMPT 1 4 "Numeri telefonici" END @@ -491,14 +491,29 @@ BEGIN FIELD MAIL END -GROUPBOX DLG_NULL 76 4 +BOOLEAN F_BYMAIL BEGIN - PROMPT 1 12 "Percipiente" + PROMPT 2 11 "Consenso spedizione documenti per posta elettronica" + FIELD BYMAIL + MESSAGE FALSE CLEAR,F_DOCMAIL + MESSAGE TRUE ENABLE,F_DOCMAIL +END + +STRING F_DOCMAIL 50 +BEGIN + PROMPT 2 12 "Indirizzo doc." + FIELD DOCMAIL + CHECKTYPE REQUIRED +END + +GROUPBOX DLG_NULL 76 6 +BEGIN + PROMPT 1 14 "Dati Percipiente/Nascita" END LIST F_TIPOAPER 1 15 BEGIN - PROMPT 2 13 "Tipo " + PROMPT 2 15 "Tipo " FIELD TIPOAPER FLAGS "D" ITEM "F|Fisica" @@ -507,7 +522,7 @@ END NUMBER F_CODANAGPER 5 BEGIN - PROMPT 61 13 "Codice " + PROMPT 59 15 "Codice " FIELD CODANAGPER FLAGS "R" GROUP 4 @@ -527,7 +542,7 @@ END STRING F_RAGSOC1 50 BEGIN - PROMPT 2 14 "Ragione sociale " + PROMPT 2 16 "Ragione sociale " GROUP 4 USE LF_ANAG KEY 2 INPUT TIPOA F_TIPOAPER SELECT @@ -539,12 +554,6 @@ BEGIN ADD RUN ba4 -1 #F_TIPOAPER END -GROUPBOX DLG_NULL 76 4 -BEGIN - PROMPT 1 16 "Dati di nascita" - GROUP 5 -END - DATE F_DATANASC BEGIN PROMPT 2 17 "Data " diff --git a/cg/cg0400.cpp b/cg/cg0400.cpp index b6378a498..353a998ca 100755 --- a/cg/cg0400.cpp +++ b/cg/cg0400.cpp @@ -1236,7 +1236,21 @@ void TProgressivi_iva::setta_intestazione() r++; if (_livelloprog == 1) set_header(r++, "IVA %s",(const char*) _codivamsk); - else set_header(r++, FR("ATTIVITA' %s"),(const char*)_codattmsk); + else + { + if (_annoiva > 2007) + { + TString key; + + key.format("%ld|%s", _codditta, (const char *)_codattmsk); + const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO); + + set_header(r++, FR("ATTIVITA' %s"), (const char*) codateco); + + } + else + set_header(r++, FR("ATTIVITA' %s"),(const char*) _codattmsk); + } set_header(++r, FR("@31gImponibile@64gImposta")); } diff --git a/cg/cg2100.cpp b/cg/cg2100.cpp index 87601e150..edc924861 100755 --- a/cg/cg2100.cpp +++ b/cg/cg2100.cpp @@ -305,6 +305,11 @@ bool TPrimanota_application::read_caus(const char* cod, int year) const long protiva = causale().reg().protocol() + 1; m->set(F_PROTIVA, protiva, true); // Aggiorna protocollo IVA } + + const bool show_notevar = iva == iva_vendite || iva == iva_acquisti; + TSheet_field& ivasheet = m->sfield(F_SHEETIVA); + ivasheet.enable_column(IVA_NOTAVARECF, show_notevar); + ivasheet.sheet_mask().enable(IVA_NOTAVARECF, show_notevar); } if (ins && !ci_sono_importi()) @@ -741,9 +746,24 @@ void TPrimanota_application::init_insert_mode(TMask& m) ini2mask(ini, m, false); // Controllo se e' stato salvato il campo virtuale col codice IVA - const TString& codiva = ini.get("CODIVA", "23"); - if (!codiva.empty()) - m.set(F_CODIVA, codiva, 3); + if (m.id2pos(F_CODIVA) > 0) + { + const TString& codiva = ini.get("CODIVA", "23"); + if (codiva.full()) + m.set(F_CODIVA, codiva, 3); + } + + // Devo ricalcolare il numero di protocollo nel caso di cambio causale al volo + if (m.id2pos(F_PROTIVA) > 0) + { + if (causale().iva() != nessuna_iva) + { + const long protiva = causale().reg().protocol() + 1; + m.set(F_PROTIVA, protiva, true); // Aggiorna protocollo IVA + } + else + m.reset(F_PROTIVA); + } xvt_fsys_removefile(tmp); } @@ -952,6 +972,7 @@ int TPrimanota_application::read(TMask& m) TBill c; c.get(r); c.add_to(riga, 4, 0x7); // Conto 105-110 + riga.add(r.get(RMI_NAVP)); } calcola_imp(); // Calcola totale imponibile ed imposte @@ -961,7 +982,7 @@ int TPrimanota_application::read(TMask& m) pags().reset(); // Azzera sheet rate if (!read_scadenze(m)) // Se non esiste fattura { - const TString dd(m.get(F_DATADOC)); + const TString& dd = m.get(F_DATADOC); set_pagamento(NULL, dd); // Ignora codice pagamento in testata } } @@ -1004,14 +1025,13 @@ void TPrimanota_application::mask2rel(const TMask& m) _rel->destroy_rows(numreg); // Destroy all records cgs_pack(); // Destroy all null rows - TArray& rows = cgs().rows_array(); - // Controlla se e' un movimento con righe contabili if (iva() == nessuna_iva || !m.get_bool(F_SOLAIVA)) { + TString_array& rows = cgs().rows_array(); for (int i = 0; i < rows.items(); i++) { - TToken_string& row = (TToken_string&)rows[i]; + TToken_string& row = rows.row(i); TImporto n; n = row; const TBill conto(row, 2, 0x3); @@ -1101,12 +1121,11 @@ void TPrimanota_application::mask2rel(const TMask& m) const bool intra = causale().intra(); - TArray& irows = ivas().rows_array(); ivas_pack(); - + TString_array& irows = ivas().rows_array(); for (int i = 0; i < irows.items(); i++) { - TToken_string& row = (TToken_string&)irows[i]; + TToken_string& row = irows.row(i); TRectype &r = _rel->iva(i); r.zero(); @@ -1128,26 +1147,24 @@ void TPrimanota_application::mask2rel(const TMask& m) r.put(RMI_IMPOSTA, imposta); r.put(RMI_TIPOCR, row.get()); - r.put("CODCMS", row.get(10)); - r.put("FASCMS", row.get(11)); // Roba obsoleta allo stato brado const TBill c(row, 6); const int rimp = bill2pos(c, 'I')+1; r.put(RMI_RIGAIMP, rimp); c.put(r); + r.put(RMI_NAVP, row.get(10)); } } void TPrimanota_application::check_saldi() { + const int anno = _rel->curr().get_int(MOV_ANNOES); + TString_array& rows = cgs().rows_array(); - const int anno = _rel->curr().get_int("ANNOES"); - - for (int i = 0; i < rows.items(); i++) + FOR_EACH_ARRAY_ROW(rows, i, row) { - TToken_string& row = (TToken_string&)rows[i]; - TBill conto(row, 2, 0x3); + TBill conto(*row, 2, 0x3); conto.find(); const char sez = conto.sezione(); if (sez > ' ') @@ -1839,7 +1856,7 @@ bool TPrimanota_application::link_cesp(const TMask& msk, const char* action) if (!fexist("ce1.exe")) return false; - // Cerca una riga con tipo costo/ricavo 2,3,4,8 + // Cerca una riga con tipo costo/ricavo 2,3,4 int i; for (i = _rel->cg_items()-1; i >= 0; i--) @@ -1847,7 +1864,7 @@ bool TPrimanota_application::link_cesp(const TMask& msk, const char* action) const TRectype& rec = _rel->cg(i); const TBill zio(rec); char tipo_cr = char('0' + zio.tipo_cr()); - if (strchr("2348", tipo_cr)) + if (strchr("234", tipo_cr)) break; } if (i < 0) diff --git a/cg/cg2100.h b/cg/cg2100.h index f781b3009..01d0ef3d0 100755 --- a/cg/cg2100.h +++ b/cg/cg2100.h @@ -83,6 +83,18 @@ #define CG_ROWTYPE 115 #define CG_MASTRINO 200 +// Sheet IVA +#define IVA_IMPONIBILE 101 +#define IVA_CODIVA 102 +#define IVA_INDETRAIBILE 103 +#define IVA_IMPOSTA 104 +#define IVA_TIPOCOSTORIC 105 +#define IVA_TIPO 106 +#define IVA_GRUPPO 107 +#define IVA_CONTO 108 +#define IVA_SOTTOCONTO 109 +#define IVA_NOTAVARECF 111 + // Campi ripetuti sulla seconda pagina #define H_DATAREG 201 #define H_NUMREG 202 @@ -156,4 +168,4 @@ #define K_ANNOES 415 #define K_DATACOMP 416 -#endif \ No newline at end of file +#endif diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index d0febf269..4efec06cd 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -1986,7 +1986,7 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key) provv << c.provvisorio(); m.set(F_PROVVISORIO, provv); - if (c.iva() != nessuna_iva) + if (c.iva() != nessuna_iva && m.id2pos(F_SOLAIVA) > 0) m.set(F_SOLAIVA, c.soloiva() ? "X" : " "); return true; } @@ -3179,4 +3179,4 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key) shiva.force_update(); } return true; -} \ No newline at end of file +} diff --git a/cg/cg2103.cpp b/cg/cg2103.cpp index f386fecd7..ff1adc2e0 100755 --- a/cg/cg2103.cpp +++ b/cg/cg2103.cpp @@ -153,6 +153,9 @@ const TString& TCausale::tipo_doc() const int TCausale::tipomov() const { return _rec.get_int(CAU_TIPOMOV); } +const TString& TCausale::tipodoc() const +{ return _rec.get(CAU_TIPODOC); } + bool TCausale::saldaconto(const TDate& datareg) const { static TDate _data_sal(8,8,3); diff --git a/cg/cg2106.cpp b/cg/cg2106.cpp index 24e8fbeef..343ea9b88 100755 --- a/cg/cg2106.cpp +++ b/cg/cg2106.cpp @@ -349,7 +349,7 @@ bool TPrimanota_application::aggiusta_prorata() if (annodoc < 1900) annodoc = _msk[2]->get_int(F_ANNOIVA); const real prorata_attuale = reg.prorata(annodoc); - const real vecchio_prorata = prorata_attuale < 100.0 ? 100.0 : 0.0; + const real vecchio_prorata = prorata_attuale < CENTO ? CENTO : ZERO; TSheet_field& iva_sheet = ivas(); TString_array& righe_iva = iva_sheet.rows_array(); diff --git a/cg/cg2107.cpp b/cg/cg2107.cpp index bc7bbe50e..eaf140bb4 100755 --- a/cg/cg2107.cpp +++ b/cg/cg2107.cpp @@ -454,13 +454,15 @@ void TEasySolder_mask::set_imp(short id, const TImporto& imp) { TEdit_field& e = efield(id); CHECK(e.size() >= 15, "Campo troppo piccolo per contenere un importo"); - TString80 str; if (!imp.is_zero()) { const TCurrency c(imp.valore()); + TString80 str; str << c.string(true) << ' ' << imp.sezione(); + e.set(str); } - e.set(str); + else + e.reset(); } diff --git a/cg/cg21cg.uml b/cg/cg21cg.uml index 3ffb006ad..2cc1939d6 100755 --- a/cg/cg21cg.uml +++ b/cg/cg21cg.uml @@ -353,8 +353,6 @@ END BUTTON DLG_DELREC 10 2 BEGIN PROMPT -34 -1 "Elimina" - PICTURE BMP_DELREC - PICTURE BMP_DELRECDN MESSAGE EXIT,K_DEL END diff --git a/cg/cg21iva.uml b/cg/cg21iva.uml index 85596b57c..32f96a625 100755 --- a/cg/cg21iva.uml +++ b/cg/cg21iva.uml @@ -5,18 +5,18 @@ BEGIN PROMPT 1 1 "@BImposta" END -STRING 102 4 +STRING IVA_CODIVA 4 BEGIN PROMPT 2 2 "IVA " HELP "Codice IVA della riga" FLAGS "U" USE %IVA - INPUT CODTAB 102 + INPUT CODTAB IVA_CODIVA DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0 DISPLAY "%@6" R0 DISPLAY "Tipo" S1 - OUTPUT 102 CODTAB + OUTPUT IVA_CODIVA CODTAB OUTPUT 158 S0 CHECKTYPE NORMAL WARNING "Codice IVA assente" @@ -29,15 +29,15 @@ BEGIN FLAGS "D" END -STRING 103 1 +STRING IVA_INDETRAIBILE 1 BEGIN PROMPT 2 3 "Indetraibilita' " USE %DET - INPUT CODTAB 103 + INPUT CODTAB IVA_INDETRAIBILE DISPLAY "Codice" CODTAB DISPLAY "Tipo" I0 DISPLAY "Descrizione@50" S0 - OUTPUT 103 CODTAB + OUTPUT IVA_INDETRAIBILE CODTAB OUTPUT 99 S0 CHECTYPE NORMAL FLAGS "U" @@ -49,12 +49,12 @@ BEGIN FLAGS "D" END -CURRENCY 101 18 +CURRENCY IVA_IMPONIBILE 18 BEGIN PROMPT 2 4 "Imponibile " END -CURRENCY 104 18 +CURRENCY IVA_IMPOSTA 18 BEGIN PROMPT 48 4 "Imposta " HELP "Importo dell'IVA. Se e' nullo, col tasto F8 si puo' effettuare lo scorporo" @@ -65,7 +65,7 @@ BEGIN PROMPT 1 6 "@BConto" END -LIST 106 1 12 +LIST IVA_TIPO 1 12 BEGIN PROMPT 2 7 "Tipo " HELP "Tipo del conto" @@ -79,27 +79,27 @@ BEGIN FLAGS "U" END -NUMBER 107 3 +NUMBER IVA_GRUPPO 3 BEGIN PROMPT 22 7 "Gruppo " HELP "Codice del gruppo" FIELD GRUPPO END -NUMBER 108 3 +NUMBER IVA_CONTO 3 BEGIN PROMPT 38 7 "Conto " FIELD CONTO USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="") - INPUT GRUPPO 107 - INPUT CONTO 108 + INPUT GRUPPO IVA_GRUPPO + INPUT CONTO IVA_CONTO DISPLAY "Gruppo" GRUPPO DISPLAY "Conto" CONTO DISPLAY "Descrizione@50" DESCR DISPLAY "Tipo" TMCF - OUTPUT 106 TMCF - OUTPUT 107 GRUPPO - OUTPUT 108 CONTO + OUTPUT IVA_TIPO TMCF + OUTPUT IVA_GRUPPO GRUPPO + OUTPUT IVA_CONTO CONTO OUTPUT 110 DESCR ADD RUN cg0 -0 MESSAGE DIRTY,109|DIRTY,209|DIRTY,309 @@ -108,26 +108,26 @@ BEGIN END -NUMBER 109 6 +NUMBER IVA_SOTTOCONTO 6 BEGIN PROMPT 55 7 "Sottoconto " FIELD SOTTOCONTO USE LF_PCON SELECT SOTTOCONTO!="" - INPUT GRUPPO 107 - INPUT CONTO 108 - INPUT SOTTOCONTO 109 + INPUT GRUPPO IVA_GRUPPO + INPUT CONTO IVA_CONTO + INPUT SOTTOCONTO IVA_SOTTOCONTO DISPLAY "Gruppo" GRUPPO DISPLAY "Conto" CONTO DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "Descrizione@50" DESCR DISPLAY "C/R" TIPOSPRIC - OUTPUT 109 SOTTOCONTO - OUTPUT 107 GRUPPO - OUTPUT 108 CONTO + OUTPUT IVA_SOTTOCONTO SOTTOCONTO + OUTPUT IVA_GRUPPO GRUPPO + OUTPUT IVA_CONTO CONTO OUTPUT 110 DESCR ADD RUN cg0 -0 CHECKTYPE NORMAL - VALIDATE REQIF_FUNC 1 101 + VALIDATE REQIF_FUNC 1 IVA_IMPONIBILE WARNING "Sottoconto assente" END @@ -147,8 +147,8 @@ BEGIN OUTPUT 210 RAGSOC CHECKTYPE NORMAL ADD RUN cg0 -1 C - MESSAGE COPY,109 - VALIDATE REQIF_FUNC 1 101 + MESSAGE COPY,IVA_SOTTOCONTO + VALIDATE REQIF_FUNC 1 IVA_IMPONIBILE WARNING "Cliente assente" END @@ -165,8 +165,8 @@ BEGIN OUTPUT 310 RAGSOC CHECKTYPE NORMAL ADD RUN cg0 -1 F - MESSAGE COPY,109 - VALIDATE REQIF_FUNC 1 101 + MESSAGE COPY,IVA_SOTTOCONTO + VALIDATE REQIF_FUNC 1 IVA_IMPONIBILE WARNING "Fornitore assente" END @@ -181,7 +181,7 @@ BEGIN DISPLAY "Conto" CONTO DISPLAY "Sottoconto" SOTTOCONTO DISPLAY "C/R" TIPOSPRIC - COPY OUTPUT 109 + COPY OUTPUT IVA_SOTTOCONTO CHECKTYPE NORMAL ADD RUN cg0 -0 END @@ -220,7 +220,7 @@ BEGIN CHECKTYPE SEARCH END -LIST 105 1 51 +LIST IVA_TIPOCOSTORIC 1 51 BEGIN PROMPT 2 9 "Tipo Costo/Ricavo " ITEM " |0. Acquisti o vendite in genere" @@ -235,6 +235,12 @@ BEGIN HELP "Tipo Costo/Ricavo del conto" END +BOOLEAN IVA_NOTAVARECF +BEGIN + PROMPT 2 15 "Nota di variazione riferita ad anni precedenti (per Elenco Clienti/Fornitori)" + FIELD NOTAVARECF +END + BUTTON DLG_OK 10 2 BEGIN PROMPT -13 -1 "" @@ -248,8 +254,6 @@ END BUTTON DLG_DELREC 10 2 BEGIN PROMPT -33 -1 "Elimina" - PICTURE BMP_DELREC - PICTURE BMP_DELRECDN MESSAGE EXIT,K_DEL END diff --git a/cg/cg2200.cpp b/cg/cg2200.cpp index 9402cf5a9..091801679 100755 --- a/cg/cg2200.cpp +++ b/cg/cg2200.cpp @@ -267,7 +267,7 @@ void TProvvisori_app::inizia_saldi(const TRectype& r) _saldi.reset(); tiposal tsal = normale; - const TString16 c = r.get(MOV_CODCAUS); + const TString4 c = r.get(MOV_CODCAUS); if (c.not_empty()) { const TRectype& cau = cache().get(LF_CAUSALI, c); diff --git a/cg/cg3900.cpp b/cg/cg3900.cpp index 7fd693c74..89c585d66 100755 --- a/cg/cg3900.cpp +++ b/cg/cg3900.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -112,15 +113,22 @@ TVariant TAllegato_info::get(const TString& field) const } else if (field == COM_DENCOM || field == COM_PROVCOM) { - TString8 key; - key << get(CLI_STATOCF) << '|' << get(CLI_COMCF); + TToken_string key; + key << get(CLI_STATOCF); + const bool italy = key.blank() || key == "IT"; + key << '|' << get(CLI_COMCF); var = cache().get(LF_COMUNI, key, field); - if (var.is_empty() && key[0] == '|') // Ritento col CAP per gli Italiani + if (var.is_empty() && italy) // Ritento col CAP per gli Italiani { key = " |"; key << cap2comune(get(CLI_CAPCF).as_string(), get(CLI_LOCCF).as_string()); var = cache().get(LF_COMUNI, key, field); } + if (var.is_empty() && field == COM_PROVCOM) + { + if (!italy || key.get_char(1) == 'Z') + var = "EE"; + } } else { @@ -187,12 +195,7 @@ void TAllegato_info::key(TString& tmp) const { tmp = get(CLI_COFI).as_string(); if (tmp.blank()) - { - if (occasionale()) - tmp = _occas; - else - tmp = _codice; - } + tmp.cut(0) << _codice; } tmp.insert(_tipo == 'F' ? "F|" : "C|"); } @@ -273,7 +276,8 @@ class TPadoaSchioppa_set : public TAS400_recordset void add_trc(int trc); protected: - int primo_campo_libero(); + int primo_campo_libero(); // Posizione primo campo libero per record 1 e 2 + void init_trc(); // Constructor helper public: long new_rec(int tiporec); // 0, 1, 2, 3, 9, -1 (1 o 2 a seconda del tipo corrente) @@ -290,6 +294,7 @@ public: bool set(int fldcode, const TVariant& val); TPadoaSchioppa_set(); + TPadoaSchioppa_set(const TFilename& name); }; long TPadoaSchioppa_set::new_rec(int tiporec) @@ -309,7 +314,6 @@ void TPadoaSchioppa_set::add_field(int trc, int da, int a, int lung, const char* { CHECKS(da > 0 && a >= da, "Posizioni incoerenti sul campo ", name); CHECKS(lung == a-da+1, "Lunghezza incoerente sul campo ", name); - CHECKS(lung == a-da+1, "Lunghezza incoerente sul campo ", name); TString80 field; field.format("%d.%s", trc, (const char*)name); TFieldtypes ft = _alfafld; @@ -356,7 +360,7 @@ void TPadoaSchioppa_set::add_trc(int trc) case 0: // Testata case 9: // Coda add_field(trc, 2, 4, 3, "IndentificativoFornitura", AN, true, "ECF"); - add_field(trc, 5, 6, 2, "IdentificativoAnno" , AN, true, "00"); + add_field(trc, 5, 6, 2, "IdentificativoAnno" , NU, true, "00"); add_field(trc, 7, 8, 2, "CodiceFornitura" , NU, true, "38"); add_field(trc, 9, 24, 16, "CodiceFiscale" , CF, true); add_field(trc, 25, 35, 11, "PartitaIVA" , PI, true); @@ -416,16 +420,6 @@ void TPadoaSchioppa_set::add_trc(int trc) add_field(trc,1799,1800, 2, "FineRiga" , AN, true, "\r\n"); // 0D 0A } -TPadoaSchioppa_set::TPadoaSchioppa_set() - : TAS400_recordset("AS400(1800,1)") -{ - add_trc(0); - add_trc(1); - add_trc(2); - add_trc(3); - add_trc(9); -} - int TPadoaSchioppa_set::primo_campo_libero() { const TToken_string& curr = row(-1); // Record corrente @@ -521,7 +515,7 @@ bool TPadoaSchioppa_set::set(const char* name, const TDate& value) // Usata per 1001, 2001 e 3001 bool TPadoaSchioppa_set::set(int fldcode, const TString& val) { - CHECKD(fldcode >= 1001 && fldcode <= 3001, "Codice campo non valido", fldcode); + CHECKD(fldcode >= 1001 && fldcode <= 3001, "Codice campo non valido ", fldcode); CHECKD(val.full(), "Campo non posizionale vuoto ", fldcode); const int tiporec = atoi(rec_type()); @@ -534,7 +528,7 @@ bool TPadoaSchioppa_set::set(int fldcode, const TString& val) // Usata solo per 1001 bool TPadoaSchioppa_set::set(int fldcode, long val) { - CHECKD(fldcode == 1001, "Codice campo non valido", fldcode); + CHECKD(fldcode == 1001, "Codice campo non valido ", fldcode); CHECKD(val > 0, "Campo non posizionale vuoto ", fldcode); TString16 value; value.format("%16ld", val); @@ -544,7 +538,7 @@ bool TPadoaSchioppa_set::set(int fldcode, long val) // Usata dal 4001 in poi bool TPadoaSchioppa_set::set(int fldcode, const TVariant& val) { - CHECKD(fldcode >= 4001 && fldcode <= 13001, "Codice campo non valido", fldcode); + CHECKD(fldcode >= 4001 && fldcode <= 13001, "Codice campo non valido ", fldcode); if (val.is_zero()) return true; @@ -554,6 +548,28 @@ bool TPadoaSchioppa_set::set(int fldcode, const TVariant& val) return set(field, val); } +void TPadoaSchioppa_set::init_trc() +{ + add_trc(0); + add_trc(1); + add_trc(2); + add_trc(3); + add_trc(9); +} + +TPadoaSchioppa_set::TPadoaSchioppa_set() + : TAS400_recordset("AS400(1800,1)") +{ + init_trc(); +} + +TPadoaSchioppa_set::TPadoaSchioppa_set(const TFilename& name) + : TAS400_recordset("AS400(1800,1)") +{ + init_trc(); + load_file(name); +} + /////////////////////////////////////////////////////////// // TCodiva_cache /////////////////////////////////////////////////////////// @@ -672,6 +688,27 @@ TAlleg_report::TAlleg_report(TRecordset* rs, const TMask& am, bool hide_not_alle set_recordset(rs); } +/////////////////////////////////////////////////////////// +// TAlleg_log +/////////////////////////////////////////////////////////// + +class TAlleg_log : public TLog_report +{ + bool _red_alert; + +public: + virtual bool log(int severity, const char* msg); + bool red_alert() const { return _red_alert; } + TAlleg_log() : TLog_report(TR("Errori riscontrati")), _red_alert(false) {} +}; + +bool TAlleg_log::log(int severity, const char* msg) +{ + if (severity > 0) + _red_alert = true; + return TLog_report::log(severity, msg); +} + /////////////////////////////////////////////////////////// // TAlleg_mask /////////////////////////////////////////////////////////// @@ -680,7 +717,6 @@ class TAlleg_mask : public TAutomask { TCodiva_cache _codiva; TCausali_cache _causali; - bool _red_alert; protected: // TAutomask virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); @@ -691,21 +727,30 @@ protected: // Elaborazione bool documento_corrispettivi(const TString& tipodoc) const; int imp_iva(char tipocf, bool non_esposti, const TRecordset& riga, real& imp, real& iva); real indetraibile_al(const TRecordset& riga, bool prorata100) const; - bool scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool strict); + bool scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool invio, bool ministeriale); TRecordset* new_recordset(char tipocf = ' ', bool strict = false); void log_error(const char* ragsoc, const char* msg1, const char* msg2, - TLog_report& errlog, int severity = 2); + TAlleg_log& errlog, int severity = 2); void log_error(const TRecordset& clifo, const char* msg1, const char* msg2, - TLog_report& errlog, int severity = 2); + TAlleg_log& errlog, int severity = 2); void copia_importo(const TRecordset& clifo, const char* fldname, TPadoaSchioppa_set& pss, int fldcode) const; - void add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log); - void add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TLog_report& log); +protected: // Generazione + bool build_output_name(TFilename& fname) const; + void add_0_9(int trc, TPadoaSchioppa_set& pss, TAlleg_log& log); + void add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TAlleg_log& log); void add_3(TPadoaSchioppa_set& pss); + bool show_errors(TAlleg_log& log) const; void generazione(); +protected: // Fusione + bool test_file(const TFilename& name, TString& error) const; + void import_clifo(const TFilename& name, TAssoc_array& clips, TAssoc_array& forps, TAlleg_log& log); + TRecnotype export_clifo(int tiporec, TAssoc_array& clifo, TAllegati_set& all, TPadoaSchioppa_set& pss); + void fusione(); + public: TAlleg_mask(); ~TAlleg_mask(); @@ -754,7 +799,8 @@ int TAlleg_mask::imp_iva(char tipocf, bool non_esposti, const TRecordset& riga, return allegato; } -bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool invio) +bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, + bool invio, bool ministeriale) { // Informazioni base sul cliente in testata: vengono ignorati gli importi const TAllegato_info clifo(mov); @@ -813,24 +859,23 @@ bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool const bool non_esposti = movintra || reverse_charge; const bool prorata100 = caus.reg().prorata100(annoiva); - bool anno_prec = false; // In attesa di modifiche a prima nota - if (get(F_ALGO) == "R") - anno_prec = datadoc.year() == anno-1; // Serve per quadrature - - TAllegato_importi& allimp = ai->importi(anno_prec); - TISAM_recordset righe_iva("USE RMOVIVA\nFROM NUMREG=#NR\nTO NUMREG=#NR"); righe_iva.set_var("#NR", mov.get(MOV_NUMREG)); real imponibile, imposta, indecifrabile; for (bool ok = righe_iva.move_first(); ok; ok = righe_iva.move_next()) { + bool anno_prec = false; + if (ministeriale) + anno_prec = righe_iva.get(RMI_NAVP).as_bool(); + else + anno_prec = datadoc.year() == anno-1; // Serve per quadrature + TAllegato_importi& allimp = ai->importi(anno_prec); + const int allegato = imp_iva(clifo.tipo(), non_esposti, righe_iva, imponibile, imposta); switch (allegato) { - case 1: allimp._imp += imponibile; - allimp._iva += imposta; - break; + case 1: allimp._imp += imponibile; allimp._iva += imposta; break; case 2: allimp._impNI += imponibile; break; case 3: allimp._impES += imponibile; break; case 4: allimp._ivaNE += imponibile; break; // Importi con IVA non esposta @@ -845,7 +890,7 @@ bool TAlleg_mask::scan_iva_rows(const TRecordset& mov, TAssoc_array& clifi, bool // algo: R=data Registrazione; D=data Documento TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio) { - const int algo_dick = get(F_ALGO) == "D"; + const bool ministeriale = get(F_ALGO) == "D"; // Compito: tradurre in ISAM la seguente query: // SELECT * FROM MOV @@ -853,7 +898,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio) // ORDER BY TIPO,CODCF; TString query = "USE MOV KEY 3"; // La chiave 3 e' TIPO+CODCF+DATAREG+NUMREG query << "\nSELECT "; - if (algo_dick) + if (ministeriale) query << "(ANNOIVA>=#ANNO)"; // Seleziona dall'anno desiderato in poi else query << "(ANNOIVA==#ANNO)"; // Seleziona solo l'anno desiderato @@ -895,7 +940,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio) continue; // Controllo inutilmente anche il tipo documento - const TString& tipodoc = caus.tipo_doc(); + const TString& tipodoc = caus.tipodoc(); if (documento_corrispettivi(tipodoc)) continue; @@ -909,8 +954,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio) if (keep) keep = (tipocf == 'C') ^ (tipoiva == iva_acquisti); // compatibile - // Cavolata interpretativa tipicamente italiana - if (keep && algo_dick) + if (keep && ministeriale) { const int annodoc = mov.get(MOV_DATADOC).as_date().year(); const bool is_nota = (tipodoc=="NC") || (tipodoc=="ND"); @@ -920,7 +964,7 @@ TRecordset* TAlleg_mask::new_recordset(char tipocf, bool invio) if (!keep) continue; - scan_iva_rows(mov, clifi, invio); + scan_iva_rows(mov, clifi, invio, ministeriale); } TAllegati_set* hullygully = new TAllegati_set; @@ -945,7 +989,7 @@ const TRectype& TAlleg_mask::contribuente() const return anag; } -void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log) +void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TAlleg_log& log) { pss.new_rec(trc); @@ -960,7 +1004,7 @@ void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log) else { if (pariva[0] == '8' || pariva[0] == '9') - log_error(ragsoc, TR("** Verificare esenzione dall'invio degli elenchi"), pariva, log, 2); + log_error(ragsoc, TR("* Verificare esenzione dall'invio degli elenchi"), pariva, log, 2); } const TString16 codfis = anag.get(ANA_COFI); @@ -1000,11 +1044,15 @@ void TAlleg_mask::add_0_9(int trc, TPadoaSchioppa_set& pss, TLog_report& log) pss.set("ComuneSedeLegale", comres.get(COM_DENCOM)); pss.set("ProvinciaSedeLegale", comres.get(COM_PROVCOM)); } - pss.set("AnnoRiferimento", get(F_ANNO)); + + const long anno = get_int(F_ANNO); + pss.set("IdentificativoAnno", TVariant(anno-2006L)); // 00=2006, 01=2007, 02=2008, ... + pss.set("AnnoRiferimento", TVariant(anno)); // 2006, 2007, 2008, ... // Compilare solo se diverso da dichiarante pss.set("CodiceSoggettoObbligato", get(F_SOGG)); + // Dati dell'intermediario che si cucca 50 Euro senza fare una mazza! const TString& inter = get(F_INTR); if (inter.full()) { @@ -1067,7 +1115,6 @@ void TAlleg_mask::add_3(TPadoaSchioppa_set& pss) } } - void TAlleg_mask::copia_importo(const TRecordset& clifo, const char* fldname, TPadoaSchioppa_set& pss, int fldcode) const { @@ -1080,29 +1127,27 @@ void TAlleg_mask::copia_importo(const TRecordset& clifo, const char* fldname, } void TAlleg_mask::log_error(const char* ragsoc, const char* msg1, const char* msg2, - TLog_report& errlog, int severity) + TAlleg_log& errlog, int severity) { TString str; str << ragsoc << " - " << msg1; if (msg2 && *msg2) str << " : " << msg2; errlog.log(severity, str); - if (severity > 0) - _red_alert = true; } void TAlleg_mask::log_error(const TRecordset& clifo, const char* msg1, const char* msg2, - TLog_report& errlog, int severity) + TAlleg_log& errlog, int severity) { TString str; str << clifo.get("#RECORD.NUMBER") << ". " << clifo.get(CLI_TIPOCF) << clifo.get(CLI_CODCF) << ' ' << clifo.get(CLI_RAGSOC); - str.strip_double_spaces(); + str.strip_d_spaces(); log_error(str, msg1, msg2, errlog, severity); } -void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TLog_report& log) +void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, TAlleg_log& log) { const int anno = get_int(F_ANNO); const bool coffee = get_bool(F_COFI); // Codice fiscale voluto o obbligatorio @@ -1162,7 +1207,7 @@ void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, T else { if (paiv[0] == '8' || paiv[0] == '9') - log_error(clifo, TR("** Verificare esclusione della Parita IVA"), paiv, log, 1); + log_error(clifo, TR("* Verificare esclusione della Partita IVA"), paiv, log, 1); } pss.set(3001, paiv); // Partita IVA (obbligatoria dal 2006) @@ -1205,35 +1250,62 @@ void TAlleg_mask::add_1_2(int trc, TRecordset& clifo, TPadoaSchioppa_set& pss, T } } +bool TAlleg_mask::show_errors(TAlleg_log& log) const +{ + if (yesno_box(TR("Sono stati rilevati errori sulla fornitura:\nSi desidera visualizzarli?"))) + { + TReport_book errbuc; + errbuc.add(log); + errbuc.preview(); + } + return yesno_box(TR("Si desidera generare ugualmente la fornitura?")); +} + +// Pulisce e normalizza un nome di file +static bool normalize_name(TFilename& name) +{ + name.trim(); + if (name.not_empty()) + { + name.lower(); + name.replace('\\', '/'); + } + return name.not_empty(); +} + +// Estrae un nome di file pulito da una riga di spreadsheet +static bool row2name(const TToken_string& row, TFilename& name) +{ + row.get(0, name); + return normalize_name(name); +} + +bool TAlleg_mask::build_output_name(TFilename& fname) const +{ + fname = get(F_DIR); + fname.add(get(F_NAME)); + return normalize_name(fname); +} + void TAlleg_mask::generazione() { - _red_alert = false; - TLog_report log(TR("Errori riscontrati")); - - TReport_book book; TPadoaSchioppa_set pss; + TAlleg_log log; add_0_9(0, pss, log); // Testa TRecordset* cli = new_recordset('C', true); - - if (cli != NULL) + if (cli != NULL && cli->items()) { log.log(0, TR("CLIENTI")); add_1_2(1, *cli, pss, log); // Clienti - - TAlleg_report rep(cli, *this, true); - book.add(rep); } - TRecordset* ven = new_recordset('F', true); - if (ven != NULL) + TRecordset* acq = new_recordset('F', true); + if (acq != NULL && acq->items() > 0) { log.log(0, TR("FORNITORI")); - add_1_2(2, *ven, pss, log); // Fornitori - - TAlleg_report rep(ven, *this, true); - book.add(rep); + add_1_2(2, *acq, pss, log); // Fornitori } add_3(pss); // Totali Clienti e Fornitori @@ -1241,25 +1313,261 @@ void TAlleg_mask::generazione() add_0_9(9, pss, log); // Piede (= Testa) bool go_on = true; - if (_red_alert) + if (log.red_alert()) + go_on = show_errors(log); + if (go_on) { - if (yesno_box(TR("Sono stati rilevati errori sulla fornitura:\nSi desidera visualizzarli?"))) - { - TReport_book errbuc; - errbuc.add(log); - errbuc.preview(); - } - go_on = yesno_box("Si desidera generare ugualmente la fornitura?"); + TFilename fname; + if (build_output_name(fname)) + pss.save_as(fname); + + TReport_book book; + TAlleg_report clirep(cli, *this, true); + book.add(clirep); + TAlleg_report acqrep(acq, *this, true); + book.add(acqrep); + book.preview(); } + else + { + delete cli; + delete acq; + } +} + +void TAlleg_mask::import_clifo(const TFilename& name, + TAssoc_array& clips, TAssoc_array& forps, + TAlleg_log& log) +{ + TString error; + if (test_file(name, error)) + { + TPadoaSchioppa_set inps(name); + + TProgind pi(inps.items(), name, true, true); + TAssoc_array* cur_clifo = NULL; + for (bool ok = inps.move_first(); ok; ok = inps.move_next()) + { + if (!pi.addstatus(1)) + break; + const int trc = inps.rec_type()[0]-'0'; + if (trc == 1 || trc == 2) + { + TAssoc_array& clifo = trc == 1 ? clips : forps; + int i = 0, pos = 1; + const TString& rec = inps.curr_row(); + for (i = 0; i < npCount; i++, pos += npSize) // Scandisce i 70 campi non posizionali + { + const TString& fld = rec.mid(pos, npSize); + const TString8 code = fld.mid(2,6); + const int ncode = atoi(code); + if (ncode > 1000) + { + switch (ncode) + { + case 1001: // Inizia una nuova anagrafica + cur_clifo = NULL; + break; + case 3001: // Ho trovato la Partita IVA della nuova anagrafica + if (cur_clifo == NULL) + { + // Cerco l'anagrafica corrispondente alla Partita IVA + const TString16 piva = fld.mid(8); + cur_clifo = (TAssoc_array*)clifo.objptr(piva); + if (cur_clifo == NULL) // Se non la trovo ... + { + cur_clifo = new TAssoc_array; // ... allora la creo nuova + clifo.add(piva, cur_clifo); + } + } + else + log.log(2, "Dati inconsistenti"); + break; + default : + if (cur_clifo != NULL) + { + if (ncode > 4000) // Importi + { + const real imp = fld.mid(8); + const TVariant value(imp); // Impossibile fondere con riga precedente :-? + TVariant* tot = (TVariant*)cur_clifo->objptr(code); + if (tot != NULL) + tot->add(value); // Incremento importo precedente + else + cur_clifo->add(code, value); // Creo nuovo importo + } + else // Non importi: praticamente solo Codice Fiscale + { + const TVariant value(fld.mid(8)); + cur_clifo->add(code, value); + } + } + else + log.log(2, "Dati inconsistenti"); + break; + } + } + else + break; + } + } + } + } + else + { + error.replace('\n', ' '); + log.log(1, error); + } +} + + +TRecnotype TAlleg_mask::export_clifo(int tiporec, TAssoc_array& clifo, + TAllegati_set& all, TPadoaSchioppa_set& pss) +{ + TRecnotype count = 0; + if (!clifo.empty()) + { + pss.new_rec(tiporec); + FOR_EACH_ASSOC_OBJECT(clifo, cash, ckey, cobj) + { + const TVariant piva = ckey; + pss.set(1001, ++count); + pss.set(3001, piva.as_string()); + + all.new_rec(); + all.set(CLI_TIPOCF, tiporec == 1 ? "C" : "F"); + all.set(CLI_CODCF, count); + all.set(CLI_PAIV, piva); + + TString80 str = tiporec == 1 ? TR("Cliente") : TR("Fornitore"); + str << ' ' << count; + all.set(CLI_RAGSOC, (const char*)str); + + TAssoc_array& data = *(TAssoc_array*)cobj; + FOR_EACH_ASSOC_OBJECT(data, dash, dkey, dobj) + { + const int code = atoi(dkey); + const TVariant& var = *(TVariant*)dobj; + if (code > 4000) + { + pss.set(code, var); + if (tiporec == 1) // Clienti + { + switch (code) + { + case 4001: all.set("C_IMP", var); break; + case 4002: all.set("C_IVA", var); break; + case 5001: all.set("C_NI", var); break; + case 6001: all.set("C_ES", var); break; + case 7001: all.set("C_NE", var); break; + default : break; + } + } + else // Fornitori + { + switch (code) + { + case 4001: all.set("C_IMP", var); break; + case 4002: all.set("C_IVA", var); break; + case 5001: all.set("C_IND", var); break; + case 6001: all.set("C_NI", var); break; + case 7001: all.set("C_ES", var); break; + case 8001: all.set("C_NE", var); break; + default : break; + } + } + } + else + { + if (code != 1001 && code != 3001) // Gia' scritti da prima + pss.set(code, var.as_string()); + } + } + } + } + return count; +} + +void TAlleg_mask::fusione() +{ + TPadoaSchioppa_set pss; + TAlleg_log log; + + add_0_9(0, pss, log); // Testa + + TAssoc_array clips, forps; + TSheet_field& sheet = sfield(F_FUSION); + TFilename name; + FOR_EACH_SHEET_ROW(sheet, r, row) if (row2name(*row, name)) + { + TString error; + if (test_file(name, error)) + import_clifo(name, clips, forps, log); + else + log.log(1, error); + } + + TAllegati_set* all = new TAllegati_set; + export_clifo(1, clips, *all, pss); // Clienti + export_clifo(2, forps, *all, pss); // Fornitori + + add_3(pss); // Totali Clienti e Fornitori + add_0_9(9, pss, log); // Piede (= Testa) + + bool go_on = all->items() > 0; + if (log.red_alert()) + go_on = show_errors(log); if (go_on) { - TFilename fname = get(F_DIR); - fname.add(get(F_NAME)); + TFilename fname; + if (build_output_name(fname)) pss.save_as(fname); + TReport_book book; + TAlleg_report rep(all, *this, true); + book.add(rep); book.preview(); } + else + delete all; +} + +bool TAlleg_mask::test_file(const TFilename& name, TString& error) const +{ + TToken_string errors(80, ';'); + + error.cut(0); + if (!name.exist()) + errors = TR("non e' accessibile o inesistente"); + else + { + const TFixed_string ecf_ext("ecf"); + if (ecf_ext.compare(name.ext(), true) != 0) + errors.add(TR("non ha un'estensione valida (ECF)")); + + TFilename outname; build_output_name(outname); + if (name == outname) + errors.add(TR("ha lo stesso nome del file totale")); + + const long sz = fsize(name); + if (sz % 1800) + errors.add(TR("non ha una dimensione valida (multipla di 1800)")); + + ifstream ecf_file(name); + TString4 head; head.spaces(); + ecf_file.read(head.get_buffer(), head.size()); + if (!head.starts_with("0ECF")) + errors.add(TR("non ha un record di testata valido (0ECF)")); + } + + if (errors.full()) + { + error << '\'' << name << "' " << TR("non e' una fornitura valida") + << ":\n" << errors; + } + + return errors.empty(); } bool TAlleg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) @@ -1381,10 +1689,47 @@ bool TAlleg_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) if (e == fe_button) { if (check_fields()) + { + if (curr_page() == 0) generazione(); + else + fusione(); + } return false; } break; + case F_FUSION: + if (e == se_notify_modify) + { + TFilename name; + if (row2name(((TSheet_field&)o).row(jolly), name)) + { + TString error; + if (!test_file(name, error)) + return error_box(error); + } + } else + if (e == fe_close) + { + TSheet_field& s = (TSheet_field&)o; + TString error; + TFilename name1, name2; + FOR_EACH_SHEET_ROW(s, i, row1) if (row2name(*row1, name1)) + { + if (!test_file(name1, error)) + return error_box(error); + + FOR_EACH_SHEET_ROW(s, j, row2) if (j > i && row2name(*row2, name2)) + { + if (name1 == name2) + { + error.format("La riga %d e' duplicata nella riga %d", i+1, j+1); + return error_box(error); + } + } + } + } + break; default: break; } diff --git a/cg/cg3900a.h b/cg/cg3900a.h index 3e90e32b4..aeccf67bd 100755 --- a/cg/cg3900a.h +++ b/cg/cg3900a.h @@ -13,3 +13,7 @@ #define F_COMP 113 #define F_DATA 114 #define F_FILTRO 115 + +#define F_FUSION 201 +#define F_DIR2 204 +#define F_NAME2 205 diff --git a/cg/cg3900a.rep b/cg/cg3900a.rep index 5d4481246..9c745fff4 100755 --- a/cg/cg3900a.rep +++ b/cg/cg3900a.rep @@ -60,7 +60,7 @@ #INTERMEDIARIO - + #CAF @@ -151,7 +151,7 @@ P_NE MESSAGE ADD,#F1.206 - + CAPCF diff --git a/cg/cg3900a.uml b/cg/cg3900a.uml index a7116261a..771ac7f6f 100755 --- a/cg/cg3900a.uml +++ b/cg/cg3900a.uml @@ -49,16 +49,18 @@ BEGIN PROMPT 1 4 "@bFornitura" END -STRING F_DIR 128 50 +STRING F_DIR 256 64 BEGIN PROMPT 2 5 "Cartella " CHECKTYPE REQUIRED + MESSAGE COPY,F_DIR2 END -STRING F_NAME 50 +STRING F_NAME 64 BEGIN PROMPT 2 6 "File " CHECKTYPE REQUIRED + MESSAGE COPY,F_NAME2 END GROUPBOX DLG_NULL 78 4 @@ -119,7 +121,7 @@ END DATE F_DATA BEGIN - PROMPT 2 15 "Data dell'impegno alla trasmimssione " + PROMPT 2 15 "Data dell'impegno alla trasmissione " VALIDATE REQIF_FUNC 1 F_INTR WARNING "Data obbligatoria in presenza di un intermediario" FIELD IMPEGNO @@ -177,4 +179,59 @@ END ENDPAGE +PAGE "Somma forniture" 0 0 0 -3 + +SPREADSHEET F_FUSION 78 15 +BEGIN + PROMPT 1 1 "" + ITEM "Elenco Forniture da sommare@70" +END + +GROUPBOX DLG_NULL 78 4 +BEGIN + PROMPT 1 17 "@bFornitura totale" +END + +STRING F_DIR2 256 64 +BEGIN + PROMPT 2 18 "Cartella " + FLAGS "D" +END + +STRING F_NAME2 64 +BEGIN + PROMPT 2 19 "File " + FLAGS "D" +END + +ENDPAGE + +ENDMASK + +PAGE "File" -1 -1 78 5 + +STRING 101 256 70 +BEGIN + PROMPT 1 1 "File " + FSELECT "*.ecf" + CHECKTYPE REQUIRED +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -33 -1 "" +END + +ENDPAGE + ENDMASK diff --git a/cg/cg4304.cpp b/cg/cg4304.cpp index 2751e41b8..785e7beaf 100755 --- a/cg/cg4304.cpp +++ b/cg/cg4304.cpp @@ -5,9 +5,11 @@ // ------------------------------------------------------------ #include +#include #include #include "cg4300.h" +#include // flags per annuale #define IS_PRORATA 0x0001 @@ -152,7 +154,15 @@ void TLiquidazione_app::describe_name(int month, TToken_string& codatts, char fl d->_s0 = _nditte->curr().get("CODDITTA"); d->_s1 = _nditte->curr().get("RAGSOC"); - d->_s2 = _nditte->curr(LF_ATTIV).get("CODATT"); + + if (atoi(_year) > 2007) + { + const TString16 codateco = _nditte->curr(LF_ATTIV).get(ATT_CODATECO); + + d->_s2 = codateco; + } + else + d->_s2 = _nditte->curr(LF_ATTIV).get("CODATT"); d->_s3 = codatts.items() == 1 ? (const char*)_nditte->curr(LF_ATTIV).get("DESCR") : ""; d->_s4 = _freqviva; @@ -1804,7 +1814,7 @@ void TLiquidazione_app::set_plm(_DescrItem& d) } if (!(d._r7.is_zero() && d._r8.is_zero())) { - set_row(rw++,FR("Totali acquisti indeducibili per art.19@91g%r@107g%r"), + set_row(rw++,FR("Totale acquisti indeducibili per art.19@91g%r@107g%r"), &(d._r7), &(d._r8)); } if (! (d._r9.is_zero() && d._r10.is_zero())) diff --git a/cg/cg4400.cpp b/cg/cg4400.cpp index a048faf13..d3f52adc6 100755 --- a/cg/cg4400.cpp +++ b/cg/cg4400.cpp @@ -2496,11 +2496,27 @@ void TStampa_registri_app::preprocess_header() if (_intesta_liq) set_header(r, FR("Registro IVA: %s %s %s"), (const char*)_codreg, (const char*)_desc_lib, (const char*) data); - else - set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"), - (const char*) _codreg, (const char*) _desc_lib, - (const char*) data, (const char*) _codatt, - (const char*) _attivita); + else + { + if (_annoes > 2007) + { + TString key; + + key.format("%ld|%s", _ditta, (const char *)_codatt); + const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO); + + set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"), + (const char*) _codreg, (const char*) _desc_lib, + (const char*) data, (const char*) codateco, + (const char*) _attivita); + } + else + set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"), + (const char*) _codreg, (const char*) _desc_lib, + (const char*) data, (const char*) _codatt, + (const char*) _attivita); + + } } else { @@ -3694,8 +3710,19 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin row.put(codreg, 14); row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18); row.put(TR("Attivita\'"), 60); - row.put(codatt, 70); - row.put(desc, 76); + + if (_annoes > 2007) + { + TString key; + + key.format("%ld|%s", _ditta, (const char *)codatt); + const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO); + + row.put(codateco, 70); + } + else + row.put(codatt, 70); + row.put(desc, 77); pr.print(row); } else diff --git a/cg/cg6100.cpp b/cg/cg6100.cpp index 13ca3131c..82607dd4e 100755 --- a/cg/cg6100.cpp +++ b/cg/cg6100.cpp @@ -24,7 +24,7 @@ public: virtual bool create(); virtual bool destroy(); virtual void main_loop(); - virtual bool check_autorization() const { return FALSE; } + virtual bool check_autorization() const { return false; } void stato_trasferimento(TString& std); bool controlli_preliminari(); diff --git a/cg/cg6400.cpp b/cg/cg6400.cpp index e0876da11..ecfad8b03 100755 --- a/cg/cg6400.cpp +++ b/cg/cg6400.cpp @@ -38,10 +38,10 @@ class TRic_archivi : public TSkeleton_application bool _sequenza,_disketto; bool _prima_volta,_baipassa; TString _nomeid,_nomeidp,_ragsoc_dittar; - TFilename _marker,_trasf,_trasfer,_pathname; + TFilename _marker,_trasf,_trasfer,_pathname,_trasfhard; long _dittainv,_dittainvp,_dittaric,_totrectras,_totrectrasp; TDate _datatras,_datatrasp,_dataultras_tab,_dataultras; - TString _sigle_file,_nrec_file,_trasfhard; + TString _sigle_file,_nrec_file; char _agg_cau,_agg_pcon,_agg_cls,_agg_clifo,_agg_fatatt,_agg_fatpas; public: @@ -50,7 +50,7 @@ public: virtual bool create(); virtual bool destroy(); virtual bool check_autorization() const - {return FALSE;} + {return false;} virtual void main_loop(); bool leggi_marker(); bool leggi_marker_rep(); @@ -106,7 +106,7 @@ bool TRic_archivi::create() _prima_volta = TRUE; _nultras = 0; _nultras_tab = 0; - _baipassa = FALSE; + _baipassa = false; return TSkeleton_application::create(); } @@ -139,7 +139,7 @@ void TRic_archivi::componi_path(TMask* msk) if (drive == "A:" || drive == "B:") _disketto = TRUE; else - _disketto = FALSE; + _disketto = false; // Fine cazzata const int pos = path.find(':'); @@ -189,13 +189,13 @@ bool TRic_archivi::leggi_marker() if (_numtotdisk == 0) { message_box(TR("Il numero totale dischi su marker non e' significativo: impossibile proseguire")); - return FALSE; + return false: } if (_progdisk != _numdisk) { message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk); - _sequenza = FALSE; + _sequenza = false; return TRUE; } else @@ -206,7 +206,7 @@ bool TRic_archivi::leggi_marker() _numinv = atoi(buffer.sub(14,17)); const TString8 tmp = buffer.sub(17,23); - _datatras = converti(tmp,FALSE); + _datatras = converti(tmp, false); _totrectras = atol(buffer.sub(23,29)); @@ -238,7 +238,7 @@ bool TRic_archivi::leggi_marker() return TRUE; } - return FALSE; + return false; } bool TRic_archivi::leggi_marker_rep() @@ -266,7 +266,7 @@ bool TRic_archivi::leggi_marker_rep() if (_progdisk != _numdisk) { message_box(FR("Il dischetto inserito (%d) non rispecchia la giusta sequenza (%d)"), _numdisk, _progdisk); - _sequenza = FALSE; + _sequenza = false; return TRUE; } else @@ -478,7 +478,7 @@ void TRic_archivi::leggi_trasfer(const char* nome) _nultras = 0; _trasf = _tras_file->path(_dittaric); - _trasf << nome; + _trasf.add(nome); _tras_file->open(_trasf); @@ -513,7 +513,7 @@ void TRic_archivi::leggi_trasfer(const char* nome) int TRic_archivi::controllo_ripartenza() { TString std; - bool flag = FALSE; + bool flag = false; int var = 0; set_firm(_dittaric); @@ -568,7 +568,7 @@ bool TRic_archivi::video_ripartenza() { leggi_trasfer("\\trasfer"); - _prima_volta = FALSE; + _prima_volta = false; TMask maskera("cg6400a"); TMask* msk = &maskera; @@ -583,19 +583,19 @@ bool TRic_archivi::video_ripartenza() msk->set(F_CODDITTARIC, _dittaric); msk->set(F_RAGSOC, _ragsoc_dittar); msk->set(F_NULTRASDSK, _numinv); - TString data1 = _datatras.string(); + TString16 data1 = _datatras.string(); msk->set(F_DATAULTRASDSK, data1); if (_nultras != 0) { msk->set(F_NULTRASTAB, _nultras); - TString data2 = _dataultras.string(); + TString16 data2 = _dataultras.string(); msk->set(F_DATAULTRASTAB, data2); } else { msk->set(F_NULTRASTAB, _nultras_tab); - TString data2 = _dataultras_tab.string(); + TString16 data2 = _dataultras_tab.string(); msk->set(F_DATAULTRASTAB, data2); } @@ -613,13 +613,13 @@ bool TRic_archivi::video_ripartenza() tasto = msk->run(); if (tasto != K_ENTER) - return FALSE; + return false; if (_baipassa) return TRUE; if (!ripartenza()) - return FALSE; + return false; if (_numinv > (_nultras_tab + 1)) warning_box(FR("Trasferimento FUORI SEQUENZA: manca un trasferimento intermedio.\n" @@ -650,11 +650,8 @@ void TRic_archivi::ripristina_trasfer() { TProgind prg (1,TR("Trasferimento archivi"),false, false); - if (_numdisk == 1) - { -// set_firm(_dittaric); + if (_numdisk == 1) fcopy(_trasfer,_trasf,false); - } else fcopy(_trasfer,_trasf,true); } @@ -662,7 +659,7 @@ void TRic_archivi::ripristina_trasfer() void TRic_archivi::trasfer2tempfile() { _trasfhard = _tras_file->path(_dittaric); - _trasfhard << HEADER; + _trasfhard.add(HEADER); switch (_scelta) { case 'S': _tras_file->fcopytemp(_trasf,_trasfhard); break; @@ -705,20 +702,15 @@ long TRic_archivi::leggi_tabella_tras() bool TRic_archivi::set_flag() { - TString sigla; - long nrec; - int j; int k = 0; - TString flag; + TString4 flag; TString record; - TString ana_com,pcon_cau; - TString uselab; - bool fatto = TRUE; + TString4 uselab; + bool fatto = true; - TConfig conf(CONFIG_DITTA); - - ana_com = conf.get("AnCfCm","cg"); - pcon_cau = conf.get("PcTcCm","cg"); + TConfig conf(CONFIG_DITTA, "cg"); + const TString4 ana_com = conf.get("AnCfCm"); + const TString4 pcon_cau = conf.get("PcTcCm"); _tras_file->open(_trasfhard); @@ -733,43 +725,43 @@ bool TRic_archivi::set_flag() record = _tras_file->record(); } - for (j = 0; j < _sigle_file.len(); j++) + for (int j = 0; j < _sigle_file.len(); j++) { - sigla = _sigle_file.mid(j,1); - nrec = atol(_nrec_file.mid(k,6)); + const char sigla = _sigle_file[j]; + const long nrec = atol(_nrec_file.mid(k,6)); if (fatto) { - if (sigla == "W" || sigla == "P") + if (sigla == 'W' || sigla == 'P') { if (nrec > 0 && pcon_cau == "") { flag = "T"; - fatto = FALSE; + fatto = false; } } else - if (sigla == "A") + if (sigla == 'A') { if (nrec > 0 && ana_com == "") { flag = "T"; - fatto = FALSE; + fatto = false; } } else - if (sigla == "Z" || sigla == "U" || sigla == "B") + if (sigla == 'Z' || sigla == 'U' || sigla == 'B') { if (nrec > 0) { flag = "C"; - fatto = FALSE; + fatto = false; } } else { flag = "*"; - fatto = FALSE; + fatto = false; } if (flag == "T") @@ -778,7 +770,7 @@ bool TRic_archivi::set_flag() uselab = ""; } - if (sigla == "W" || sigla == "P") + if (sigla == 'W' || sigla == 'P') { if (pcon_cau == "X") { @@ -787,7 +779,7 @@ bool TRic_archivi::set_flag() } } - if (sigla == "A") + if (sigla == 'A') { if (ana_com == "X") { @@ -798,11 +790,10 @@ bool TRic_archivi::set_flag() k += 6; } - record.overwrite(_sigle_file,86); - record.overwrite(_nrec_file,95); - - TString agg(7); + record.overwrite(_sigle_file, 86); + record.overwrite(_nrec_file, 95); + char agg[8]; agg[0] = _agg_cls; agg[1] = _agg_cau; agg[2] = _agg_clifo; @@ -813,14 +804,12 @@ bool TRic_archivi::set_flag() record.overwrite(agg,234); record.overwrite(uselab,240); - TString str; - str.spaces(60); + TString80 str; str.spaces(60); record.overwrite(str,241); const int size = 1024; - if (!_tras_file->write_control_rec(record, size)) - return FALSE; + return false; } conf.set("FlStTra", flag); @@ -852,5 +841,5 @@ int cg6400 (int argc, char* argv[]) TRic_archivi* main_app = new TRic_archivi(*argv[2],p3); main_app->run(argc, argv,main_app->_titolo); delete main_app; - return TRUE; + return 0; } diff --git a/cg/cg6600.cpp b/cg/cg6600.cpp index b8b0374d6..06ffd1b09 100755 --- a/cg/cg6600.cpp +++ b/cg/cg6600.cpp @@ -1277,12 +1277,11 @@ void TRic_tab::scrivi_righeIVA(long numreg) _triva->setkey(1); _triva->zero(); _triva->put(RMI_NUMREG, numreg); - TRectype riva(LF_RMOVIVA); - riva = _triva->curr(); + for (_triva->read(); !_triva->eof(); _triva->next()) { - if (_triva->curr() > riva) - break; + if (_triva->get_long(RMI_NUMREG) != numreg) + break; _triva->put(RMI_NUMREG, _nuovareg); _rmoviva->curr() = _triva->curr(); _rmoviva->write(); diff --git a/cg/cg6800.cpp b/cg/cg6800.cpp index b8ed3e9a6..8514e4d21 100755 --- a/cg/cg6800.cpp +++ b/cg/cg6800.cpp @@ -632,7 +632,7 @@ bool TVar_mov::setta_campi_maschera_iva(TMask& m) regiva.trim(); TString codcaus = _rec_mov->get (MOV_CODCAUS); long codcf = _rec_mov->get_long(MOV_CODCF); - TString ocfpi = _rec_mov->get (MOV_OCFPI); + TString16 ocfpi = _rec_mov->get (MOV_OCFPI); char provvis = _rec_mov->get_char(MOV_PROVVIS); /***************************************************** diff --git a/cg/cg6900.cpp b/cg/cg6900.cpp index 2c697ab69..7063c4bb1 100755 --- a/cg/cg6900.cpp +++ b/cg/cg6900.cpp @@ -102,12 +102,12 @@ void TInv_cont::main_loop() long ditta = msk->get_long(F_DITTAINV); set_firm(ditta); - TConfig conf(CONFIG_DITTA); - TString std = conf.get("FlStInv"); + TConfig conf(CONFIG_DITTA, "cg"); + const TString& std = conf.get("FlStInv"); if (_scelta == 'S' && std != "D") { - TString appname = "cg6 -8 L"; + const char* const appname = "cg6 -8 L"; TString corpo = ""; TDate data = msk->get(F_DATALIM); @@ -182,9 +182,8 @@ void TInv_cont::main_loop() { // aggiorna_marker(str,23); - _trasf = ""; _trasf = firm2dir(0); - _trasf << "\\trasfer"; + _trasf.add("trasfer"); ::remove(_trasf); _tras_file.open(_trasf,TRUE); @@ -573,11 +572,11 @@ bool TInv_cont::esiste_tabella_studio() return TRUE; } + bool TInv_cont::leggi_header() { - _header = ""; _header = firm2dir(0); - _header << HEADER; + _header.add(HEADER); _tras_file.open(_header); @@ -729,7 +728,7 @@ bool TInv_cont::controlla_stato_invio() { set_firm(_ditta); - TConfig conf(CONFIG_DITTA); + TConfig conf(CONFIG_DITTA, "cg"); _std = conf.get("FlStInv"); if (_stato != _std) @@ -1547,18 +1546,19 @@ void TInv_cont::iva_inviata(long numreg) } } -void TInv_cont::movIVA2tempfile(TString& key, TMask& m) +void TInv_cont::movIVA2tempfile(const TString& key, TMask& m) { - TString ocfpi; - TDate datareg; - bool inviva; - bool provvis; - int size = 1024; + const int size = 1024; + + TString16 ocfpi; + TDate datareg; + bool inviva; + bool provvis; _tras_file.open(_header); - long items = _rmoviva->items(); - _prog = new TProgind(items,"Invio movimenti Iva in corso... Prego attendere.",FALSE); + const long items = _rmoviva->items(); + _prog = new TProgind(items, TR("Invio movimenti Iva"), FALSE); _rmoviva->setkey(1); @@ -1566,7 +1566,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m) _rmoviva->first(); else { - long numreg = atol(key.mid(0,7)); + const long numreg = atol(key.mid(0,7)); _rmoviva->zero(); _rmoviva->put(RMI_NUMREG, numreg); _rmoviva->put(RMI_NUMRIG, 1); @@ -1595,7 +1595,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m) } } else - inviva = FALSE; + inviva = false; // Controlla data limite invio if ( inviva || datareg > _datalimsk ) @@ -1625,10 +1625,8 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m) } leggi_record_controllo(); - TString chiave; - chiave.format("%07ld", nreg); - TString sigla("U"); - _control_rec.overwrite(sigla,240); + TString8 chiave; chiave.format("%07ld", nreg); + _control_rec.overwrite("U",240); // Sigla _control_rec.overwrite(chiave,241); _tras_file.write_control_rec(_control_rec,size); @@ -1646,16 +1644,18 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m) //la chiave e' compilata con i dati del file precedente. leggi_record_controllo(); - TString chiave,app,sigla; - app.format("%-60s", (const char*) chiave); - char sigla_p = _tras_file.ult_file()[0]; - int posiz = _files.find(sigla_p); - TString nuova_sigla = " "; + + const char sigla_p = _tras_file.ult_file()[0]; + const int posiz = _files.find(sigla_p); + TString4 nuova_sigla = " "; if (posiz < _files.len()) nuova_sigla = _files.mid(posiz+1,1); _control_rec.overwrite(nuova_sigla,240); + + TString80 app; app.spaces(60); _control_rec.overwrite(app,241); + _tras_file.write_control_rec(_control_rec,size); _tras_file.close(); @@ -1664,7 +1664,7 @@ void TInv_cont::movIVA2tempfile(TString& key, TMask& m) } void TInv_cont::SC_inviato(char tipo,int gruppo,int conto,long sottoc, - int anno,TString& numpart,int nriga) + int anno,const TString& numpart,int nriga) { _part->setkey(1); _part->zero(); @@ -1685,12 +1685,12 @@ void TInv_cont::SC_inviato(char tipo,int gruppo,int conto,long sottoc, void TInv_cont::movSC2tempfile(TString& key, TMask& m) { - int size = 1024; + const int size = 1024; _tras_file.open(_header); - long items = _part->items(); - _prog = new TProgind(items,"Invio movimenti di Saldaconto in corso... Prego attendere.",FALSE); + const long items = _part->items(); + _prog = new TProgind(items, TR("Invio movimenti di Saldaconto."), FALSE); _part->setkey(1); @@ -1703,7 +1703,7 @@ void TInv_cont::movSC2tempfile(TString& key, TMask& m) int conto = atoi(key.mid(4,3)); long sottoc = atol(key.mid(7,6)); int anno = atoi(key.mid(13,4)); - TString numpart = key.mid(17,7); + TString8 numpart= key.mid(17,7); int nriga = atoi(key.mid(24,4)); _part->zero(); _part->put(PART_TIPOCF, tipo); @@ -1756,10 +1756,10 @@ void TInv_cont::movSC2tempfile(TString& key, TMask& m) scrivi_righePAGSCA(tipo,gruppo,conto,sottoc,anno,numpart,nriga); leggi_record_controllo(); - TString chiave; + TString80 chiave; chiave.format("%c%03d%03d%06ld%04d%7s%04d", tipo,gruppo,conto,sottoc,anno,(const char*)numpart,nriga); - TString sigla("B"); - _control_rec.overwrite(sigla,240); + + _control_rec.overwrite("B",240); // Sigla _control_rec.overwrite(chiave,241); _tras_file.write_control_rec(_control_rec,size); @@ -1788,7 +1788,7 @@ void TInv_cont::movSC2tempfile(TString& key, TMask& m) } void TInv_cont::scrivi_righeSCAD(char tipocf,int gruppo,int conto,long sottoc, - int anno,TString& numpart,int nriga) + int anno,const TString& numpart,int nriga) { _scad->zero(); _scad->put(SCAD_TIPOCF, tipocf); @@ -1802,26 +1802,24 @@ void TInv_cont::scrivi_righeSCAD(char tipocf,int gruppo,int conto,long sottoc, _scad->put(SCAD_NUMPART, numpart); _scad->put(SCAD_NRIGA, nriga); - TRectype scad (_scad->curr()); - + const TRectype scad = _scad->curr(); + const TString16 numpart_rec = scad.get(SCAD_NUMPART); + for (_scad->read(_isgteq); !_scad->eof(); _scad->next()) { - TString rec = scad.get(SCAD_NUMPART); - TString file = _scad->get(SCAD_NUMPART); - - if (_scad->curr() != scad || file != rec) break; + const TString& numpart_file = _scad->get(SCAD_NUMPART); + if (_scad->curr() != scad || numpart_file != numpart_rec) + break; _tscad->curr() = _scad->curr(); if (_tscad->read() == NOERR) { - _tscad->zero(); _tscad->curr() = _scad->curr(); _tscad->rewrite(); } else { - _tscad->zero(); _tscad->curr() = _scad->curr(); _tscad->write(); } @@ -1872,44 +1870,45 @@ void TInv_cont::scrivi_righePAGSCA(char tipocf,int gruppo,int conto,long sottoc, int cg6900 (int argc, char* argv[]) { - switch (*argv[2]) + const char t = argc > 2 ? argv[2][0] : ' '; + switch (t) { - case 'S': + case 'S': { - TInv_cont* main_app = new TInv_cont(*argv[2]); + TInv_cont* main_app = new TInv_cont('S'); main_app->run(argc, argv,main_app->_titolo); delete main_app; } break; - case 'P': + case 'P': { - TInv_cont* main_app = new TInv_cont(*argv[2]); + TInv_cont* main_app = new TInv_cont('P'); main_app->run(argc, argv,main_app->_titolo); delete main_app; } break; - case 'L': + case 'L': { TLista_archivi* a = new TLista_archivi; - a->run(argc, argv,"Lista controllo archivi"); + a->run(argc, argv, TR("Lista controllo archivi")); delete a; } break; - case 'R': + case 'R': { TRip_flag* a = new TRip_flag; - a->run(argc, argv,"Ripristino flag movimenti"); + a->run(argc, argv,TR("Ripristino flag movimenti")); delete a; } break; - case 'C': + case 'C': { TCanc_file_invio a; - a.run(argc, argv,"Eliminazione file invio"); + a.run(argc, argv,TR("Eliminazione file invio")); } break; - default: + default: break; } diff --git a/cg/cg6900.h b/cg/cg6900.h index da88782b3..26f5435f8 100755 --- a/cg/cg6900.h +++ b/cg/cg6900.h @@ -41,7 +41,8 @@ class TInv_cont : public TSkeleton_application char _scelta; - TString _control_rec, _header, _trasf, _std, _stato, _marker, _nome_simbolico; + TFilename _trasf, _header; + TString _control_rec, _std, _stato, _marker, _nome_simbolico; TString _files, _codcaus, _numdoc, _reg, _codpag, _tipodoc, _codcausm, _sigle,_cpg_nc; TString _ocfpi, _ragsococc, _indocc, _capocc, _localocc, _provocc, _codvali, _codval; bool _esiste_ditta, _esiste_record, _inviato, _flag_provvis, _flag_bollato; @@ -102,18 +103,18 @@ public: void scrivi_righePN(long numreg); void primanota_inviata(long numreg); - void movIVA2tempfile(TString& key,TMask& m); + void movIVA2tempfile(const TString& key,TMask& m); bool occasionali(const TString& ocfpi); void iva_inviata(long numreg); void movSC2tempfile(TString& key,TMask& m); - void scrivi_righeSCAD(char,int,int,long,int,TString&,int); + void scrivi_righeSCAD(char,int,int,long,int,const TString&,int); void scrivi_righePAGSCA(char,int,int,long,int,TString&,int); - void SC_inviato(char,int,int,long,int,TString&,int); + void SC_inviato(char,int,int,long,int,const TString&,int); int nprogre_interno(long nreg, int nrig); - void aggiorna_array_rate(char tipo,int g,int c,long s,int anno,TString& npart, int nrata); - int ultima_rata_partita(char tipo,int g,int c,long s,int anno,TString& npart); + void aggiorna_array_rate(char tipo,int g,int c,long s,int anno,const TString& npart, int nrata); + int ultima_rata_partita(char tipo,int g,int c,long s,int anno,const TString& npart); void partita2trasfer(TString& record, bool crea_record_riferimento = TRUE); void pagsca2trasfer (TString& record, real& importo, real& importoval); long crea_record_riferimento_PN(); diff --git a/cg/cg6902.cpp b/cg/cg6902.cpp index 1d2b36d52..e053bb770 100755 --- a/cg/cg6902.cpp +++ b/cg/cg6902.cpp @@ -1186,7 +1186,8 @@ bool TInv_cont::testata_mov_IVA(long numreg) _tmov->setkey(1); _tmov->zero(); _tmov->put(MOV_NUMREG, numreg); - if (_tmov->read() == NOERR) + const bool ok = _tmov->read() == NOERR; + if (ok) { _codcf = _tmov->get_long(MOV_CODCF); _data74ter = _tmov->get_date(MOV_DATA74TER); @@ -1194,18 +1195,15 @@ bool TInv_cont::testata_mov_IVA(long numreg) _codvali = _tmov->get (MOV_CODVALI); _cambioi = _tmov->get_real(MOV_CAMBIOI); _corrval = _tmov->get_real(MOV_CORRVALUTA); - _ocfpi = _tmov->get (MOV_OCFPI); _dataregiva = _tmov->get_date(MOV_DATAREG); _inviato = _tmov->get_bool(MOV_INVIVA); _tipodoc = _tmov->get (MOV_TIPODOC); _provvis = _tmov->get_char(MOV_PROVVIS); - if (_ocfpi.not_empty()) + _ocfpi = _tmov->get (MOV_OCFPI); + if (_ocfpi.full()) cerca_occasionale(); } - else - return FALSE; - - return TRUE; + return ok; } void TInv_cont::cerca_occasionale() @@ -1233,6 +1231,7 @@ void TInv_cont::cerca_occasionale() void TInv_cont::cerca_comune_occas(const TString& com) { +/* TLocalisamfile comuni (LF_COMUNI); comuni.setkey(1); @@ -1243,30 +1242,34 @@ void TInv_cont::cerca_comune_occas(const TString& com) _localocc = comuni.get(COM_DENCOM); _provocc = comuni.get(COM_PROVCOM); } +*/ + TString8 comkey; comkey << " |" << com; + const TRectype& comrec = cache().get(LF_COMUNI, comkey); + _localocc = comrec.get(COM_DENCOM); + _provocc = comrec.get(COM_PROVCOM); } // Invia a sistema un movimento IVA bool TInv_cont::invio_mov_IVA() { const int size = 256; - TString record(size); + // TString256 record(size); + TString256 record; long nreg_p; int numero_righe = 0; nreg_p = -1; - long cicli = _triva->items(); - _prog = new TProgind(cicli,"Movimenti Iva: generazione file TRASFER per Sistema\nPrego attendere.",FALSE); + const long cicli = _triva->items(); + _prog = new TProgind(cicli,TR("Movimenti Iva: generazione file TRASFER per Sistema\nPrego attendere."),FALSE); _tras_file.open(_trasf,TRUE); - for (_triva->first(); !_triva->eof(); _triva->next()) + TString str; + for (int err = _triva->first(); err == NOERR; err = _triva->next()) { - TString str; - - _prog->addstatus(1); - - record.spaces(); + _prog->addstatus(1); + record.spaces(); long nreg = _triva->get_long(RMI_NUMREG); int nrig = _triva->get_int (RMI_NUMRIG); @@ -1363,17 +1366,16 @@ bool TInv_cont::invio_mov_IVA() str.format("%-.2s", (const char*) _provocc); record.overwrite(str,131); //Provincia cliente occasionale + + record.overwrite(_ocfpi, 199); //Codice occasionale alla pos 200 (aggiunta AGA) } - int tipoatt = _triva->get_int(RMI_TIPOATT); + const int tipoatt = _triva->get_int(RMI_TIPOATT); str.format("%01d", tipoatt); record.overwrite(str,133); //Tipo attivita' - bool intra = _triva->get_bool(RMI_INTRA); - if (intra) - record.overwrite("X",134); - else - record.overwrite(" ",134); //Flag causale x acquisti intracomunitari + const bool intra = _triva->get_bool(RMI_INTRA); + record.overwrite(intra ? "X" : " ",134); //Flag causale x acquisti intracomunitari /* TString corrlire = _corrlire.string(); @@ -1388,24 +1390,27 @@ bool TInv_cont::invio_mov_IVA() /* Cambio intra con 5 decimali */ dec2integer(_cambioi,100000L); - TString cambioi = _cambioi.string(); + TString16 cambioi = _cambioi.string(); if (_cambioi.sign() < 0) negPC2negAS(cambioi); str.format("%011s", (const char*) cambioi); record.overwrite(str,149); //Cambio dec2integer(_corrval,1000); - TString corrval = _corrval.string(); + TString16 corrval = _corrval.string(); if (_corrval.sign() < 0) negPC2negAS(corrval); str.format("%014s", (const char*) corrval); record.overwrite(str,160); //Corrispettivo in valuta + const bool nota = _triva->get_bool(RMI_NOTAVARECF); + record.overwrite(nota ? "1" : "0", 177); //Nota variazione relativa anni precedenti + _tmov->setkey(1); _tmov->put(MOV_NUMREG, nreg); if (_tmov->read() == NOERR) { - int meseliq = _tmov->get_int(MOV_MESELIQ); + const int meseliq = _tmov->get_int(MOV_MESELIQ); if (meseliq > 0) { str.format("%02d", meseliq); @@ -1430,11 +1435,11 @@ int TInv_cont::nprogre_interno(long numreg, int numrig) { int riga = 1; - TString key (format("%06ld%02d", numreg, numrig)); + TString8 key; key.format("%06ld%02d", numreg, numrig); if (!_riga_interna.is_key(key)) { - TString nr (format("%d", riga)); + TString8 nr; nr.format("%d", riga); _riga_interna.add(key,nr); } else @@ -1449,9 +1454,9 @@ int TInv_cont::nprogre_interno(long numreg, int numrig) long TInv_cont::crea_record_riferimento_PN() { - int size = 256; - TString record(size); - TString str; + const int size = 256; + TString256 record; + TString8 str; _ultima_nreg++; @@ -1465,7 +1470,7 @@ long TInv_cont::crea_record_riferimento_PN() str.format("%02d", 1); record.overwrite(str,8); //Numero di riga - TString datareg (_tpart->get_date(PART_DATAREG)); + TString16 datareg (_tpart->get_date(PART_DATAREG)); str = riconverti(datareg,FALSE); str.format("%06s", (const char*) str); record.overwrite(str,15); //Data di registrazione @@ -1502,7 +1507,7 @@ long TInv_cont::crea_record_riferimento_PN() str.format("%c", tipocf); record.overwrite(str,219); //Flag Cliente / Fornitore - TString codcaus (_tpart->get(PART_CODCAUS)); + TString4 codcaus (_tpart->get(PART_CODCAUS)); if (tipocf != ' ' && codcaus.empty()) codcaus = (TString&)_tab_cau[_tpart->get_int(PART_TIPOMOV)-1]; // Causale str.format("%03s",(const char*)codcaus); @@ -1702,7 +1707,8 @@ void TInv_cont::partita2trasfer(TString& record, bool crea_record_riferimento) _numrec_sc++; } -void TInv_cont::aggiorna_array_rate(char tipo,int g,int c,long s,int anno,TString& numpart, int rata) +void TInv_cont::aggiorna_array_rate(char tipo,int g,int c,long s,int anno, + const TString& numpart, int rata) { TString key (format("%c%02d%02d%06ld%4d%-7s", tipo, g, c, s, anno, (const char*) numpart)); @@ -1720,14 +1726,16 @@ void TInv_cont::aggiorna_array_rate(char tipo,int g,int c,long s,int anno,TStrin } } -int TInv_cont::ultima_rata_partita(char tipo,int g,int c,long s,int anno,TString& numpart) +int TInv_cont::ultima_rata_partita(char tipo,int g,int c,long s, + int anno, const TString& numpart) { int rata = 1; - TString key (format("%c%02d%02d%06ld%4d%-7s", tipo, g, c, s, anno, (const char*) numpart)); + TString80 key; + key.format("%c%02d%02d%06ld%4d%-7s", tipo, g, c, s, anno, (const char*)numpart); if (!_ultima_rata.is_key(key)) { - TString nr (format("%2d", rata)); + TString4 nr; nr.format("%2d", rata); _ultima_rata.add(key,nr); } else diff --git a/cg/cg6903.cpp b/cg/cg6903.cpp index dcfcb0644..2b2e96c85 100755 --- a/cg/cg6903.cpp +++ b/cg/cg6903.cpp @@ -51,7 +51,7 @@ void TRip_flag::main_loop() if (rippn || ripiva) { long cicli = _mov->items(); - _prog = new TProgind(cicli,"Ripristino movimenti in corso... Prego attendere.",FALSE); + _prog = new TProgind(cicli, TR("Ripristino movimenti in corso"), FALSE); _mov->setkey(1); _mov->zero(); diff --git a/cg/cg6904.cpp b/cg/cg6904.cpp index 352202556..5668d04b2 100755 --- a/cg/cg6904.cpp +++ b/cg/cg6904.cpp @@ -6,10 +6,8 @@ bool TInv_cont::invio_contabilita_PC() { - char sigla; - TString nrec,files; - bool header = TRUE; const int size = 1024; + bool header = true; _numrec_cau = 0; _numrec_clifo = 0; @@ -22,15 +20,15 @@ bool TInv_cont::invio_contabilita_PC() leggi_record_controllo(); - files = _tras_file.sigle_file(); - nrec = _tras_file.nrec_file(); + TString16 files = _tras_file.sigle_file(); + TString nrec = _tras_file.nrec_file(); files.trim(); _tras_file.open(_trasf,TRUE); for (int i = 0; i < files.len();i++) { - sigla = files[i]; + const char sigla = files[i]; //_numrec = atol(nrec.mid(i * 6,6)); if (header) @@ -93,10 +91,8 @@ bool TInv_cont::invio_contabilita_PC() aggiorna_header(files); aggiorna_trasfer(files); - TString str; - calcola_totale_record(); - str.format("%06ld", _tot_rec); + TString8 str; str.format("%06ld", _tot_rec); aggiorna_marker(str,26); return TRUE; @@ -104,7 +100,7 @@ bool TInv_cont::invio_contabilita_PC() void TInv_cont::invio_testata_causali() { - int size = 1024; + const int size = 1024; TString record(size); TString cod; @@ -964,8 +960,8 @@ void TInv_cont::invio_righe_contabili() TString4 rowtype = _trmov->get(RMV_ROWTYPE); record.overwrite(rowtype,158); - record.overwrite(_trmov->get("CODCMS"),159); - record.overwrite(_trmov->get("FASCMS"),179); +// record.overwrite(_trmov->get("CODCMS"),159); +// record.overwrite(_trmov->get("FASCMS"),179); _tras_file.write_control_rec(record,size); _numrec_pn++; @@ -1001,14 +997,13 @@ void TInv_cont::invio_righe_IVA() _prog = new TProgind(cicli,"Movimenti Iva: generazione file TRASFER per PC\nPrego attendere.",FALSE); _tras_file.open(_trasf,TRUE); - TString tipodoc; + TString4 tipodoc; + TString16 str; for (_triva->first(); !_triva->eof(); _triva->next()) { - TString str; - _prog->addstatus(1); - + record.spaces(); long nreg = _triva->get_long(RMI_NUMREG); @@ -1022,7 +1017,7 @@ void TInv_cont::invio_righe_IVA() str.format("%03d", nrig); record.overwrite(str,9); //Numero di riga - TString codiva = _triva->get(RMI_CODIVA); + TString4 codiva = _triva->get(RMI_CODIVA); str.format("%-4s", (const char*) codiva); record.overwrite(str,60); @@ -1096,9 +1091,6 @@ void TInv_cont::invio_righe_IVA() str.format("%03d", rigaiva); record.overwrite(str,113); - record.overwrite(_triva->get("CODCMS"),118); - record.overwrite(_triva->get("FASCMS"),138); - _tmov->setkey(1); _tmov->put(MOV_NUMREG, nreg); if (_tmov->read() == NOERR) @@ -1110,6 +1102,10 @@ void TInv_cont::invio_righe_IVA() record.overwrite(str, 116); } } + +// record.overwrite(_triva->get(RMI_CODCMS),118); +// record.overwrite(_triva->get(RMI_FASCMS),138); + record.overwrite(_triva->get(RMI_NAVP),148); _numrec_iva++; diff --git a/cg/cglib01.cpp b/cg/cglib01.cpp index 54bc1287b..f84e069b0 100755 --- a/cg/cglib01.cpp +++ b/cg/cglib01.cpp @@ -256,26 +256,31 @@ const TString& cap2comune(const TString& cap, const TString& denom) if (cappone[2] == '1') //e' un capoluogo di provincia cappone.overwrite("00", 3, 2); + TString80 up_denom = denom; + up_denom.upper(); + TRelation relcom(LF_COMUNI); TRectype& comrec = relcom.curr(); - comrec.put(COM_CAPCOM, cappone); + comrec.put(COM_CAPCOM, cappone); + + TString4 codone; TCursor comuni (&relcom, "", 3, &comrec, &comrec); const TRecnotype items = comuni.items(); comuni.freeze(); - - TString4 codone; double cmp = 0.69; for (comuni = 0L; comuni.pos() < items; ++comuni) { - const TString& denominazione = comrec.get(COM_DENCOM); - const double fc = xvt_str_fuzzy_compare (denom, denominazione); + TString80 denominazione = comrec.get(COM_DENCOM); + denominazione.upper(); + const double fc = xvt_str_fuzzy_compare (up_denom, denominazione); if (fc > cmp) { codone = comrec.get(COM_COM); cmp = fc; } - } + } + if (codone.full()) return get_tmp_string() = codone; } diff --git a/cg/cglib03.cpp b/cg/cglib03.cpp index fd4bd0854..dc3ef9360 100755 --- a/cg/cglib03.cpp +++ b/cg/cglib03.cpp @@ -130,7 +130,7 @@ TInteressi_IVA_table::~TInteressi_IVA_table() int TInteressi_IVA_table::read(int anno, int mese) { - TString16 k; k.format("%04d%02d",anno,mese); + TString8 k; k.format("%04d%02d",anno,mese); zero();put("CODTAB",k); if (TTable::read(_isgteq) == NOERR) { @@ -214,10 +214,13 @@ bool TRigaiva_array::add_riga(const TRectype& iva) { const int dec = TCurrency::get_firm_dec(); real impo_ind = impo * percind / CENTO; impo_ind.round(dec); - real impos_ind = impos * percind / CENTO; impos_ind.round(dec); const real impo_det = impo - impo_ind; - const real impos_det = impos - impos_ind; - + + const TCodiceIVA iva(codiva); + + real impos_ind = iva.imposta(impo_ind, dec); + const real impos_det = impos - impos_ind; + ok = add_riga(impo_det,impos_det,ZERO,ZERO,codiva,0,tipocr,intra,tipoatt); ok &= add_riga(impo_ind,impos_ind,ZERO,ZERO,codiva,tipodet,tipocr,intra,tipoatt); } @@ -244,13 +247,14 @@ bool TRiga_array::add_riga(const real& imponibile, const real& imposta, TRiga& r = riga(i); if (r._codiva==codiva) { - found = TRUE; + found = true; r._imponibile += imponibile; r._imposta += imposta; r._implordo += implordo; r._imponibilep += imponibilep; r._impostap += impostap; r._implordop += implordop; + break; } } if (!found) @@ -267,13 +271,13 @@ bool TRiga_array::add_riga(const real& imponibile, const real& imposta, bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc) { - bool found = FALSE; + bool found = false; for (int i = 0; i < items(); i++) { TDociva& r = riga(i); if (r._descrdoc==_descrdociva) { - found = TRUE; + found = true; if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 9))//||(r._ndoc == 4)) r._totdociva += _importo; } @@ -291,13 +295,13 @@ bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,cons bool TTipodoc_array::add_riga(const char* tipodoc, const char* descrdoc, const real& totdoc) { - bool found = FALSE; + bool found = false; for (int i = 0; i < items(); i++) { TTipodoc& r = (TTipodoc&)(*this)[i]; if (r._tipodoc==tipodoc) { - found = TRUE; + found = true; r._totdoc += totdoc; } } diff --git a/cg/cglib04.cpp b/cg/cglib04.cpp index 1f3100db7..adb76dd1d 100755 --- a/cg/cglib04.cpp +++ b/cg/cglib04.cpp @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include @@ -295,7 +294,7 @@ TRic_recfield::operator const char*() const // Ritorna il record di controllo del trasfer const char* TTransfer_file::record() const { - return (const char*)*_control_rec; + return *_control_rec; } TTransfer_file::TTransfer_file(char scelta) @@ -533,10 +532,10 @@ bool TTransfer_file::read_control_rec_t() _sigle_file = _control_rec_t.sub(38,47); _nrec_file = _control_rec_t.sub(47,101); - TString ult_file = _control_rec_t.sub(240,241); - TString key = _control_rec_t.sub(241,256); - _ult_file = ult_file.trim(); - _key = key.trim(); + _ult_file = _control_rec_t.sub(240,241); + _ult_file = _ult_file.trim(); + _key = _control_rec_t.sub(241,256); + _key = _key.trim(); fill_index(_sigle_file,_nrec_file); } else @@ -591,14 +590,14 @@ long TTransfer_file::start(int i) return 1; else { - TToken_string data = (TToken_string&)_index[i-1]; + TToken_string& data = (TToken_string&)_index[i-1]; return data.get_long(1) + 1; } } long TTransfer_file::end(int i) { - TToken_string data = (TToken_string&)_index[i]; + TToken_string& data = (TToken_string&)_index[i]; return data.get_long(4); } @@ -608,7 +607,7 @@ long TTransfer_file::rec(int i) if (i > 0) { - TToken_string data = (TToken_string&)_index[i-1]; + TToken_string& data = (TToken_string&)_index[i-1]; rec = (data.get_long(1)) + 1; } @@ -618,11 +617,9 @@ long TTransfer_file::rec(int i) int TTransfer_file::num(char sigla) { const int items = _index.items(); - TString16 dep; - for (int i = 0; i < items; i++) { - dep = name(i); + const char* dep = name(i); if ( dep[0] == sigla) return i; } @@ -655,13 +652,12 @@ void TTransfer_file::readat(long recnum) pos = end(i-1) + 1; offset = recnum - nrec(i-1); pos += offset * lenrec(i); - break; } else { pos = recnum * lenrec(i); - break; } + break; } } _curpos = recnum; @@ -676,54 +672,37 @@ int TTransfer_file::read_rec_trasfer(long numrec, int size) return letti; } -char TTransfer_file::flg_agg(char sigla) +char TTransfer_file::flg_agg(char sigla) const { char flag; - - if (sigla == 'W') - flag = _control_rec->sub(235,236)[0]; - - if (sigla == 'A') - flag = _control_rec->sub(236,237)[0]; - - if (sigla == 'P') - flag = _control_rec->sub(237,238)[0]; - + switch (sigla) + { + case 'W': flag = (*_control_rec)[235]; break; + case 'A': flag = (*_control_rec)[236]; break; + case 'P': flag = (*_control_rec)[237]; break; + default : flag = ' '; break; + } return flag; } -bool TTransfer_file::numprot_att() +bool TTransfer_file::numprot_att() const { - char flag; - - flag = _control_rec->sub(238,239)[0]; - if (flag == 'X') - return true; - else - return false; - - return true; + char flag = (*_control_rec)[238]; + return flag == 'X'; } -bool TTransfer_file::numprot_pas() +bool TTransfer_file::numprot_pas() const { - char flag; - - flag = _control_rec->sub(239,240)[0]; - if (flag == 'X') - return true; - else - return false; - - return true; + char flag = (*_control_rec)[239]; + return flag == 'X'; } -char TTransfer_file::flg_agg_IV(char sigla) +char TTransfer_file::flg_agg_IV(char sigla) const { char flag = ' '; if (sigla == 'P') - flag = _control_rec->sub(234,235)[0]; + flag = (*_control_rec)[234]; return flag; } @@ -757,20 +736,20 @@ void TTransfer_file::writeat(const char* str,int size,int fieldnum,const char* f int TTransfer_file::go2field(int fieldnum, const char* file, const long nrec, bool seek) { - TString256 key; + int pos_campo = 0; if (nrec < 0) readat(_curpos); // Mi posiziono all' inizio del record else readat(nrec); + TString16 key; if (!file) key.format("%2s%d",(const char*)_curfile,fieldnum); else key.format("%2s%d", file, fieldnum); - int pos_campo = 0; - if (_trc.is_key((const char *) key)) + if (_trc.is_key(key)) { TToken_string * data = (TToken_string *) _trc.objptr(key); @@ -1814,12 +1793,12 @@ void TTransfer_file::scrivi_occasionali(const TString& record, TString& cfpi) err = _toccas->rewrite(); } -void TTransfer_file::write_tmp_movIVA(TString& record) +void TTransfer_file::write_tmp_movIVA(const TString& record) { TString key,str; int numfield = 3; //Per i movimenti i primi due campi della mappa non sono significativi //ai fini del trasferimento (flag record gia trasferito e nuovo ultimo numero di registrazione). - const TMappa_trc& trc = mappa(); + const TMappa_trc& trc = mappa(); TIsamtempfile* file = NULL; TRectype* dep = NULL; int logicnum; @@ -1831,9 +1810,9 @@ void TTransfer_file::write_tmp_movIVA(TString& record) const TString4 sigla = record.mid(0,2); key.format("%2s%d", (const char*)sigla, numfield); - if (trc.is_key((const char *) key)) + if (trc.is_key(key)) { - TString cfpi; + TString16 cfpi; int logicnum_p = 0; @@ -1882,21 +1861,21 @@ void TTransfer_file::write_tmp_movIVA(TString& record) logicnum_p = logicnum; - int from = trc.from(key); - int to = trc.to(key); - TString16 fname = trc.field_name(key); + const int from = trc.from(key); + const int to = trc.to(key); + const TString16 fname = trc.field_name(key); TString80 field = record.sub(from-1,to); int flag = trc.flag(key); int dec = trc.flag_bis(key); - if (logicnum == LF_MOV && fname == "TOTDOC") + if (logicnum == LF_MOV && fname == MOV_TOTDOC) { numfield++; key.format("%2s%d", (const char*) sigla,numfield); continue; } - TRecfield campo (*dep,fname); + const TRecfield campo(*dep, fname); if (campo.type() == _realfld) { negativo(field); @@ -1919,19 +1898,19 @@ void TTransfer_file::write_tmp_movIVA(TString& record) if (logicnum == LF_RMOVIVA) { - if (fname == "NUMRIG") + if (fname == RMI_NUMRIG) { - int nriga = atoi(field); + const int nriga = atoi(field); field.format("%3d", nriga); } } - if (logicnum == LF_MOV && ( fname == "NUMREG" || flag == 2 ) ) + if (logicnum == LF_MOV && ( fname == MOV_NUMREG || flag == 2 ) ) { - if (fname == "NUMREG") + if (fname == MOV_NUMREG) { - dep->put("NUMREG", _numreg); - dep->put("OCFPI", cfpi); + dep->put(MOV_NUMREG, _numreg); + dep->put(MOV_OCFPI, cfpi); } if (flag == 2) @@ -1941,7 +1920,7 @@ void TTransfer_file::write_tmp_movIVA(TString& record) } } else - if (logicnum == LF_RMOVIVA && fname == "NUMREG") + if (logicnum == LF_RMOVIVA && fname == RMI_NUMREG) { int annoes = cerca_annoes(_numreg,tipodoc); dep->put("ANNOES", annoes); @@ -1951,9 +1930,9 @@ void TTransfer_file::write_tmp_movIVA(TString& record) dep->put(fname, field); numfield++; - key.format("%2s%d", (const char*) sigla,numfield); + key.format("%2s%d", (const char*)sigla,numfield); } - while (trc.is_key((const char*) key)); + while (trc.is_key(key)); _prog->addstatus(1); trasfer_data_moviva(*file, *dep, logicnum_p); @@ -3142,7 +3121,7 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest) bool is_delete = false, tpcon_valid = false; const char* const rflag = "rb"; - const char* wflag = "ab"; + const char* const wflag = "ab"; TLocalisamfile tabella(LF_TAB); @@ -3187,11 +3166,11 @@ bool TTransfer_file::fcopytemp(const char* orig, const char* dest) if ( (pos = sigle.find('Z')) >= 0) { _tmpmov = "%"; - _tmpmov << path(); - _tmpmov << SLASH << TEMP_MOV; + _tmpmov << path(); + _tmpmov.add(TEMP_MOV); _tmprmov = "%"; _tmprmov << path(); - _tmprmov << SLASH << TEMP_RMOV; + _tmprmov.add(TEMP_RMOV); nrec_mov = atol(nrec.mid(pos*6,6)); } if ( (pos = sigle.find('U')) >= 0) @@ -3483,24 +3462,21 @@ void TTransfer_file::scrivi_PN(long nrec) void TTransfer_file::scrivi_IVA(long nrec) { - TString buffer(sizeT); - TString16 trec; + TString buffer(sizeT); _prog = new TProgind (nrec,TR("Trasferimento Movimenti Iva in corso\nPrego attendere"),false, true, 1); - TRic_recfield recf (_ttab->curr(), "S0", 0, sizeT); + const TRic_recfield recf(_ttab->curr(), "S0", 0, sizeT); _ttab->zero(); _ttab->put("CODTAB", "U1"); - for (_ttab->read(); !_ttab->eof(); _ttab->next()) + for (int err = _ttab->read(_isgteq); err == NOERR; err = _ttab->next()) { - trec = (_ttab->get("CODTAB")).left(2); - + const TString& trec = _ttab->get("CODTAB").left(2); if (trec != "U1") break; - buffer = (const char*) recf; - + buffer = (const char*)recf; write_tmp_movIVA(buffer); } delete _prog; @@ -3523,12 +3499,10 @@ void TTransfer_file::scrivi_SC(long nrec) _ttab->put("CODTAB", "B1"); for (_ttab->read(); !_ttab->eof(); _ttab->next()) { - const TString& trec = (_ttab->get("CODTAB")).left(2); - + const TString& trec = _ttab->get("CODTAB").left(2); if (trec != "B1") break; buffer = (const char*) recf; - write_tmp_movSC(buffer); } delete _prog; @@ -3563,7 +3537,6 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest) const word size = 1024; TString buffer(size); - TString16 trec; if (sigle.find('W') >= 0) { @@ -3666,9 +3639,9 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest) while (ok) { - const word letti = fread((char*)(const char*)buffer, 1, size, i); + const word letti = fread(buffer.get_buffer(size), 1, size, i); - trec = buffer.left(2); + const TString4 trec = buffer.left(2); if (trec == " 1") // Copio il record di controllo nel file di appoggio { // header. @@ -3679,7 +3652,7 @@ bool TTransfer_file::fcopytemp_PC(const char* orig, const char* dest) if (trec == "B1" || trec == "B2" || trec == "B3") { - TString app = buffer.mid(19,7); + TString8 app = buffer.mid(19,7); app.trim(); // Modifica del 06-09-96 relativa all'allineamento app.format("%-7s", (const char*) app); // del numero di riferimento partita che per i file buffer.overwrite(app,19); // temporanei deve essere sempre a sinistra @@ -4302,6 +4275,7 @@ void TTransfer_file::write_testata_movimenti(TString& record) { field = converti(field,TRUE); } + else if (fname == OCC_CFPI) { _depmov->put(fname,field); @@ -4383,13 +4357,15 @@ void TTransfer_file::write_testata_movimenti(TString& record) void TTransfer_file::write_righe_contabili(const TString& record) { - TString16 key; - int numfield = 1; const TMappa_trc& trc = mappa(); + + int numfield = 1; real importo = ZERO; int gruppo = 0; + const TString4 sigla = record.mid(0,2); + TString16 key; key.format("%2s%d", (const char*)sigla,numfield); _deprmov->zero(); @@ -4630,18 +4606,14 @@ void TTransfer_file::write_righe_IVA(TString& record) key.format("%2s%d", (const char*) sigla,numfield); } - _triva->zero(); - _triva->curr() = *_depriva; - + _triva->curr() = *_depriva; if (_triva->read() == NOERR) { - _triva->zero(); _triva->curr() = *_depriva; _triva->rewrite(); } else { - _triva->zero(); _triva->curr() = *_depriva; _triva->write(); } diff --git a/cg/cglib04.h b/cg/cglib04.h index 925ea3129..e0cc524a4 100755 --- a/cg/cglib04.h +++ b/cg/cglib04.h @@ -146,9 +146,6 @@ class TTransfer_file TRectype* _deprmov; TRectype* _depriva; TRectype* _depoccas; - //TRectype* _deppart; - //TRectype* _depscad; - //TRectype* _deppagsca; TExtrectype* _deppart; TExtrectype* _depscad; TExtrectype* _deppagsca; @@ -160,10 +157,10 @@ class TTransfer_file long _numreg, _numreg_p, _numreg_piva, _npoccas; long _nregSC, _nregSC_p; int _numrigSC, _numrigSC_p, _annoSC, _annoSC_p, _nrigaSC; - TString _numpartSC, _numpartSC_p; + TString8 _numpartSC, _numpartSC_p; int _annoes; TDate _datareg; - TString _cod_com; + TString4 _cod_com; long _curpos; long _tot_rec; // Numero totale di record nel transfer @@ -171,7 +168,7 @@ class TTransfer_file int _last_tab,_last_mov; long _ditta; - TString16 _tiporec; + TString4 _tiporec; TString16 _nome_simb; TString16 _dataultras; TString16 _sigle_file; @@ -206,7 +203,7 @@ private: int trasfer_data_tab(TIsamtempfile& file, TRectype& dep); void write_tmp_movPN(TString& record); int trasfer_data_mov(TIsamtempfile& file, TRectype& dep); - void write_tmp_movIVA(TString& record); + void write_tmp_movIVA(const TString& record); int trasfer_data_moviva(TIsamtempfile& file, TRectype& dep, int ln); // Funzioni per la ricezione del Saldaconto da Sistema void write_tmp_movSC(TString& record); @@ -288,7 +285,7 @@ public: // Funzioni che agiscono sul record di controllo del file trasfer. - bool read_control_rec(); // Legge il record del file header + bool read_control_rec(); // Legge il record del file header bool read_control_rec_t(); // Legge il record di controllo del file trasfer bool write_control_rec(const char* str, const int size); // Scrive una stringa di lunghezza size @@ -296,13 +293,13 @@ public: const char* nome_simb () const { return _nome_simb; } // Ritorna il nome simbolico del sistema inviante long ditta () const { return _ditta; } // Ritorna la ditta inviante int nultras () const { return _nultras; } // Ritorna il numero ultimo trasferimento - const char* dataultras() const { return (const char*) _dataultras; } // Ritorna la data ultimo trasferimento - const char* sigle_file() const { return (const char*) _sigle_file; } // Ritorna una stringa contenente le sigle dei file da ricevere - const char* nrec_file () const { return (const char*) _nrec_file; } // Ritorna una stringa con il numero totale di record corrispondenti ad ogni sigla dei file da ricevere - char flg_agg(char sigla); // Ritorna i flag tipo aggiornamento relativi alle tabelle - bool numprot_att(); // Ritorna il flag riattribuzione numero protocollo su fatture attive - bool numprot_pas(); // Ritorna il flag riattribuzione numero protocollo su fatture passive - char flg_agg_IV(char sigla); // Ritorna il flag tipo aggiornamento classi piano dei conti + const char* dataultras() const { return _dataultras; } // Ritorna la data ultimo trasferimento + const char* sigle_file() const { return _sigle_file; } // Ritorna una stringa contenente le sigle dei file da ricevere + const char* nrec_file () const { return _nrec_file; } // Ritorna una stringa con il numero totale di record corrispondenti ad ogni sigla dei file da ricevere + char flg_agg(char sigla) const; // Ritorna i flag tipo aggiornamento relativi alle tabelle + bool numprot_att() const; // Ritorna il flag riattribuzione numero protocollo su fatture attive + bool numprot_pas() const; // Ritorna il flag riattribuzione numero protocollo su fatture passive + char flg_agg_IV(char sigla) const; // Ritorna il flag tipo aggiornamento classi piano dei conti const char* ult_file () const { return (const char*) _ult_file; } // Ritorna l'ultima sigla file elaborato const char* key () const { return (const char*) _key; } // Ritorna la chiave ultimo record elaborato const char* record () const; // Ritorna il record di controllo del trasfer diff --git a/cg/cgpagame.cpp b/cg/cgpagame.cpp index 9c3b47d0c..083fa4852 100755 --- a/cg/cgpagame.cpp +++ b/cg/cgpagame.cpp @@ -1,8 +1,10 @@ +#include "cgpagame.h" + +#include #include #include #include -#include "cgpagame.h" #include "cg2100.h" #include @@ -18,27 +20,30 @@ inline void swap(int& x, int& y) {int tmp = x; x = y; y = tmp; } int TPagamento::_rata_ifield(int n, int f) const -{ - TToken_string& t = (TToken_string&)_rate[n]; - return t.get_int(f); +{ + int v = 0; + _rate.row(n).get(f, v); + return v; } long TPagamento::_rata_lfield(int n, int f) const { - TToken_string& t = (TToken_string&)_rate[n]; - return t.get_long(f); + long v = 0; + _rate.row(n).get(f, v); + return v; } real TPagamento::_rata_rfield(int n, int f) const { - TToken_string& t = (TToken_string&)_rate[n]; - return real(t.get(f)); + real v; + _rate.row(n).get(f, v); + return v; } TDate TPagamento::_rata_dfield(int n, int f) const { - TToken_string& t = (TToken_string&)_rate[n]; - return TDate(t.get(f)); + const TDate v = _rata_sfield(n, f); + return v; } /* Funzione sgradita al nuovo C ed anche a Guy: static bleah! @@ -490,30 +495,30 @@ void TPagamento::next_scad(TDate& d, int scad, bool mcomm, int rata) void TPagamento::set_default_type(int type, bool change_existing) { - _def_tpr = type; - if (change_existing) - { - for (int i = 0; i < n_rate(); i++) - { - TToken_string& tt = rata(i); - tt.add(type, 2); - } - _dirty = true; - } + _def_tpr = type; + if (change_existing) + { + for (int i = 0; i < n_rate(); i++) + { + TToken_string& tt = rata(i); + tt.add(type, 2); + } + _dirty = true; + } } void TPagamento::set_default_ulc(const char* ulc, bool change_existing) { - _def_ulc = ulc; - if (change_existing) - { - for (int i = 0; i < n_rate(); i++) - { - TToken_string& tt = rata(i); - tt.add(ulc, 5); - } - _dirty = true; - } + _def_ulc = ulc; + if (change_existing) + { + for (int i = 0; i < n_rate(); i++) + { + TToken_string& tt = rata(i); + tt.add(ulc, 5); + } + _dirty = true; + } } void TPagamento::remove_rata(int i) @@ -827,31 +832,22 @@ const char* TPagamento::desc_tipo(int tipo, char ulc, bool* ok) const if (ulc > ' ') { const char key[3] = { tipo+'0', toupper(ulc), '\0' }; -/* - TTable clr("%CLR"); - clr.put("CODTAB", key); - const int err = clr.read(); - if (err == NOERR) - o = clr.get("S0"); // Bravo merlo: e' locale! - else if (ok != NULL) - *ok = false; -*/ o = cache().get("%CLR", key).get("S0"); } if (*o == '\0') { switch (tipo) { - case 0: o = "Altro pagamento"; break; - case 1: o = "Rimessa diretta o contanti"; break; - case 2: o = "Tratta"; break; - case 3: o = "Ricevuta Bancaria"; break; - case 4: o = "Cessione"; break; - case 5: o = "Paghero'"; break; - case 6: o = "Lettera di credito"; break; - case 7: o = "Tratta accettata"; break; - case 8: o = "Rapporti interban. diretti"; break; - case 9: o = "Bonifici"; break; + case 0: o = TR("Altro pagamento"); break; + case 1: o = TR("Rimessa diretta o contanti"); break; + case 2: o = TR("Tratta"); break; + case 3: o = TR("Ricevuta Bancaria"); break; + case 4: o = TR("Cessione"); break; + case 5: o = TR("Paghero'"); break; + case 6: o = TR("Lettera di credito"); break; + case 7: o = TR("Tratta accettata"); break; + case 8: o = TR("Rapporti interban. diretti"); break; + case 9: o = TR("Bonifici"); break; default: if (ok != NULL) *ok = false; break; } } diff --git a/cg/cgprassi.hlp b/cg/cgprassi.hlp deleted file mode 100755 index 1dfedab793ccfb515c219793e9e281d4f30c86cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206106 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 Khjf%Jy!^ieIX4*q diff --git a/cg/cgtrc.ini b/cg/cgtrc.ini index 813dc9692..a8c6c275f 100755 --- a/cg/cgtrc.ini +++ b/cg/cgtrc.ini @@ -223,14 +223,15 @@ U1|19|46|47|25|GRUPPO||| U1|20|48|49|25|CONTO||| U1|21|50|55|25|SOTTOCONTO||| U1|22|135|135|25|INTRA||| +U1|23|175|176|23|MESELIQ||| +U1|24|178|178|25|NOTAVARECF||| +U1|25|200|215|23|OCFPI||| U1|50|62|86||||| U1|51|249|249|23|||| U1|52|109|126||||| U1|53|127|131||||| U1|54|132|133||||| U1|56|87|108||||| -U1|57|175|176|23|MESELIQ||| -U1|58|177|192|23|OCFPI||| # # Tracciato Partite in caso di Fattura # diff --git a/cg/cgtrcpc.ini b/cg/cgtrcpc.ini index d9dc6770f..b15c0705b 100755 --- a/cg/cgtrcpc.ini +++ b/cg/cgtrcpc.ini @@ -200,6 +200,7 @@ U1|14|114|116|25|RIGAIVA||| U1|15|117|118|24|MESELIQ||| U1|16|119|138|25|CODCMS||| U1|17|139|148|25|FASCMS||| +U1|18|149|149|25|NOTAVARECF||| B1|1|3|3|28|TIPOC||| B1|2|4|6|28|GRUPPO||| B1|3|7|9|28|CONTO||| diff --git a/cg/f20.dir b/cg/f20.dir index 07bb54e6a..79993145a 100755 --- a/cg/f20.dir +++ b/cg/f20.dir @@ -1,3 +1,3 @@ 20 0 -$clifo|0|0|679|0|Clienti/Fornitori||| +$clifo|0|0|730|0|Clienti/Fornitori||| diff --git a/cg/f20.trr b/cg/f20.trr index 6802157bf..15f318d28 100755 --- a/cg/f20.trr +++ b/cg/f20.trr @@ -1,5 +1,6 @@ 20 -54 + +56 TIPOCF|1|1|0|Tipo ( liente ornitore CODCF|3|6|0|Codice RAGSOC|1|50|0|Ragione sociale @@ -32,7 +33,9 @@ PFAX|1|10|0|Prefisso del numero di FAX FAX|1|30|0|Numero di FAX PTELEX|1|10|0|Prefisso del numero di TELEX TELEX|1|30|0|Prefisso del numero di TELEX -MAIL|1|50|0|Indirizzo di posta elettronica +MAIL|1|50|0|Indirizzo di posta elettronica generico +BYMAIL|8|1|0|Consenso all' invio dei documenti per posta elettronica +DOCMAIL|1|50|0|Indirizzo di posta elettronica per i documenti DATANASC|5|8|0|Data di nascita STATONASC|2|3|0|Codice stato di nascita COMNASC|1|4|0|Codice comune di nascita diff --git a/cg/f25.dir b/cg/f25.dir index 10c8422d2..f3aba8ec4 100755 --- a/cg/f25.dir +++ b/cg/f25.dir @@ -1,3 +1,3 @@ 25 0 -$rmoviva|0|0|108|0|Righe movimento IVA|NMOV*2|| +$rmoviva|0|0|109|0|Righe movimento IVA|NMOV*2|| diff --git a/cg/f25.trr b/cg/f25.trr index 5923b60ee..46322eb8c 100755 --- a/cg/f25.trr +++ b/cg/f25.trr @@ -1,5 +1,5 @@ 25 -18 +19 ANNOES|2|4|0|Codice esercizio NUMREG|3|7|0|Numero operazione NUMRIG|2|3|0|Numero riga @@ -18,5 +18,6 @@ CONTO|2|3|0|Conto SOTTOCONTO|3|6|0|Sottoconto o codice cliente/fornitore CODCMS|1|20|0|Codice Commessa FASCMS|1|10|0|Fase Commessa +NAVP|8|1|0|Nota di variazione anni precedenti x Elenco CF 1 NUMREG+NUMRIG| diff --git a/cg/prassid.doc b/cg/prassid.doc deleted file mode 100755 index aa701a4cc..000000000 --- a/cg/prassid.doc +++ /dev/null @@ -1,83 +0,0 @@ -# prassid.doc - File configurazione ditte (commentato] -# una copia di questo file viene affibbiata a ogni nuova ditta -# NON MODIFICARE! Copiare prima in prassid.ini -[cg] -# Maschera -EdMask = cg5100a.msk -# Anno liquidazione IVA -AnLiIv = %yr% -# Anagrafica clienti/fornitori in comune -AnCfCm = -# Piano conti/tabella causali in comune -PcTcCm = -# Gestione libro cronologico -GsLbCn = -# Codice libro incassi pagamenti -CodLIC = -# Stampa totali fatture a fine registro -StTfFr = -# Stampa libro giornale e libro IVA unico -StLgiU = -# Gestione saldaconto -GesSal = -# Ricalcolo imposte degli acquisti destinati a rivendita -RicAcq = -# N. rif. allineato a destra per clienti e fornitori -NrCliDx = -NrForDx = -# Campo misterioso che segue il precedente -CmSgPc = -# Riferimenti partite -RifPar = -# Gestione valuta -GesVal = -# Codice lingua -CodLin = -# Credito IVA anno precedente -CrIvAp = -# Gestione liquidazione differita -GeLiDi = -# Codice causale chiusura -CoCaCh = -# Codice causale apertura -CoCaAp = -# Codici sottoconto Bilancio di Chiusura -CsBiChG = -CsBiChC = -CsBiChS = -# Codici sottoconto Profitti e perdite -CsPrPeG = -CsPrPeC = -CsPrPeS = -# Codici sottoconto Bilancio di Apertura -CsBiApG = -CsBiApC = -CsBiApS = -# Codici sottoconto Utile esercizio conto patrimoniale -CsUeCpG = -CsUeCpC = -CsUeCpS = -# Codici sottoconto Perdite esercizio conto patrimoniale -CsPeCpG = -CsPeCpC = -CsPeCpS = -# Codici sottoconto Utile esercizio conto economico -CsUeCeG = -CsUeCeC = -CsUeCeS = -# Codici sottoconto Perdite esercizio conto economico -CsPeCeG = -CsPeCeC = -CsPeCeS = -# Frequenza ratei/riscontri -RrFrAm = -# Mese commerciale ratei/riscontri -RrMeCo = -# Codice causale ratei -RrCcRa = -# Codice causale riscontri -RrCcRi = -# Gestione Vendite -GesVen = - -[EOF] diff --git a/cg/prassis.doc b/cg/prassis.doc deleted file mode 100755 index f7f88f5b7..000000000 --- a/cg/prassis.doc +++ /dev/null @@ -1,29 +0,0 @@ -# File configurazione contabilita' -# Versione commentata da NON usare direttamente -# Guy 16-9-94 -# Paragrafo Contabilita' -[cg] -# Maschera edit -EdMask = cg5000a.msk -#codice azienda banca -CodCAB = -#codice dipendenza -CodABI = -# Somma imposte non detraibiili agli acquisti/importazioni in mod. IVA 11 -Sind11 = -# Stampa intestazione su registri bollati -StiReg = -# Non stampa data registrazione su registi IVA -NoDtRg = -# Posizionamento cursore su data registrazione in immissione documenti -PoCuDr = -# Codice IVA per ricavi misti relativi ad agenzie di viaggio -CodAgv = -# Interessi liquid. trimestrali per i 4 trimestri -InTr(0) = 1.5 -InTr(1) = 1.5 -InTr(2) = 1.5 -InTr(3) = 1.5 -[EOF] - -