From 71bc283eb7e021f67776a674fc4c94c3a3107209 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 28 Mar 1997 12:03:29 +0000 Subject: [PATCH] cg2100.cpp Aggiunte funzioni per import/export per il Somalo cg2100a.uml Tolta data si competenza cg2100b.uml Tolto required dalla data di competenza cg2100c.uml Tolto required dalla data di competenza cg2102.cpp Corretto handler della data di competenza cg2102.h Aggiunti metodi per l'Eritreo cg2104.cpp Adattato pag_notify per gestire meglio l'Etiope git-svn-id: svn://10.65.10.50/trunk@4241 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2100.cpp | 176 +++++++++++++++++++++++++++++++++++++++++++++++-- cg/cg2100a.uml | 3 + cg/cg2100b.uml | 3 +- cg/cg2100c.uml | 5 +- cg/cg2102.cpp | 14 ++-- cg/cg2102.h | 2 + cg/cg2104.cpp | 32 ++++----- 7 files changed, 207 insertions(+), 28 deletions(-) diff --git a/cg/cg2100.cpp b/cg/cg2100.cpp index f4f5c57fe..0ae25853a 100755 --- a/cg/cg2100.cpp +++ b/cg/cg2100.cpp @@ -12,6 +12,9 @@ // Nomi dei campi #include +#include +#include +#include #include #include @@ -58,8 +61,9 @@ TMask* TPrimanota_application::load_mask(int n) { m->set_handler(F_NUMREG, num_handler); m->set_handler(F_CODCAUS, caus_query_handler); - m->set_handler(F_DATAREG, datareg_handler); - m->set_handler(F_DATACOMP, datacomp_handler); + m->set_handler(F_DATAREG, datareg_handler); + // DATACOM new way + // m->set_handler(F_DATACOMP, datacomp_handler); TConfig c(CONFIG_STUDIO, "cg"); @@ -537,8 +541,9 @@ void TPrimanota_application::init_query_mode(TMask& m) } else { - m.set(F_DATAREG, _last_dreg); - m.set(F_DATACOMP, _last_dcom); + m.set(F_DATAREG, _last_dreg); + // DATACOMP new way + // m.set(F_DATACOMP, _last_dcom); } _incasso->_step = 0; // Azzera flag di incasso immediato @@ -601,7 +606,10 @@ const char* TPrimanota_application::get_next_key() _tmp.add(m.get(F_DATAREG)); _tmp.add(F_DATACOMP); // Ricopia data competenza - _tmp.add(m.get(F_DATACOMP)); + if (m.field(F_DATACOMP).empty()) + _tmp.add(m.get(F_DATAREG)); + else + _tmp.add(m.get(F_DATACOMP)); if (iva() == iva_vendite) { @@ -1554,6 +1562,164 @@ bool TPrimanota_application::link_m770() return tipo_coll > 0; } +HIDDEN void ini2bill(TConfig& ini, TBill& bil, bool contro) +{ + char tipo = ini.get_char(contro ? "TIPOC" : "TIPO"); + int gruppo = ini.get_int(contro ? "GRUPPOC" : "GRUPPO"); + int conto = ini.get_int(contro ? "CONTOC" : "CONTO"); + long sottoconto = ini.get_long(contro ? "SOTTOCONTOC" : "SOTTOCONTO"); + bil.set(gruppo, conto, sottoconto, tipo); +} + +HIDDEN bool set_not_empty(TMask& msk, int id, TConfig& ini, const char* var) +{ + const TString& val = ini.get(var); + bool ok = val.not_empty(); + if (ok) + msk.set(id, val); + return ok; +} + +HIDDEN bool add_not_empty(TToken_string& str, int pos, TConfig& ini, const char* var) +{ + const TString& val = ini.get(var); + bool ok = val.not_empty(); + if (ok) + str.add(val, pos); + return ok; +} + +void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query) +{ + TRelation_application::ini2mask(ini, msk, query); + if (query) + { + set_not_empty(msk, F_CODCAUS, ini, MOV_CODCAUS); + set_not_empty(msk, F_DATAREG, ini, MOV_DATAREG); + } + else + { + int i; + + TSheet_field& is = ivas(); + for (i = 0; ini.set_paragraph(format("25,%d", i+1)); i++) + { + TToken_string& riga = is.row(i); + + iva_notify(is, i, K_SPACE); + add_not_empty(riga, 0, ini, RMI_IMPONIBILE); // Imponibile 101 + add_not_empty(riga, 1, ini, RMI_CODIVA); // IVA 102 + add_not_empty(riga, 2, ini, RMI_TIPODET); // Detrazione 103 + add_not_empty(riga, 3, ini, RMI_IMPOSTA); // Imposta 104 + + TBill c; ini2bill(ini, c, FALSE); + if (c.gruppo() > 0) + c.add_to(riga, 4, 0x7); // Conto 105-110 + + iva_notify(is, i, K_ENTER); + } + + TSheet_field& cg = cgs(); + for (i = 0; ini.set_paragraph(format("24,%d", i+1)); i++) + { + TToken_string& riga = cg.row(-1); + + TImporto import(ini.get_char(RMV_SEZIONE), real(ini.get(RMV_IMPORTO))); + if (!import.is_zero()) + import.add_to(riga, 0); // Dare/Avere 101-102 + + TBill conto; ini2bill(ini, conto, FALSE); + if (conto.gruppo() > 0) + conto.add_to(riga, 2, 0x3); // Conto 103-107 + + riga.add("", 7); // Codice descrizione 108 + riga.add(ini.get(RMV_DESCR), 8); // Descrizione riga 109 + + ini2bill(ini, conto, TRUE); + if (conto.gruppo() > 0) + conto.add_to(riga, 9, 0x3); // Contropartita 110-114 + + riga.add(ini.get(RMV_NUMGIO), 13); + const char tipo = ini.get_char(RMV_ROWTYPE); + riga.add(tipo, 14); // Tipo di riga 115 + + disable_cgs_cells(i, tipo); + } + + calcola_imp(); // Calcola totale imponibile ed imposte + + TSheet_field& pag = pags(); + const int start_items = pag.items(); + + msk.reset(FS_RECALC); // Disabilita ricalcolo automatico + for (i = 0; ini.set_paragraph(format("29,%d", i+1)); i++) + { + TToken_string& row = pag.row(i); + if (i >= start_items) + pag_notify(pag, i, K_CTRL+K_INS); + + pag_notify(pag, i, K_SPACE); + add_not_empty(row, 0, ini, SCAD_DATASCAD); + add_not_empty(row, 1, ini, SCAD_IMPORTO); + add_not_empty(row, 2, ini, SCAD_IMPORTOVAL); + pag_notify(pag, i, K_ENTER); + } + pagamento().set_sheet(pag); + } +} + +void TPrimanota_application::mask2ini(TMask& msk, TConfig& ini) +{ + TRelation_application::mask2ini(msk, ini); + int i, f; + + for (i = 0; i < _rel->cg_items(); i++) + { + ini.set_paragraph(format("24,%d", i+1)); + + const TRectype& rec = _rel->cg(i); + for (f = rec.items()-1; f >= 0; f--) + { + const char* name = rec.fieldname(f); + ini.set(name, rec.get(name)); + } + } + + for (i = 0; i < _rel->iva_items(); i++) + { + ini.set_paragraph(format("25,%d", i+1)); + const TRectype& rec = _rel->iva(f); + for (f = rec.items()-1; f >= 0; f--) + { + const char* name = rec.fieldname(i); + ini.set(name, rec.get(name)); + } + } + + if (is_fattura()) + { + const long numreg = _rel->lfile().get_long(MOV_NUMREG); + TPartita* game = partite().first(); + if (game) + { + const int rigafatt = game->prima_fattura(numreg); + if (rigafatt > 0) + { + const TRiga_partite& riga = game->riga(rigafatt); + for (int r = 1; r <= riga.rate(); r++) + { + ini.set_paragraph(format("29,%d", r)); + const TRectype& rec = riga.rata(r); + for (f = rec.items()-1; f >= 0; f--) + { + const char* name = rec.fieldname(i); + ini.set(name, rec.get(name)); + } + } + } + } + } +} int cg2100 (int argc, char** argv) { diff --git a/cg/cg2100a.uml b/cg/cg2100a.uml index 9c9fedac6..b344635a2 100755 --- a/cg/cg2100a.uml +++ b/cg/cg2100a.uml @@ -65,6 +65,8 @@ BEGIN FLAGS "D" END + +/* DATACOMP new way DATE F_DATACOMP BEGIN PROMPT 3 9 "Data di competenza " @@ -77,6 +79,7 @@ BEGIN PROMPT 52 9 "Codice esercizio " FLAGS "DRZ" END +*/ STRING F_CODCAUS 3 BEGIN diff --git a/cg/cg2100b.uml b/cg/cg2100b.uml index c21e52c69..cc157b96a 100755 --- a/cg/cg2100b.uml +++ b/cg/cg2100b.uml @@ -54,8 +54,9 @@ BEGIN PROMPT 1 4 "Data di competenza " HELP "Data di competenza dell'operazione" FIELD DATACOMP - CHECKTYPE REQUIRED MESSAGE COPY,K_DATACOMP +// DATACOMP NEW WAY +// CHECKTYPE REQUIRED END NUMBER F_ANNOES 4 diff --git a/cg/cg2100c.uml b/cg/cg2100c.uml index 7b976cc8d..f5ceb46da 100755 --- a/cg/cg2100c.uml +++ b/cg/cg2100c.uml @@ -67,7 +67,7 @@ END NUMBER F_ANNOIVA 4 BEGIN - PROMPT 32 3 "Anno IVA " + PROMPT 32 3 "Anno IVA " FIELD ANNOIVA FLAGS "D" END @@ -76,7 +76,8 @@ DATE F_DATACOMP BEGIN PROMPT 1 4 "Data competenza " FIELD DATACOMP - CHECKTYPE REQUIRED +// DATACOMP NEW WAY +// CHECKTYPE REQUIRED END NUMBER F_ANNOES 4 diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index 7f0014ce6..acb168a4c 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -1596,8 +1596,9 @@ bool TPrimanota_application::num_handler(TMask_field& f, KEY key) if (ok) // Riempie a mano i campi necessari nel caso non sia stato usata la ricerca F9 { TMask& m = f.mask(); - m.set(F_DATAREG, mov.get("DATAREG"), TRUE); - m.set(F_DATACOMP, mov.get("DATACOMP"), TRUE); + m.set(F_DATAREG, mov.get("DATAREG"), TRUE); + // DATACOMP new way + // m.set(F_DATACOMP, mov.get("DATACOMP"), TRUE); m.set(F_CODCAUS, mov.get("CODCAUS")); f.set_focusdirty(FALSE); return m.stop_run(K_AUTO_ENTER); @@ -1777,7 +1778,9 @@ bool TPrimanota_application::datacomp_handler(TMask_field& f, KEY key) if (datacomp.empty()) { datacomp = dr.string(); - f.set(datacomp); + // DATACOMP new way + if (key == K_ENTER) + f.set(datacomp); } const TDate dc(datacomp); // Data di competenza TEsercizi_contabili& esc = app()._esercizi; @@ -1863,8 +1866,9 @@ bool TPrimanota_application::datadoc_handler(TMask_field& f, KEY key) if (a.is_fattura()) { if (m.insert_mode()) - { - a.recalc_scadenze(dd); + { + if (m.get_bool(FS_RECALC)) // Evita scancellamenti indesiderati + a.recalc_scadenze(dd); } else { diff --git a/cg/cg2102.h b/cg/cg2102.h index 74fb32c19..3abb2a079 100755 --- a/cg/cg2102.h +++ b/cg/cg2102.h @@ -146,6 +146,8 @@ protected: // TApplication virtual void on_config_change(); virtual void print(); virtual bool menu(MENU_TAG m); + virtual void ini2mask(TConfig& ini, TMask& msk, bool query); + virtual void mask2ini(TMask& msk, TConfig& ini); protected: // TRelation_application virtual bool user_create(); diff --git a/cg/cg2104.cpp b/cg/cg2104.cpp index 46d3e5f31..9604d79f6 100755 --- a/cg/cg2104.cpp +++ b/cg/cg2104.cpp @@ -26,8 +26,10 @@ TPagamento& TPrimanota_application::pagamento() const bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k) { - TMask* msk = &(ps.mask()); - if (!msk->is_running()) return TRUE; // Necessario per evitare il CHECK sul pagamento nullo + TMask* msk = &(ps.mask()); + +// if (!msk->is_running()) return TRUE; // Necessario per evitare il CHECK sul pagamento nullo + if (!app().is_fattura()) return TRUE; // Necessario per evitare il CHECK sul pagamento nullo TPagamento& pag = app().pagamento(); TString_array& rws = app().pag_rows(); @@ -67,7 +69,6 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k) newp = ns.get(3); // Percentuale newt = ns.get(4); // Tipo pagamento newu = ns.get(5); // Ulteriore classificazione - // qui viene il bello, si fa per dire if (news != ts.get(0)) // modificata data scadenza @@ -91,7 +92,8 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k) if (newu != ts.get(5)) // modificata ulteriore classificazione mod = m_ulc = TRUE; - else if (m_tipo) { + else if (m_tipo) + { // forza reset di ulc se si e' modificato il tipo rata m_ulc = TRUE; newu = ""; @@ -155,8 +157,9 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k) ahiahi = P_OK; // put data as they are TToken_string& trw = pag.rata(r); - TToken_string srw = trw; - if (m_tipo) trw.add(newt,2); + TToken_string& trs = ps.row(r); + if (m_tipo) + trw.add(newt,2); if (m_ulc) trw.add(newu, 5); if (m_scad) @@ -169,7 +172,8 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k) if (pag.mese_commerciale() && (scd % 30) != 0) scd = 30 * ((scd/30)+1); trw.add(scd, 0); - } + } + trs.add(news, 0); } if (m_impl) { @@ -179,22 +183,20 @@ bool TPrimanota_application::pag_notify(TSheet_field& ps, int r, KEY k) // si ricalcola la percentuale a modifica importo in lire solo // se non c'e' l'importo in valuta const real p = pag.recalc_percrata(r, FALSE); - ps.row(r).add(p.string(), 3); + trs.add(p.string(), 3); } - ps.force_update(r); } if (m_impv) { trw.add(newv,4); const real p = pag.recalc_percrata(r, TRUE); - ps.row(r).add(p.string(), 3); - ps.force_update(r); + trs.add(p.string(), 3); } - else - if (m_tipo) - ps.force_update(r); if (mod) - rws.row(r) = ps.row(r); + { + rws.row(r) = trs; + ps.force_update(r); + } } if (ahiahi) // any error? Rimetti le righe com'erano prima