diff --git a/cg/cg6500.cpp b/cg/cg6500.cpp index 697b72546..6958691f3 100755 --- a/cg/cg6500.cpp +++ b/cg/cg6500.cpp @@ -19,11 +19,12 @@ private: TTransfer_file _tras_file; TString _trasf,_control_rec; - long _ditta_tab, _ditta_tras; + long _ditta_tab, _ditta_tras, _ditta_orig; bool _disable,_ditte_uguali,_salta_hnd,_messaggio; public: - bool user_create(); + virtual bool user_create(); + virtual bool user_destroy(); virtual void init_query_mode(TMask&); virtual void init_modify_mode(TMask&); virtual void init_insert_mode(TMask&); @@ -153,7 +154,7 @@ bool Tabinv_application::ditta_handler(TMask_field& f, KEY k) } } } - if (k == K_TAB) + if (k == K_TAB && f.focusdirty()) { TLocalisamfile ditte (LF_NDITTE); @@ -166,6 +167,7 @@ bool Tabinv_application::ditta_handler(TMask_field& f, KEY k) { TString ragsoc = ditte.get(NDT_RAGSOC); f.mask().set(F_RAGSOC, ragsoc); + prefix().set_codditta(ditta); } else f.mask().set(F_RAGSOC, ""); @@ -729,10 +731,11 @@ bool Tabinv_application::user_create() Tab_application::user_create(); _msk = get_mask(); - _tabname = get_tabname(); - + _tabname = get_tabname(); + _ditta_orig = -1; if (_tabname == "%IND") { + _ditta_orig = prefix().get_codditta(); _msk->set_handler(nascosto_handler); _msk->set_handler(F_STATO, stato_invio); _msk->set_handler(F_DITTAINV, ditta_handler); @@ -759,6 +762,13 @@ bool Tabinv_application::user_create() return TRUE; } +bool Tabinv_application::user_destroy() +{ + Tab_application::user_destroy(); + if (_ditta_orig > -1) prefix().set_codditta(_ditta_orig); + return TRUE; +} + cg6500(int argc, char* argv[]) { Tabinv_application* a = new Tabinv_application; diff --git a/cg/cg6900.cpp b/cg/cg6900.cpp index 9f163ffd6..b92ac3b85 100755 --- a/cg/cg6900.cpp +++ b/cg/cg6900.cpp @@ -755,14 +755,16 @@ bool TInv_cont::tabella_ditta() _flag_bollato = ind.get_bool("B7"); // Compila l'array contenente le causali di corrispondenza per l'invio extracontabile + dep = ""; TString s5(ind.get("S5")); _tab_cau.destroy(); _tab_cau.add(s5.mid(0,3)); _tab_cau.add(s5.mid(3,3)); _tab_cau.add(s5.mid(6,3)); + _tab_cau.add(dep); // corrisponde al tipo dell'abbuono. _tab_cau.add(s5.mid(9,3)); _tab_cau.add(s5.mid(12,3)); - _tab_cau.add(s5.mid(16,3)); + _cpg_nc = ind.get("S7"); // condizione pagamento (rimessa diretta) per le note di credito return TRUE; } diff --git a/cg/cg6900.h b/cg/cg6900.h index 78eed266c..bd56d174f 100755 --- a/cg/cg6900.h +++ b/cg/cg6900.h @@ -77,7 +77,7 @@ class TInv_cont : public TApplication char _scelta; TString _control_rec, _header, _trasf, _std, _stato, _marker, _nome_simbolico; - TString _files, _codcaus, _numdoc, _reg, _codpag, _tipodoc, _codcausm, _sigle; + 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_bollato; long _ditta, _protiva, _uprotiva, _codcf, _numrec, _tot_rec; diff --git a/cg/cg6901.cpp b/cg/cg6901.cpp index e56e8ad49..ddb950819 100755 --- a/cg/cg6901.cpp +++ b/cg/cg6901.cpp @@ -97,15 +97,17 @@ bool TLista_archivi::tabella_ditta() _files << "B"; // Compila l'array contenente le causali di corrispondenza per l'invio extracontabile + dep = ""; TString s5(ind.get("S5")); _tab_cau.destroy(); _tab_cau.add(s5.mid(0,3)); _tab_cau.add(s5.mid(3,3)); _tab_cau.add(s5.mid(6,3)); + _tab_cau.add(dep); // corrisponde al tipo dell'abbuono. _tab_cau.add(s5.mid(9,3)); _tab_cau.add(s5.mid(12,3)); - _tab_cau.add(s5.mid(16,3)); - + _cpg_nc = ind.get("S7"); // condizione pagamento (rimessa diretta) per le note di credito + _cpg_nc.trim(); return TRUE; } @@ -962,6 +964,7 @@ void TLista_archivi::controlla_fatture(char file) int nriga = _part->get_int (PART_NRIGA); long nreg = _part->get_long(PART_NREG); int numrig = _part->get_int (PART_NUMRIG); + int tipomov = _part->get_int (PART_TIPOMOV); if (nriga == 9999) continue; @@ -973,12 +976,19 @@ void TLista_archivi::controlla_fatture(char file) else if (nreg == 0 && codcaus.empty()) // Allora fa parte del saldaconto extracontabile: si controlli la tabella di corrispondenza relativa al tipo mov. { - if (((TString&) _tab_cau[_part->get_int(PART_TIPOMOV)-1]).trim().empty()) + TString& s = (TString&) _tab_cau[tipomov-1]; + s.trim(); + if (s.empty()) { errore = TRUE; stampa.add(" - Rilevato un movimento extracontabile senza causale. Compilare tabella di corrispondenza"); } } + if (tipomov == 2 && _cpg_nc.empty()) + { + errore = TRUE; + stampa.add(" - Rilevata una nota di credito senza codice pagamento. Compilare tabella di corrispondenza"); + } if (numrig > 99) { errore = TRUE; diff --git a/cg/cg6901.h b/cg/cg6901.h index 495658b1d..bafa383c4 100755 --- a/cg/cg6901.h +++ b/cg/cg6901.h @@ -31,7 +31,7 @@ class TLista_archivi : public TApplication TLocalisamfile* _pagsca; TArray _tab_cau; // tabella di corrispondenza causali per invio saldaconto extracontabile a sistema - TString _files, _ragsoc; + TString _files, _ragsoc,_cpg_nc; TDate _datalimite; long _ditta; bool _errore_grave; diff --git a/cg/cg6902.cpp b/cg/cg6902.cpp index b2ecfc84c..c1ff95def 100755 --- a/cg/cg6902.cpp +++ b/cg/cg6902.cpp @@ -1655,7 +1655,12 @@ void TInv_cont::partita2trasfer(TString& record, bool crea_record_riferimento) record.overwrite(str,106); //Data cambio if (tipomov != 1) - { + { + if (tipomov == 2) // Note di credito sia contabili che extracontabili + { + str.format("%2s",(const char*) _cpg_nc); + record.overwrite(str,112); + } int tipopag = _tpart->get_int (PART_TIPOPAG); str.format("%d", tipopag); record.overwrite(str,114); //Tipo pagamento @@ -1664,7 +1669,7 @@ void TInv_cont::partita2trasfer(TString& record, bool crea_record_riferimento) str = riconverti(datapag,FALSE); str.format("%06s", (const char*) str); record.overwrite(str,140); //Data pagamento - } + } TString sez = _tpart->get(PART_SEZ); str.format("%s", (const char*) sez);