From e361f0becdd1ffe52eff3000c9facb5af2ad110c Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 23 May 2012 14:29:40 +0000 Subject: [PATCH] Correzioni a gestione distinte in modo da non bloccarsi su distinte non generate da questo programma git-svn-id: svn://10.65.10.50/branches/R_10_00@22656 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ef/ef0100a.uml | 31 +++++++++++++++-------------- ef/ef0a00.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++------ ef/ef0a00a.uml | 20 +++++++++---------- 3 files changed, 74 insertions(+), 31 deletions(-) diff --git a/ef/ef0100a.uml b/ef/ef0100a.uml index 2954bbcf7..0d988c67e 100755 --- a/ef/ef0100a.uml +++ b/ef/ef0100a.uml @@ -11,13 +11,23 @@ BEGIN PROMPT 0 0 "" END +LIST F_TIPOCF 10 +BEGIN + PROMPT 1 1 "Tipo effetto " + ITEM "C|Attivo" + MESSAGE SHOW,8@|HIDE,9@ + ITEM "F|Passivo" + MESSAGE HIDE,8@|SHOW,9@ + FIELD TIPOCF +END + NUMBER F_NPROGTR 7 BEGIN - PROMPT 1 1 "Numero " + PROMPT 1 2 "Numero " FIELD NPROGTR KEY 1 - USE LF_EFFETTI KEY 1 - JOIN LF_CLIFO TO LF_EFFETTI KEY 1 INTO CODCF=CODCF TIPOCF=TIPOCF + USE LF_EFFETTI SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF,#F_CODCF,#F_CODCF)) + JOIN LF_CLIFO INTO CODCF=CODCF TIPOCF=TIPOCF INPUT NPROGTR F_NPROGTR DISPLAY "Nr.progr." NPROGTR DISPLAY "Tipo" TIPOCF @@ -32,16 +42,6 @@ BEGIN MESSAGE COPY,10@ END -LIST F_TIPOCF 10 -BEGIN - PROMPT 1 2 "Tipo effetto " - ITEM "C|Attivo" - MESSAGE SHOW,8@|HIDE,9@ - ITEM "F|Passivo" - MESSAGE HIDE,8@|SHOW,9@ - FIELD TIPOCF -END - TEXT DLG_NULL BEGIN PROMPT 1 3 "Cliente" @@ -91,8 +91,8 @@ BEGIN PROMPT 1 4 "Data scadenza " FIELD DATASCAD KEY 3 - USE LF_EFFETTI KEY 3 - JOIN LF_CLIFO TO LF_EFFETTI KEY 1 INTO CODCF=CODCF TIPOCF="C" + USE LF_EFFETTI KEY 3 SELECT (TIPOCF=#F_TIPOCF)&&(BETWEEN(CODCF, #F_CODCF, #F_CODCF)) + JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF INPUT DATASCAD F_DATASCAD INPUT NPROGTR F_NPROGTR DISPLAY "Data scadenza" DATASCAD @@ -100,6 +100,7 @@ BEGIN DISPLAY "Codice cliente" CODCF DISPLAY "Nr. distinta" NDIST DISPLAY "Tipo distinta" TIPODIST + DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC COPY OUTPUT F_NPROGTR OUTPUT F_DATASCAD DATASCAD CHECKTYPE REQUIRED diff --git a/ef/ef0a00.cpp b/ef/ef0a00.cpp index 69b8b9440..c10d03b88 100755 --- a/ef/ef0a00.cpp +++ b/ef/ef0a00.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include #include "../cg/cgsaldac.h" @@ -488,8 +488,45 @@ bool TPE_mask::fill_distinta(bool clear_all) for (int r = 1; r <= eff.rows_r(); r++) { const TRectype& reff = eff.row_r(r); - const int anno = reff.get_int(REFF_ANNO); - const TString16 part = reff.get(REFF_NUMPART); + int anno = reff.get_int(REFF_ANNO); + TString8 part = reff.get(REFF_NUMPART); + + if (anno <= 0 || part.blank()) + { + TToken_string dockey; + dockey.add(reff.get(REFF_PROVV)); + dockey.add(reff.get(REFF_ANNODOC)); + dockey.add(reff.get(REFF_CODNUM)); + dockey.add(reff.get(REFF_NFATT)); + const long numreg = atol(cache().get(LF_DOC, dockey, DOC_NUMREG)); + if (numreg > 0) + { + TPartite_array games; + if (games.add_numreg(numreg) == 1) + { + const TPartita* g = games.first(); + const int nriga = g->prima_fattura(numreg); + if (nriga > 0) + { + TRectype& wreff = (TRectype&)reff; + wreff.put(REFF_ANNO, anno = g->anno()); + wreff.put(REFF_NUMPART, part = g->numero()); + wreff.put(REFF_NRIGA, nriga); + } + } + } + + if (anno <= 0) + { + warning_box(TR("La riga %d della distinta è priva di riferimenti al saldaconto"), e+1); + if (e == 0) + { + e = dist.items(); + break; + } + } + } + const int nriga = reff.get_int(REFF_NRIGA); const int nrata = reff.get_int(REFF_NRATA); TPartita game(clifo, anno, part); @@ -883,12 +920,17 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly) switch(e) { case se_query_add: + if (!field(F_UNCONTABIL).active()) // Non posso modificare distinte contabilizzate { TOperable_field& ronaldo = (TOperable_field&)field(F_AGGIORNA); if (ronaldo.active()) on_field_event(ronaldo, fe_button, 0); } return false; + case se_query_modify: + if (field(F_UNCONTABIL).active()) // Non posso modificare distinte contabilizzate + return false; + break; case se_notify_modify: _spork = true; update_total(); @@ -989,7 +1031,7 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) TEdit_field& numdist = efield(F_DIST); if (!numdist.empty()) { - bool go = TRUE; + bool go = true; if (!numdist.enabled() && sfield(F_SHEET).items() > 0) { go = check_fields(); @@ -1057,7 +1099,7 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) if (movs.items() > 0) { TString msg; - msg = "E' necessario cancellare i seguenti movimenti contabili:\n"; + msg = TR("E' necessario cancellare i seguenti movimenti contabili:\n"); FOR_EACH_ASSOC_OBJECT(movs, hash, key, obj) msg << key << ' '; warning_box(msg); @@ -1067,7 +1109,7 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) } break; case DLG_DELREC: - if (e == fe_button && yesno_box("Confermare l'eliminazione della distinta %ld", + if (e == fe_button && yesno_box(FR("Confermare l'eliminazione della distinta %ld"), get_long(F_DIST))) { TSheet_field& sheet = sfield(F_SHEET); diff --git a/ef/ef0a00a.uml b/ef/ef0a00a.uml index 9e9d0a6cc..d0def2b9b 100755 --- a/ef/ef0a00a.uml +++ b/ef/ef0a00a.uml @@ -312,11 +312,11 @@ END SPREADSHEET F_SHEET 0 -2 BEGIN PROMPT 0 12 "" - ITEM "Importo@18" + ITEM "Importo@16" ITEM "A/S@3" - ITEM "Data Pagamento" - ITEM "Val.Ben." - ITEM "Residuo@18" + ITEM "Data\nPagamento@10" + ITEM "Val.\nBen.@3" + ITEM "Residuo@16" ITEM "Codice" ITEM "Ragione Sociale@20" ITEM "Anno" @@ -447,7 +447,7 @@ END STRING F_CUP 15 BEGIN - PROMPT 1 8 "CUP " + PROMPT 1 8 "CUP " USE %CUP INPUT CODTAB F_CUP DISPLAY "Codice@15" CODTAB @@ -458,9 +458,9 @@ BEGIN CHECKTYPE NORMAL END -STRING F_DCUP 50 30 +STRING F_DCUP 50 35 BEGIN - PROMPT 40 8 "" + PROMPT 28 8 "" USE %CUP KEY 2 INPUT S0 F_DCUP DISPLAY "Descrizione@50" S0 @@ -470,7 +470,7 @@ END STRING F_CIG 10 BEGIN - PROMPT 1 9 "CIG " + PROMPT 1 9 "CIG " USE %CIG INPUT CODTAB F_CIG DISPLAY "Codice@10" CODTAB @@ -482,9 +482,9 @@ BEGIN CHECKTYPE NORMAL END -STRING F_DCIG 50 30 +STRING F_DCIG 50 35 BEGIN - PROMPT 40 9 "" + PROMPT 28 9 "" USE %CIG KEY 2 INPUT S0 F_DCIG DISPLAY "Descrizione@50" S0