From 49c942c92795cdaeb7c54ad595591a1c8b558932 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 26 Sep 1995 17:18:28 +0000 Subject: [PATCH] Aggiornamento residuo git-svn-id: svn://10.65.10.50/trunk@1898 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2100.h | 13 +++++----- cg/cg2100b.uml | 65 ++++++++++++++++++++++++++++---------------------- cg/cg2100c.uml | 2 +- cg/cg2102.cpp | 35 ++++++++++++++++++++++----- cg/cg2102.h | 2 +- 5 files changed, 74 insertions(+), 43 deletions(-) diff --git a/cg/cg2100.h b/cg/cg2100.h index 71ccafdd3..69d09ad47 100755 --- a/cg/cg2100.h +++ b/cg/cg2100.h @@ -118,11 +118,12 @@ #define K_DOCUMENTO 407 #define K_TIPODOC 408 #define K_PROTIVA 409 -#define K_PROVVISORIO 410 -#define K_DESCR 411 -#define K_DATADOC 412 -#define K_NUMDOC 413 -#define K_ANNOES 414 -#define K_DATACOMP 415 +#define K_TOTALE 410 +#define K_RESIDUO 411 +#define K_DESCR 412 +#define K_DATADOC 413 +#define K_NUMDOC 414 +#define K_ANNOES 415 +#define K_DATACOMP 416 #endif diff --git a/cg/cg2100b.uml b/cg/cg2100b.uml index 64852c78b..a7926d627 100755 --- a/cg/cg2100b.uml +++ b/cg/cg2100b.uml @@ -232,6 +232,7 @@ BEGIN GROUP 5 FIELD TOTDOC VALIDATE REQIF_FUNC 1 S_TOTDOCVAL + MESSAGE COPY,K_TOTALE END NUMBER S_TOTDOCVAL 15 2 @@ -289,41 +290,47 @@ BEGIN FLAGS "DZ" END -STRING K_CODCAUS 3 -BEGIN - PROMPT 1 5 "Causale " - FLAGS "D" -END - -STRING K_DESCRCAUS 50 -BEGIN - PROMPT 25 5 "" - FLAGS "D" -END - -LIST K_PROVVISORIO 1 25 -BEGIN - PROMPT 1 6 "Movimento provvisorio " - ITEM " |No (movimento normale)" - ITEM "P|Si (cancellabile)" - FLAGS "D" -END - -STRING K_TIPODOC 2 -BEGIN - PROMPT 60 6 "Tipo documento " - FLAGS "D" -END - DATE K_DATADOC BEGIN - PROMPT 1 7 "Data del documento " + PROMPT 1 5 "Data del documento " FLAGS "D" END STRING K_NUMDOC 7 BEGIN - PROMPT 38 7 "Num. " + PROMPT 38 5 "Numero documento " + FLAGS "D" +END + +STRING K_TIPODOC 2 +BEGIN + PROMPT 65 5 "Tipo doc. " + FLAGS "D" +END + +STRING K_CODCAUS 3 +BEGIN + PROMPT 1 6 "Causale " + FLAGS "D" +END + +STRING K_DESCRCAUS 50 +BEGIN + PROMPT 25 6 "" + FLAGS "D" +END + +NUMBER K_TOTALE 15 +BEGIN + PROMPT 1 7 "Totale doc. " + PICTURE "." + FLAGS "D" +END + +NUMBER K_RESIDUO 15 +BEGIN + PROMPT 32 7 "Residuo " + PICTURE "." FLAGS "D" END @@ -332,7 +339,7 @@ BEGIN PROMPT 60 7 "Riga " ITEM "K|Saldaconto" ITEM "G|Spese" - ITEM "A|Altro" + ITEM "A|Normale" END SPREADSHEET F_SHEETCG diff --git a/cg/cg2100c.uml b/cg/cg2100c.uml index 393adfda2..54ecabb50 100755 --- a/cg/cg2100c.uml +++ b/cg/cg2100c.uml @@ -465,7 +465,7 @@ BEGIN PROMPT 1 13 "Totale documento " HELP "Totale del documento generante il movimento" FIELD TOTDOC - PICTURE "." + PICTURE "." END NUMBER S_TOTDOCVAL 15 2 diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index 7b46fd59c..85b4eb839 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -453,31 +453,54 @@ real TPrimanota_application::calcola_saldo() const TString_array& rows = cgs().rows_array(); const int max = rows.items(); + TImporto saldaconto; + const bool pag = is_pagamento(); + real tdare, tavere; + for (int i = 0; i < max; i++) { TToken_string& r = rows.row(i); tdare += real(r.get(0)); tavere += real(r.get()); + + if (pag) + { + const char sez = tdare.is_zero() ? 'A' : 'D'; + const TImporto importo(sez, sez == 'A' ? tavere : tdare); + const char tipo = row_type(r); + if (strchr("ACGKP", tipo) != NULL) + saldaconto += importo; + } } + TMask& m = curr_mask(); real sbilancio = abs(tdare)-abs(tavere); switch (sbilancio.sign()) { case +1: // Il dare supera l'avere in valore assoluto - curr_mask().set(F_DARE, (tdare-tavere).string()); - curr_mask().reset(F_AVERE); + m.set(F_DARE, (tdare-tavere).string()); + m.reset(F_AVERE); break; case -1: // L'avere supera il dare in valore assoluto - curr_mask().reset(F_DARE); - curr_mask().set(F_AVERE, (tavere-tdare).string()); + m.reset(F_DARE); + m.set(F_AVERE, (tavere-tdare).string()); break; default: // Sbilancio nullo - curr_mask().reset(F_DARE); - curr_mask().reset(F_AVERE); + m.reset(F_DARE); + m.reset(F_AVERE); break; } + if (pag) + { + const char sez = causale().sezione(1); + saldaconto.normalize(sez); + real t(m.get(F_TOTALE)); + t -= saldaconto.valore(); + m.set(K_RESIDUO, t.string()); + } + return sbilancio; } diff --git a/cg/cg2102.h b/cg/cg2102.h index 68d2068b6..aae0e1921 100755 --- a/cg/cg2102.h +++ b/cg/cg2102.h @@ -227,7 +227,7 @@ protected: public: static char row_type(const TToken_string& s); - TCausale& causale() { return *_causale; } + TCausale& causale() const { return *_causale; } TPartite_array& partite() { return _partite; } // Partite editate int nuovo_pagamento(TPartita& p, int nriga, int rata, int rmov); bool edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp);