diff --git a/sc/sc2100a.uml b/sc/sc2100a.uml index 3c0459ba1..a9cb1691e 100755 --- a/sc/sc2100a.uml +++ b/sc/sc2100a.uml @@ -67,16 +67,7 @@ STRING F_LINPROF 1 BEGIN PROMPT 19 3 "" FLAGS "U" - USE LF_FORM - INPUT TIPOPROF BASE_EC_PROFILE - INPUT CODPROF[1,4] F_CODPROF - INPUT CODPROF[5,5] F_LINPROF - DISPLAY "Codice" CODPROF[1,4] - DISPLAY "Lingua" CODPROF[5,5] - DISPLAY "Descrizione@50" DESC - OUTPUT F_CODPROF CODPROF[1,4] - OUTPUT F_LINPROF CODPROF[5,5] - OUTPUT F_DESPROF DESC + COPY ALL F_CODPROF CHECKTYPE NORMAL WARNING "Codice profilo o lingua errato" END diff --git a/sc/sc2101.cpp b/sc/sc2101.cpp index 2e7c07711..88e70dda4 100755 --- a/sc/sc2101.cpp +++ b/sc/sc2101.cpp @@ -1,14 +1,9 @@ -#include -#include - #include "sc2101.h" #include "sc2100a.h" -#include - bool TEC_mask::codprof_handler(TMask_field& f, KEY k) { - if (f.to_check(k)) + if (!f.empty() && f.to_check(k)) { TEdit_field & e = (TEdit_field &) f; @@ -35,11 +30,11 @@ bool TEC_mask::lingua_handler(TMask_field& f, KEY k) { if (k == K_TAB && f.focusdirty()) { - TCursor& cur = *(((TEdit_field&)(f.mask().field(F_CODPROF))).browse()->cursor()); - // whew - TString16 lin = f.get(); + TEdit_field& cod = f.mask().efield(F_CODPROF); + TCursor& cur = *(cod.browse()->cursor()); + const TString& lin = f.get(); if (lin != cur.curr().get("CODPROF").mid(4)) - f.mask().field(F_CODPROF).check(RUNNING_CHECK); + cod.check(RUNNING_CHECK); } return TRUE; } diff --git a/sc/sc2300.cpp b/sc/sc2300.cpp index 30bf257c4..2e37ca6af 100755 --- a/sc/sc2300.cpp +++ b/sc/sc2300.cpp @@ -108,7 +108,7 @@ class TStampaScaduto : public TPrintapp TArray _t, // Array per i totali _s_date; // Date per lo scaduto - static TString _last_game; + static TString80 _last_game; static bool fil_function(const TRelation *); protected: @@ -136,7 +136,7 @@ public: TStampaScaduto(); }; -TString TStampaScaduto::_last_game; +TString80 TStampaScaduto::_last_game; inline TStampaScaduto& app() {return (TStampaScaduto&)main_app();} @@ -212,7 +212,7 @@ void TStampaScaduto::compute_all(TPartita& p, TBill& bill) const TRiga_partite& rp = p.riga(r); // se la data di registrazione della partita ' > di _limop (data lim operazione) // non deve scorrere le scadenze - const TDate data_reg(rp.get_date(PART_DATAREG)); + const TDate data_reg = rp.get_date(PART_DATAREG); if (data_reg > _limop) continue; for (int n=rp.rate(); n > 0; n--) // Browse all rows (scadenze) { @@ -298,18 +298,30 @@ void TStampaScaduto::compute_all(TPartita& p, TBill& bill) if (b == ZERO) // Se le scadenze sono a zero, vuol dire che sono state stornate res = ZERO; // da qualche nota di credito o non assegnato percio' non si ha residuo +/* if (res < ZERO) // Significa che l'importo pagato e' maggiore dell'importo in scadenza { // c'e' un residuo positivo, e quindi va memorizzato res *= -1.0; // cambia il segno res_pagati+= res; // Residui pagati in piu' res = ZERO; } +*/ +#ifdef __LONGDOUBLE__ + res.round(5); +#endif + if (res.sign() * b.sign() < 0) // Ho pagato piu' della scadenza + { + res_pagati -= res; // Residui pagati in piu' + res = ZERO; + } + if (d > _limscad) nonscad += res; else { // Detrae dal residuo scaduto eventuali pagamenti in piu' effettuati - real gap = (res_pagati > res ? res : res_pagati); + // real gap = (res_pagati > res ? res : res_pagati); + const real gap = abs(res_pagati) > abs(res) ? res : res_pagati; // Guy was here res -= gap; res_pagati -= gap; } @@ -342,34 +354,34 @@ void TStampaScaduto::compute_all(TPartita& p, TBill& bill) const bool stampa_in_valuta = _stvaluta && _codval != " "; if (residuo != ZERO) - print_real(_residuo, residuo, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_residuo, residuo, stampa_in_valuta ? _codval : EMPTY_STRING); if (nonscad != ZERO) - print_real(_nonscad, nonscad, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_nonscad, nonscad, stampa_in_valuta ? _codval : EMPTY_STRING); if (buonf != ZERO) - print_real(_buonfin, buonf, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_buonfin, buonf, stampa_in_valuta ? _codval : EMPTY_STRING); if (s1 != ZERO) - print_real(_sc_1, s1, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_sc_1, s1, stampa_in_valuta ? _codval : EMPTY_STRING); if (s2 != ZERO) - print_real(_sc_2, s2, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_sc_2, s2, stampa_in_valuta ? _codval : EMPTY_STRING); if (s3 != ZERO) - print_real(_sc_3, s3, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_sc_3, s3, stampa_in_valuta ? _codval : EMPTY_STRING); if (s4 != ZERO) - print_real(_sc_4, s4, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_sc_4, s4, stampa_in_valuta ? _codval : EMPTY_STRING); if (s5 != ZERO) - print_real(_sc_5, s5, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_sc_5, s5, stampa_in_valuta ? _codval : EMPTY_STRING); if (s6 != ZERO) - print_real(_sc_6, s6, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_sc_6, s6, stampa_in_valuta ? _codval : EMPTY_STRING); if (s7 != ZERO) - print_real(_sc_7, s7, stampa_in_valuta ? _codval : "_FIRM"); + print_real(_sc_7, s7, stampa_in_valuta ? _codval : EMPTY_STRING); // Aggiorna i totali... if (residuo!=ZERO || nonscad!=ZERO || buonf!=ZERO || s1!=ZERO || s2!=ZERO || s3!=ZERO || s4!= ZERO || s5!= ZERO || s6!=ZERO || s7!=ZERO) @@ -671,43 +683,43 @@ void TStampaScaduto::print_totali_rows(int& nriga, bool what) if (k != " ") set_row(nriga,"@37g%-3s",(const char*)k); - print_real(value, v._rd, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._rd, stampa_in_valuta ? k : EMPTY_STRING); if (v._rd != ZERO) set_row(nriga,"@41g%18s",(const char*) value); - print_real(value, v._ns, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._ns, stampa_in_valuta ? k : EMPTY_STRING); if (v._ns != ZERO) set_row(nriga,"@60g%18s",(const char*) value); - print_real(value, v._bf, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._bf, stampa_in_valuta ? k : EMPTY_STRING); if (v._bf != ZERO) set_row(nriga,"@79g%18s",(const char*) value); - print_real(value, v._s1, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._s1, stampa_in_valuta ? k : EMPTY_STRING); if (v._s1 != ZERO) set_row(nriga,"@98g%18s",(const char*) value); - print_real(value, v._s2, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._s2, stampa_in_valuta ? k : EMPTY_STRING); if (v._s2 != ZERO) set_row(nriga,"@117g%18s",(const char*) value); - print_real(value, v._s3, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._s3, stampa_in_valuta ? k : EMPTY_STRING); if (v._s3 != ZERO) set_row(nriga,"@136g%18s",(const char*) value); - print_real(value, v._s4, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._s4, stampa_in_valuta ? k : EMPTY_STRING); if (v._s4 != ZERO) set_row(nriga,"@155g%18s",(const char*) value); - print_real(value, v._s5, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._s5, stampa_in_valuta ? k : EMPTY_STRING); if (v._s5 != ZERO) set_row(nriga,"@174g%18s",(const char*) value); - print_real(value, v._s6, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._s6, stampa_in_valuta ? k : EMPTY_STRING); if (v._s6 != ZERO) set_row(nriga,"@193g%18s",(const char*) value); - print_real(value, v._s7, stampa_in_valuta ? k : "_FIRM"); + print_real(value, v._s7, stampa_in_valuta ? k : EMPTY_STRING); if (v._s7 != ZERO) set_row(nriga,"@212g%18s",(const char*) value); set_row(++nriga,""); @@ -717,14 +729,18 @@ void TStampaScaduto::print_totali_rows(int& nriga, bool what) void TStampaScaduto::print_totali(int& nriga) { - TString s("CLIENTE"); + const char* s = ""; + switch (_tipost) + { + case fornitori: s = TR("TOTALE FORNITORE"); break; + case altri : s = TR("TOTALE CONTO"); break; + default : s = TR("TOTALE CLIENTE"); break; + } - if (_tipost == fornitori) s = "FORNITORE"; - else if (_tipost == altri) s = "CONTO"; reset_row(nriga); set_row(nriga++,""); reset_row(nriga); - set_row(nriga,FR("TOTALE %s"),(const char*) s); + set_row(nriga, s); print_totali_rows(nriga,0); set_row(++nriga,""); nriga++;