From 7cb6b921f843a630262ccb6ce000d870ef7b5182 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 7 Nov 1995 10:07:04 +0000 Subject: [PATCH] sc0101.cpp Corretti conflitti sc1200.cpp Corretta apertura partite da saldi sc1200a.uml Aggiustata maschera git-svn-id: svn://10.65.10.50/trunk@2100 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- sc/sc0101.cpp | 110 +++++++++++++++++++++++++++++++------------------ sc/sc1200.cpp | 49 ++++++++++++++-------- sc/sc1200a.uml | 9 ++-- 3 files changed, 104 insertions(+), 64 deletions(-) diff --git a/sc/sc0101.cpp b/sc/sc0101.cpp index 9a53faef9..231e97b4b 100755 --- a/sc/sc0101.cpp +++ b/sc/sc0101.cpp @@ -23,27 +23,32 @@ protected: // TMask virtual void start_run(); virtual bool stop_run(KEY k); -protected: +protected: + static bool totdoc_handler(TMask_field& f, KEY k); static bool pag_notify(TSheet_field& ps, int r, KEY k); static bool pag_handler(TMask_field& f, KEY key); static bool reset_handler(TMask_field& f, KEY key); static bool recalc_handler(TMask_field& f, KEY key); static bool nrate_handler(TMask_field& f, KEY key); static bool codcab_handler(TMask_field& f, KEY key); - + + TPagamento& pagamento() const { return *_pag; } TSheet_field& pag_sheet() const { return (TSheet_field&)field(FS_RATESHEET); } + void pag2sheet(); void read_scadenze(); void write_scadenze() const; public: TFattura_mask(TRiga_partite& fattura, const TString& codpag); - virtual ~TFattura_mask() {} + virtual ~TFattura_mask(); }; TFattura_mask::TFattura_mask(TRiga_partite& fattura, const TString& codpag) : TMask("sc0100b"), _fattura(fattura), _pag(NULL) -{ +{ + enable(FS_IMPONIBILI); + set_handler(FS_IMPONIBILI, totdoc_handler); set_handler(FS_RESET, reset_handler); set_handler(FS_RECALC, recalc_handler); set_handler(FS_NRATE, nrate_handler); @@ -54,10 +59,15 @@ TFattura_mask::TFattura_mask(TRiga_partite& fattura, const TString& codpag) pag_sheet().set_handler(pag_handler); const TRiga_partite& partita = _fattura; - const TString16 datadoc = partita.get(PART_DATADOC); + const TString datadoc = partita.get(PART_DATADOC); _pag = new TPagamento(codpag, datadoc); } - + +TFattura_mask::~TFattura_mask() +{ + delete _pag; +} + void TFattura_mask::start_run() { read_scadenze(); @@ -71,6 +81,14 @@ bool TFattura_mask::stop_run(KEY k) return ok; } +void TFattura_mask::pag2sheet() +{ + TPagamento& pag = pagamento(); + TSheet_field& ps = pag_sheet(); + pag.set_sheet(ps); + _pag_rows = ps.rows_array(); +} + bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k) { if (k == K_INS || k == K_DEL) @@ -87,7 +105,7 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k) const int impos = in_valuta ? 2 : 1; bool doit = TRUE, m_imp = FALSE, m_perc = FALSE, m_pag = FALSE; - bool m_scad = FALSE, m_tipo = FALSE, mod = FALSE; + bool m_scad = FALSE, m_tipo = FALSE, m_ulc = FALSE, mod = FALSE; word ahiahi = P_OK; const bool recalc = fm.get_bool(FS_RECALC); @@ -100,6 +118,7 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k) const TString newi = ns.get(impos); // Imponibile (lire o valuta) const TString newp = ns.get(3); // Percentuale const TString newt = ns.get(4); // Tipo pagamento + const TString newu = ns.get(5); // Ulteriore classificazione // qui viene il bello, si fa per dire if (news != ts.get(0)) // modificata data scadenza @@ -114,7 +133,8 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k) } if (newt != ts.get(4)) // modificato tipo pagamento mod = m_tipo = TRUE; - + if (newu != ts.get(5)) // modificato tipo pagamento + mod = m_ulc = TRUE; // settato da recalc_rate se occorre ridefinire lo sheet // aggiungendo o togliendo righe @@ -128,7 +148,8 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k) (m_perc ? (const char*)newp : (const char*)newi) : NULL), (m_scad ? (const char*)news : NULL), - (m_tipo ? (const char*)newt : NULL), + (m_tipo ? (const char*)newt : NULL), + (m_ulc ? (const char*)newu : NULL), rdiff, mcomm, need_recalc); // see if rdiff changed fm.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2"); @@ -163,13 +184,27 @@ bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k) else if (recalc && mod && need_recalc) { // ridefinisci lo sheet sulla base delle nuove rate - pag.set_sheet(ps); - rws = ps.rows_array(); + fm.pag2sheet(); } return doit; } + +bool TFattura_mask::totdoc_handler(TMask_field& f, KEY k) +{ + if (k == K_TAB && f.focusdirty()) + { + TFattura_mask& fm = (TFattura_mask&)f.mask(); + TPagamento& pag = fm.pagamento(); + const real tot(f.get()); + pag.set_total(tot, ZERO, ZERO); + pag.set_rate_auto(); + fm.pag2sheet(); + } + return TRUE; +} + bool TFattura_mask::pag_handler(TMask_field& f, KEY key) { if (key == K_TAB || key == K_ENTER) @@ -218,13 +253,9 @@ bool TFattura_mask::nrate_handler(TMask_field& f, KEY key) { TFattura_mask& fm = (TFattura_mask&)f.mask(); TPagamento& pag = *fm._pag; - pag.set_numero_rate(atoi(f.get())); if (pag.dirty()) - { - TSheet_field& ps = (TSheet_field&)fm.field(FS_RATESHEET); - pag.set_sheet(ps); - } + fm.pag2sheet(); } return TRUE; } @@ -235,7 +266,7 @@ bool TFattura_mask::codcab_handler(TMask_field& f, KEY key) { const TMask& m = f.mask(); const short id = f.dlg() == FS_NSCAB ? FS_NSABI : FS_VSABI; - const int pos = id == FS_NSABI ? 6 : 8; + const int pos = id == FS_NSABI ? 7 : 9; const TString16 abi = m.get(id); const TString16 cab = m.get(id+1); TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET); @@ -284,11 +315,11 @@ void TFattura_mask::read_scadenze() for (int i = 1; i <= partita.rate(); i++) { const TRiga_scadenze& scadenza = partita.rata(i); - real importo = scadenza.get(SCAD_IMPORTO); - const TDate scad = scadenza.get(SCAD_DATASCAD); - const int tipop = scadenza.get_int(SCAD_TIPOPAG); - const bool paid = scadenza.get_bool(SCAD_PAGATA); - const TString16 ulc = scadenza.get(SCAD_ULTCLASS); + real importo = scadenza.get(SCAD_IMPORTO); + const TDate scad = scadenza.get(SCAD_DATASCAD); + const int tipop = scadenza.get_int(SCAD_TIPOPAG); + const bool paid = scadenza.get_bool(SCAD_PAGATA); + const TString ulc = scadenza.get(SCAD_ULTCLASS); if (scadenza.in_valuta()) { const real impval(scadenza.get(SCAD_IMPORTOVAL)); @@ -298,23 +329,22 @@ void TFattura_mask::read_scadenze() pag.set_rata(i-1, importo, ZERO, scad, tipop, ulc, paid); TToken_string& str = ps.row(i-1); - str.add(scadenza.get(SCAD_CODABIPR), 6); - str.add(scadenza.get(SCAD_CODCABPR), 7); - str.add(scadenza.get(SCAD_CODABI), 8); - str.add(scadenza.get(SCAD_CODCAB), 9); + str.add(scadenza.get(SCAD_CODABIPR), 7); + str.add(scadenza.get(SCAD_CODCABPR), 8); + str.add(scadenza.get(SCAD_CODABI), 9); + str.add(scadenza.get(SCAD_CODCAB), 10); if (i == 1) { - set(FS_NSABI, str.get(6)); - set(FS_NSCAB, str.get(7)); - set(FS_VSABI, str.get(8)); - set(FS_VSCAB, str.get(9)); + set(FS_NSABI, str.get(7)); + set(FS_NSCAB, str.get(8)); + set(FS_VSABI, str.get(9)); + set(FS_VSCAB, str.get(10)); set(FS_AGENTE, scadenza.get(SCAD_CODAG)); } } } else { - pag.set_rate_auto(); } @@ -324,13 +354,12 @@ void TFattura_mask::read_scadenze() set(FS_MCOMM, pag.mese_commerciale() ? "X" : ""); set(FS_RECALC, "X", TRUE); set(FS_NRATE, pag.n_rate()); - - pag.set_sheet(ps); - _pag_rows = ps.rows_array(); - + // se la prima rata e' fissa non si tocca if (pag.tipo_prima_rata() > 3) ps.disable_cell(0,-1); + + pag2sheet(); } void TFattura_mask::write_scadenze() const @@ -379,8 +408,6 @@ void TFattura_mask::write_scadenze() const bool TGame_mask::edit_fattura(TPartita& p, int nriga) { - TString16 codpag; - const bool nuova = nriga <= 0; if (nuova) nriga = nuova_riga(p); @@ -404,10 +431,11 @@ bool TGame_mask::edit_fattura(TPartita& p, int nriga) void TSaldaconto_app::edit_partite(const TMask& m) { - TBill b; // Legge il conto della riga selezionata - b.set(m.get_int(F_GRUPPO), m.get_int(F_CONTO), - m.get_long(F_SOTTOCONTO), m.get(F_TIPO)[0]); - + const char t = m.get(F_TIPO)[0]; + const int g = m.get_int(F_GRUPPO); + const int c = m.get_int(F_CONTO); + const long s = m.get_long(F_SOTTOCONTO) + const TBill b(g, c, s, t); // Legge il conto della riga selezionata TGame_mask gm(b, 0, 0); gm.run(); if (gm.changed() && yesno_box("Si vogliono salvare le partite modificate?")) diff --git a/sc/sc1200.cpp b/sc/sc1200.cpp index 5ed3b3cbe..1b07c2edf 100755 --- a/sc/sc1200.cpp +++ b/sc/sc1200.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -24,7 +25,10 @@ class TCreatepart_app : public TApplication TLocalisamfile* _scadenze; TLocalisamfile* _pagsca; - int _anno; + bool _num_cli, _num_for; + +protected: // Applicat + virtual void on_config_change(); protected: @@ -32,7 +36,7 @@ protected: virtual bool destroy(); virtual bool menu(MENU_TAG m); - bool zap_partite(); + bool zap_partite(int anno); public: @@ -65,14 +69,20 @@ bool TCreatepart_app::destroy() return TApplication::destroy(); } +void TCreatepart_app::on_config_change() +{ + TConfig cd(CONFIG_DITTA); + _num_cli = cd.get_bool("NrCliDx"); + _num_for = cd.get_bool("NrForDx"); +} -bool TCreatepart_app::zap_partite() +bool TCreatepart_app::zap_partite(int anno) { bool first = TRUE; - for (_partite->first(); !_partite->eof(); _partite->read(_isgreat)) + for (_partite->first(); !_partite->eof(); _partite->next()) { // ignora saldaconto altri esercizi - if (_partite->get_long(PART_ANNO) != _anno) + if (_partite->get_long(PART_ANNO) != anno) continue; if (first) @@ -127,7 +137,7 @@ bool TCreatepart_app::menu(MENU_TAG) while (m.run() == K_ENTER) { - _anno = m.get_int(F_ANNO); + const int anno = m.get_int(F_ANNO); desccl = m.get(F_DESCCL); descfo = m.get(F_DESCFO); @@ -135,11 +145,11 @@ bool TCreatepart_app::menu(MENU_TAG) m.set(F_NUMPART, n_part); // sputtana tutto il saldaculo - if (!zap_partite()) + if (!zap_partite(anno)) continue; TRelation saldi(LF_SALDI); - saldi.curr().put(SLD_ANNOES, _anno); + saldi.curr().put(SLD_ANNOES, anno); TCursor cur(&saldi, "", 1, &saldi.curr(), &saldi.curr()); const long items = cur.items(); @@ -162,7 +172,7 @@ bool TCreatepart_app::menu(MENU_TAG) TSaldo sld; // ciuccia il saldo e vedi se e' movimentato nell'esercizio corrente - if (!sld.ultima_immissione_verifica(_anno, gruppo, conto, sottoc, indbil, 1)) + if (!sld.ultima_immissione_verifica(anno, gruppo, conto, sottoc, indbil, 1)) { // non movimentato: se e' conto patrimoniale.... if (!(indbil == 1 || indbil == 2 || indbil == 5)) @@ -171,12 +181,12 @@ bool TCreatepart_app::menu(MENU_TAG) continue; } // .. vedi saldo esercizio precedente, altrimenti inkul - sld.saldofin_esprec(_anno, gruppo, conto, sottoc); + sld.saldofin_esprec(anno, gruppo, conto, sottoc); } // genera importo con sezione appropriata TImporto saldo(cur.curr().get_char(SLD_FLAGSALINI), sld.saldoini()); - TImporto pdare('D', sld.prgdare()); + TImporto pdare('D', sld.prgdare()); TImporto pavere('A', sld.prgavere()); saldo += pdare; @@ -188,13 +198,16 @@ bool TCreatepart_app::menu(MENU_TAG) if (!saldo.is_zero()) { const TBill clifo(gruppo, conto, sottoc, cf); - TPartita game(clifo, _anno, "*"); - + TString16 numero("*"); + if ((cf == 'C' && _num_cli) || (cf == 'F' && _num_for)) + numero.right_just(7); + TPartita game(clifo, anno, numero); + TRiga_partite& riga = game.new_row(); - riga.put(PART_DATAREG, today); - riga.put(PART_DATADOC, today); - riga.put(PART_SEZ, saldo.sezione()); - riga.put(PART_IMPORTO, saldo.valore()); + riga.put(PART_DATAREG, today); + riga.put(PART_DATADOC, today); + riga.put(PART_SEZ, saldo.sezione()); + riga.put(PART_IMPORTO, saldo.valore()); riga.put(PART_DESCR, cf == 'C' ? desccl : descfo); // cazzata dare/avere/fare/baciare/cagare @@ -226,7 +239,7 @@ bool TCreatepart_app::menu(MENU_TAG) end_wait(); } else - message_box("Nessun saldo presente per l'esercizio %d", _anno); + message_box("Nessun saldo presente per l'esercizio %d", anno); } // while run return FALSE; diff --git a/sc/sc1200a.uml b/sc/sc1200a.uml index e3cde7524..42b0647a4 100755 --- a/sc/sc1200a.uml +++ b/sc/sc1200a.uml @@ -10,17 +10,17 @@ END TEXT DLG_NULL BEGIN - PROMPT 31 1 "@bATTENZIONE" + PROMPT 31 1 "@bATTENZIONE" END TEXT DLG_NULL BEGIN - PROMPT 14 3 "@bLa generazione della partite puo' richiedere" + PROMPT 14 3 "@bLa generazione della partite puo' richiedere" END TEXT DLG_NULL BEGIN - PROMPT 18 4 "@btempo. Siate certi di voler proseguire." + PROMPT 18 4 "@btempo. Siate certi di voler proseguire." END NUMBER F_ANNO 4 @@ -33,8 +33,7 @@ BEGIN DISPLAY "Data fine esercizio " D1 OUTPUT F_ANNO CODTAB CHECKTYPE REQUIRED - HELP "Anno di esercizio del quale si desidera la generazione delle partite" - WARNING "L' anno di esercizio e' obbligatorio" + WARNING "Anno di esercizio assente" END