diff --git a/pr/pr0700.cpp b/pr/pr0700.cpp index a44b7b758..8125733bb 100755 --- a/pr/pr0700.cpp +++ b/pr/pr0700.cpp @@ -241,7 +241,7 @@ bool TGestione_provv_app::rate_sheet_notify(TSheet_field& ds, int r, KEY key) { TProvvigioni_agente* pa = app()._prag; if (__current_key.empty() || pa->items() == 0) - return TRUE; + return true; TRate_doc& rd = pa->rate(__current_key); @@ -252,25 +252,25 @@ bool TGestione_provv_app::rate_sheet_notify(TSheet_field& ds, int r, KEY key) TRata* rt = new TRata; // Nuova rata: va segnalata come inserita (generata = blank) rd.add_rata(rt); - app()._dirty = TRUE; + app()._dirty = true; } break; case K_ENTER: // Notifica dell'avvenuta modifica di una rata { TRata& rt = rd[r]; // Sostituisce i valori della riga corrente rt.set(ds.row(r)); - app()._dirty = TRUE; + app()._dirty = true; } break; case K_DEL: // Notifica della cancellazione di una riga rd.remove_rata(r); rd.pack_rate(); // Effettua anche il pack degli elementi (corrispondenza 1 a 1 tra sheet ed array) - app()._dirty = TRUE; + app()._dirty = true; break; default: break; } - return TRUE; + return true; } bool TGestione_provv_app::doc_sheet_notify(TSheet_field& ds, int r, KEY key) @@ -374,7 +374,7 @@ bool TGestione_provv_app::doc_sheet_notify(TSheet_field& ds, int r, KEY key) __current_key.cut(0); if (pa->items() == 0) { - TSheet_field& rs = (TSheet_field&) ds.mask().field(F_RATE_SHEET); + TSheet_field& rs = ds.mask().sfield(F_RATE_SHEET); if (rs.items() > 0) // Resetta lo spreadsheet se vi sono delle righe rs.reset(); } @@ -394,10 +394,10 @@ bool TGestione_provv_app::create() _msk = new TMask("pr0700b") ; _prag = new TProvvigioni_agente; - TSheet_field & sf = (TSheet_field&)_msk->field(F_DOC_SHEET); + TSheet_field & sf = _msk->sfield(F_DOC_SHEET); sf.set_notify(doc_sheet_notify); sf.sheet_mask().set_handler(F_NDOC,ndoc_handler); - TSheet_field & rs = (TSheet_field&)_msk->field(F_RATE_SHEET); + TSheet_field & rs = _msk->sfield(F_RATE_SHEET); rs.set_notify(rate_sheet_notify); TMask& sm = rs.sheet_mask(); sm.set_handler(F_RATA,nrata_handler); @@ -421,8 +421,8 @@ void TGestione_provv_app::fill_sheet_doc() TString_array kl; const int items = _prag->documenti(kl); kl.sort(); // Cosi' i documenti sono in ordine - TSheet_field & sf = (TSheet_field&)_msk->field(F_DOC_SHEET); - TSheet_field & rs = (TSheet_field&)_msk->field(F_RATE_SHEET); + TSheet_field& sf = _msk->sfield(F_DOC_SHEET); + TSheet_field& rs = _msk->sfield(F_RATE_SHEET); __current_key = ""; rs.reset(); @@ -502,20 +502,20 @@ void TGestione_provv_app::load_provvigioni(TMask* m) const char* msg = _prag->items() == 0 ? TR("Registrare i dati inseriti") : TR("Registrare le modifiche") ; fill_sheet_doc(); // Inizializza lo sheet dei documenti - _dirty = FALSE; + _dirty = false; int err = NOERR; do { k = _msk->run(); bool to_write = k == K_ENTER; - repeat = FALSE; + repeat = false; if (k == K_ESC && _dirty) { k = yesnocancel_box(msg); if (k == K_ESC) - repeat = TRUE; + repeat = true; else if (k == K_YES) - to_write = TRUE; + to_write = true; } if (to_write) { @@ -525,7 +525,7 @@ void TGestione_provv_app::load_provvigioni(TMask* m) err = _prag->write(); } else - repeat = TRUE; + repeat = true; } } while (repeat); if (err != NOERR) @@ -535,12 +535,11 @@ void TGestione_provv_app::load_provvigioni(TMask* m) void TGestione_provv_app::main_loop() { - bool ok = TRUE; TMask* m = new TMask("pr0700a"); + bool ok = true; while (ok) { - xvtil_statbar_set(TR("Ricerca"), TRUE); - m->reset(); + xvtil_statbar_set(TR("Ricerca"), true); ok = m->run() == K_ENTER; if (ok) load_provvigioni(m); @@ -551,6 +550,6 @@ void TGestione_provv_app::main_loop() int pr0700(int argc, char** argv) { TGestione_provv_app a; - a.run(argc,argv,TR("Gestione provvigioni")); + a.run(argc, argv, TR("Gestione provvigioni")); return 0; } diff --git a/pr/pr1300.cpp b/pr/pr1300.cpp index c968d6146..f24237444 100755 --- a/pr/pr1300.cpp +++ b/pr/pr1300.cpp @@ -18,6 +18,8 @@ class TStampa_schedeprovv_form : public TForm TPagamento _pagamento; protected: + void init_pagamento(); + virtual bool validate(TForm_item &, TToken_string &); public: @@ -29,36 +31,37 @@ public: TStampa_schedeprovv_form::TStampa_schedeprovv_form(const char* name) : TForm(name) { } +void TStampa_schedeprovv_form::init_pagamento() +{ + TDocumento doc(TForm::cursor()->curr(LF_DOC)); + _pagamento = doc.pagamento(); + real importo = doc.get(_basecalcolo); + if (doc.is_nota_credito()) + importo = -importo; + _pagamento.set_total(importo,ZERO,ZERO); + _pagamento.set_rate_auto(); +} + bool TStampa_schedeprovv_form::validate(TForm_item &cf, TToken_string &s) { const TFixed_string code(s.get(0)); if (code == "_BASECALCOLO") - { + { + const TRectype& curr = TForm::cursor()->curr(); real valore; if (_basecalcolo.empty()) { const real cambio = TForm::find_field('B', odd_page, 666).get(); - valore = TForm::cursor()->curr().get_real(PROV_IMPRATA)*cambio; + valore = curr.get_real(PROV_IMPRATA)*cambio; } else { - const int nriga = TForm::cursor()->curr().get_int(PROV_NRIGA); + const int nriga = curr.get_int(PROV_NRIGA); if (nriga == 1) - { - TDocumento doc(TForm::cursor()->curr(LF_DOC)); - _pagamento = doc.pagamento(); - real importo = doc.get(_basecalcolo); - if (doc.tipo().nota_credito()) - importo = -importo; - const TCurrency zero; - _pagamento.set_total(importo,zero,zero); - _pagamento.set_rate_auto(); - } - const int nrata = TForm::cursor()->curr().get_int(PROV_NRATA); + init_pagamento(); + const int nrata = curr.get_int(PROV_NRATA); if (nrata > 0 && nrata <= _pagamento.n_rate()) valore = _pagamento.importo_rata(nrata-1); - else - valore = ZERO; } cf.set(valore.string()); } @@ -197,25 +200,26 @@ void TStampa_schedeprovv::print_or_preview(bool paper) } if (_m->get_bool(F_NOZERO)) { - bool not_empty = filter.not_empty(); + const bool not_empty = filter.not_empty(); if (not_empty) { filter.insert("("); filter << ") && ("; } - filter << "(" << PROV_IMPPRDOC << "!= 0)"; + filter << "STR(" << PROV_IMPPROVV << ">0)"; // It was (PROV_IMPPRDOC!=0) if (not_empty) filter << ")"; } if (_m->get(F_DADATA).not_empty() || _m->get(F_ADATA).not_empty()) { - TDate datam; - bool not_empty = filter.not_empty(); + const bool not_empty = filter.not_empty(); if (not_empty) { filter.insert("("); filter << ") && ("; - } + } + /* + TDate datam; if (_m->get(F_DADATA).not_empty()) { datam = _m->get_date(F_DADATA); @@ -228,6 +232,14 @@ void TStampa_schedeprovv::print_or_preview(bool paper) datam = _m->get_date(F_ADATA); filter << "(ANSI(" << PROV_DATADOC << ")<=\"" << datam.string(ANSI) << "\")"; } + */ + if (!_m->field(F_DADATA).empty() || !_m->field(F_ADATA).empty()) + { + filter << "BETWEEN(" << PROV_DATADOC + << ',' << _m->get_date(F_DADATA).date2ansi() + << ',' << _m->get_date(F_ADATA).date2ansi() + << ")"; + } if (not_empty) filter << ")"; } @@ -258,11 +270,10 @@ void TStampa_schedeprovv::print_or_preview(bool paper) frm.cursor()->setfilter(filter); TRectype start(LF_PROVV),end(LF_PROVV); - if (_m->get(F_DAAGE).not_empty()) - start.put(PROV_CODAGE,_m->get(F_DAAGE)); - if (_m->get(F_AAGE).not_empty()) - end.put(PROV_CODAGE,_m->get(F_AAGE)); - frm.cursor()->setregion(start,end); + start.put(PROV_CODAGE, _m->get(F_DAAGE)); + end.put(PROV_CODAGE, _m->get(F_AAGE)); + frm.cursor()->setregion(start, end); + frm.cursor()->freeze(true); frm.set_basecalcolo(_m->get(F_FORMULA)); @@ -274,9 +285,10 @@ void TStampa_schedeprovv::print_or_preview(bool paper) frm.find_field('B',odd_page,"RATEDOC").show(!_m->get_bool(F_RAGGRATE)); frm.print(); if (_m->get(F_DEFINITIVA)[0]=='D') - { riporta_pagamenti(*frm.cursor()); - } + + frm.cursor()->freeze(false); + printer().set_printtype(pt); // Restore printer mode } diff --git a/pr/pr1300a.frm b/pr/pr1300a.frm index add139f30..6612b7b3a 100755 --- a/pr/pr1300a.frm +++ b/pr/pr1300a.frm @@ -5,7 +5,7 @@ #define G_TOTCLI 20 #define G_TOTDOC 30 -USE LF_PROVV BY CODAGE CODCLI CODNUM NDOC NRATA +USE LF_PROVV BY CODAGE CODCLI CODNUM DATADOC NRATA JOIN LF_CLIFO INTO TIPOCF="C"|CODCF=CODCLI JOIN LF_COMUNI TO LF_CLIFO INTO STATO==STATOCF|COM==COMCF diff --git a/pr/prlib01.cpp b/pr/prlib01.cpp index 01e32a36e..b71a43677 100755 --- a/pr/prlib01.cpp +++ b/pr/prlib01.cpp @@ -308,9 +308,9 @@ void TRate_doc::set(TToken_string& t) _codnum = t.get(1); _ndoc = t.get_long(2); _datadoc = t.get(3); - _impdoc = real::ita2eng(t.get(4)); - _impprdoc = real::ita2eng(t.get(5)); - _impnetdoc = real::ita2eng(t.get(6)); + _impdoc = t.get(4); + _impprdoc = t.get(5); + _impnetdoc = t.get(6); _codcf = t.get_long(7); _codval = t.get(8); _cambio = t.get(9);