diff --git a/cg/cg2100.cpp b/cg/cg2100.cpp index 0c57a6e7c..7c34012cb 100755 --- a/cg/cg2100.cpp +++ b/cg/cg2100.cpp @@ -106,8 +106,10 @@ TMask* TPrimanota_application::load_mask(int n) ism.set_handler(110, iva_sottoconto_handler); ism.set_handler(209, sheet_clifo_handler); ism.set_handler(309, sheet_clifo_handler); + ism.set_handler(CG_RATEO, sheet_rateo_handler); + ism.set_handler(CG_RISCONTO, sheet_risconto_handler); - if (_quadratura) + if (_quadratura) m->set_handler(F_ADJUST_IVA, quadratura_handler); } case 1: @@ -148,6 +150,8 @@ TMask* TPrimanota_application::load_mask(int n) cgm.set_handler(213, sheet_clifo_handler); cgm.set_handler(313, sheet_clifo_handler); cgm.set_handler(CG_MASTRINO, sheet_mastrino_handler); + cgm.set_handler(CG_RATEO, sheet_rateo_handler); + cgm.set_handler(CG_RISCONTO, sheet_risconto_handler); // Se esiste lo sheet delle rate if (is_fattura()) diff --git a/cg/cg2100.h b/cg/cg2100.h index 7fcc633ba..767a51e65 100755 --- a/cg/cg2100.h +++ b/cg/cg2100.h @@ -82,7 +82,9 @@ #define CG_SOTTOCONTO 106 #define CG_DESCR 109 #define CG_ROWTYPE 115 -#define CG_MASTRINO 200 +#define CG_MASTRINO 195 +#define CG_RATEO 196 +#define CG_RISCONTO 197 // Sheet IVA #define IVA_IMPONIBILE 101 diff --git a/cg/cg2100c.uml b/cg/cg2100c.uml index 605321add..3e32401ea 100755 --- a/cg/cg2100c.uml +++ b/cg/cg2100c.uml @@ -221,7 +221,7 @@ BEGIN INPUT CODCF F_CLIENTE DISPLAY "Codice" CODCF DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Sospeso" SOSPESO + DISPLAY "Sospeso@C" SOSPESO DISPLAY "Partita IVA@12" PAIV DISPLAY "Codice Fiscale@16" COFI OUTPUT F_CLIENTE CODCF @@ -246,7 +246,7 @@ BEGIN INPUT CODCF F_FORNITORE DISPLAY "Codice" CODCF DISPLAY "Ragione Sociale@50" RAGSOC - DISPLAY "Sospeso" SOSPESO + DISPLAY "Sospeso@C" SOSPESO DISPLAY "Partita IVA@12" PAIV DISPLAY "Codice Fiscale@16" COFI OUTPUT F_FORNITORE CODCF @@ -270,7 +270,7 @@ BEGIN INPUT RAGSOC F_RAGSOCFORNITORE DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Codice" CODCF - DISPLAY "Sospeso" SOSPESO + DISPLAY "Sospeso@C" SOSPESO DISPLAY "Partita IVA@12" PAIV DISPLAY "Codice Fiscale@16" COFI COPY OUTPUT F_FORNITORE @@ -301,7 +301,7 @@ BEGIN DISPLAY "Codice fiscale@16" COFI DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Codice" CODCF - DISPLAY "Sospeso" SOSPESO + DISPLAY "Sospeso@C" SOSPESO DISPLAY "Partita IVA@12" PAIV COPY OUTPUT F_CLIENTE CHECKTYPE NORMAL @@ -332,7 +332,7 @@ BEGIN DISPLAY "Partita IVA@12" PAIV DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Codice" CODCF - DISPLAY "Sospeso" SOSPESO + DISPLAY "Sospeso@C" SOSPESO DISPLAY "Codice Fiscale@16" COFI COPY OUTPUT F_CLIENTE CHECKTYPE NORMAL @@ -374,7 +374,7 @@ BEGIN DISPLAY "Codice alternativo@30" RICALT DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Codice" CODCF - DISPLAY "Sospeso" SOSPESO + DISPLAY "Sospeso@C" SOSPESO DISPLAY "Partita IVA@12" PAIV DISPLAY "Codice Fiscale@16" COFI COPY OUTPUT F_CLIENTE @@ -392,7 +392,7 @@ BEGIN DISPLAY "Codice alternativo@30" RICALT DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Codice" CODCF - DISPLAY "Sospeso" SOSPESO + DISPLAY "Sospeso@C" SOSPESO DISPLAY "Partita IVA@12" PAIV DISPLAY "Codice Fiscale@16" COFI COPY OUTPUT F_FORNITORE @@ -675,7 +675,7 @@ BEGIN ITEM "Gr." ITEM "Co." ITEM "Sottoc.@6" - ITEM "Descrizione Conto@30" + ITEM "Descrizione Conto@50" END CURRENCY F_IMPONIBILI 18 diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index 48ac5866a..f72cf4e9d 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -1,8 +1,10 @@ +#include #include #include #include #include #include +#include #include #include #include @@ -997,7 +999,10 @@ bool TPrimanota_application::cg_notify(TSheet_field& cg, int r, KEY k) case K_TAB: if (!selecting) { - cg.sheet_mask().enable(DLG_DELREC, tipo <= ' ' || tipo == 'K' || tipo == 'G'); + TMask& sm = cg.sheet_mask(); + sm.enable(DLG_DELREC, tipo <= ' ' || tipo == 'K' || tipo == 'G'); + sm.enable(CG_RATEO, tipo <= ' '); + sm.enable(CG_RISCONTO, tipo <= ' '); if (row.empty_items()) { selecting = true; @@ -1471,8 +1476,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k) if (oldposiva[d] < 0 && !oldiva[d].is_zero()) { TBill c; - int ri; - + int ri = 0; if (d) { if (iva.mask().get_bool(F_LIQDIFF)) @@ -1652,7 +1656,7 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k) real imposta, imponibile; if (inv) { - const real il(m.get(F_IMPOSTE)); + const real il = m.get(F_IMPOSTE); imposta = cambio.lit2val(il); imponibile = m.get_real(SK_TOTDOCVAL) - imposta; } @@ -1890,6 +1894,189 @@ bool TPrimanota_application::sheet_mastrino_handler(TMask_field& f, KEY k) return true; } +class TRR_mask : public TAutomask +{ + bool _rateo; + +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + bool test_date(TOperable_field& d, int signum); + void notify(TSheet_field& s, int row, KEY k) const; + +public: + bool split_row(TSheet_field& s); + TRR_mask(bool is_rateo); +}; + +void TRR_mask::notify(TSheet_field& s, int row, KEY k) const +{ + if (s.dlg() == F_SHEETIVA) + app().iva_notify(s, row, k); + else + app().cg_notify(s, row, k); +} + +bool TRR_mask::test_date(TOperable_field& d, int signum) +{ + const TDate date = d.get(); + if (!date.ok()) + return error_box(TR("Data non valida")); + + const int codes = app().curr_mask().get_int(F_ANNOES); + TEsercizi_contabili esc; + TDate inies, fines; + if (!esc.code2range(codes, inies, fines)) + return error_box(TR("E' necessario specificare una esercizio valido")); + + if (signum < 0 && date >= inies) + return error_box(FR("La data deve precedere il %s"), inies.stringa()); + if (signum == 0 && (date < inies || date > fines)) + return error_box(FR("La data deve appartenere all'esercizio %d"), codes); + if (signum > 0 && date <= fines) + return error_box(FR("La data deve seguire il %s"), fines.stringa()); + + return true; +} + +bool TRR_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + bool ok = true; + switch (o.dlg()) + { + case 101: + if (e == fe_modify || e == fe_close) + ok = test_date(o, _rateo ? 0 : -1); + break; + case 102: + if (e == fe_modify || e == fe_close) + ok = test_date(o, _rateo ? +1 : 0); + break; + default: + break; + } + return ok; +} + +bool TRR_mask::split_row(TSheet_field& s) +{ + const int sel = s.selected(); + CHECKD(sel >= 0 && sel < s.items(), "Bad selection:", sel); + + TMask& main_mask = s.mask(); + TMask& row_mask = s.sheet_mask(); + + TEsercizi_contabili esc; + const int codes = main_mask.get_int(F_ANNOES); + TDate inies, fines; + if (!esc.code2range(codes, inies, fines)) + return error_box(TR("Specificare una data di competenza per il movimento")); + + const TDate dataini = get_date(101), datafin = get_date(102); + const real tot_range = datafin - dataini + 1; + const real in_range = (_rateo ? (fines-dataini) : (datafin-inies)) + 1; + const real out_range = tot_range - in_range; + + const bool iva_sheet = s.dlg() == F_SHEETIVA; + const short col1 = iva_sheet ? IVA_IMPONIBILE : CG_DARE; + const short col2 = iva_sheet ? IVA_IMPOSTA : CG_AVERE; + const short col3 = iva_sheet ? IVA_GRUPPO : CG_GRUPPO; + + const real old_imp1 = row_mask.get(col1); + const real old_imp2 = row_mask.get(col2); + + real new_imp1[2], new_imp2[2]; + new_imp1[0] = real(old_imp1 * in_range / tot_range).round(2); + new_imp2[0] = real(old_imp2 * in_range / tot_range).round(2); + new_imp1[1] = old_imp1 - new_imp1[0]; + new_imp2[1] = old_imp2 - new_imp2[0]; + + for (int i = 0; i < 2; i++) + { + TToken_string& new_row = s.row(-1); + const int new_sel = s.rows_array().find(new_row); + notify(s, new_sel, K_SPACE); // Notifica l'intenzione di modificare i valori + + row_mask.set(col1, new_imp1[i]); + row_mask.set(col2, new_imp2[i]); + + if (i == 1) + { + // Utilizza i conti scritti nei paramentri ditta + TConfig ini(CONFIG_DITTA, "cg"); + row_mask.reset(col3-1); // Forza conto normale + if (_rateo) + { + row_mask.set(col3+0, ini.get("RateiG")); + row_mask.set(col3+1, ini.get("RateiC")); + row_mask.set(col3+2, ini.get("RateiS"), 0x2); + } + else + { + row_mask.set(col3+0, ini.get("RiscontiG")); + row_mask.set(col3+1, ini.get("RiscontiC")); + row_mask.set(col3+2, ini.get("RiscontiS"), 0x2); + } + } + + // Trasferisce tutta la maschera nella rispettiva riga dello sheet + FOR_EACH_MASK_FIELD(row_mask, j, f) if (f->shown() && f->dlg() > DLG_USER) + new_row.add(f->get(), s.cid2index(f->dlg())); + + notify(s, new_sel, K_ENTER); // Notifica l'avvenuta modifica dei valori + } + + notify(s, sel, K_SPACE); // Riposiziona selezione sulla riga corrente da cancellare + + return true; +} + +TRR_mask::TRR_mask(bool is_rateo) + : TAutomask(is_rateo ? TR("Rateo") : TR("Risconto"), 1, 24, 4), _rateo(is_rateo) +{ + add_button_tool(DLG_OK, "", TOOL_OK); + add_button_tool(DLG_CANCEL, "", TOOL_CANCEL); + add_date(101, 0, PR("Dal "), 1, 1).check_type(CHECK_REQUIRED); + add_date(102, 0, PR("Al "), 1, 2).check_type(CHECK_REQUIRED); + set_handlers(); +} + +bool TPrimanota_application::sheet_rateo_handler(TMask_field& f, KEY k) +{ + if (k == K_SPACE) + { + TMask& row_mask = f.mask(); + if (row_mask.is_running() && row_mask.check_fields()) + { + TRR_mask rateo_mask(true); + if (rateo_mask.run() == K_ENTER) + { + TSheet_field& s = *row_mask.get_sheet(); + rateo_mask.split_row(s); + row_mask.send_key(K_SPACE, DLG_DELREC); + } + } + } + return true; +} + +bool TPrimanota_application::sheet_risconto_handler(TMask_field& f, KEY k) +{ + if (k == K_SPACE) + { + TMask& row_mask = f.mask(); + if (row_mask.is_running() && row_mask.check_fields()) + { + TRR_mask risconto_mask(false); + if (risconto_mask.run() == K_ENTER) + { + risconto_mask.split_row(*row_mask.get_sheet()); + row_mask.send_key(K_SPACE, DLG_DELREC); + } + } + } + return true; +} + /////////////////////////////////////////////////////////// // Handlers dei campi della testata /////////////////////////////////////////////////////////// @@ -2665,8 +2852,6 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key) if (imp.is_zero()) // Se il totale documento non e' stato spezzato { TToken_string& row = a.ivas().row(0); - - // TMask& m = f.mask(); iva_notify(a.ivas(), 0, K_SPACE); const TCodiceIVA iva(f.get()); diff --git a/cg/cg2102.h b/cg/cg2102.h index 7f6e44f83..ddc12c453 100755 --- a/cg/cg2102.h +++ b/cg/cg2102.h @@ -21,10 +21,6 @@ #include "cg2101.h" #endif -#ifndef __CG2103_H -#include "cg2103.h" -#endif - class TDati_mov_auto; class TPrimanota_application : public TRelation_application @@ -116,6 +112,8 @@ class TPrimanota_application : public TRelation_application static bool sheet_clifo_handler(TMask_field& f, KEY k); static bool sheet_mastrino_handler(TMask_field& f, KEY k); + static bool sheet_rateo_handler(TMask_field& f, KEY k); + static bool sheet_risconto_handler(TMask_field& f, KEY k); static bool iva_sottoconto_handler(TMask_field& f, KEY k); static bool imponibile_handler(TMask_field& f, KEY key); static bool detrazione_handler(TMask_field& f, KEY key); @@ -144,9 +142,7 @@ class TPrimanota_application : public TRelation_application static bool ratalit_handler(TMask_field& f, KEY key); static bool rataval_handler(TMask_field& f, KEY key); - static bool iva_notify(TSheet_field& s, int r, KEY key); static bool iva_handler(TMask_field& f, KEY key); - static bool cg_notify(TSheet_field& s, int r, KEY key); static bool cg_handler(TMask_field& f, KEY key); static bool pag_notify(TSheet_field& s, int r, KEY key); @@ -297,6 +293,8 @@ protected: public: static int type2pos(char tipo); static char row_type(const TToken_string& s); + static bool iva_notify(TSheet_field& s, int r, KEY key); + static bool cg_notify(TSheet_field& s, int r, KEY key); void type2colors(char tipor, COLOR& back, COLOR& fore); void set_type_colors(char tipor, COLOR back, COLOR fore); diff --git a/cg/cg21cg.uml b/cg/cg21cg.uml index 71bd3d437..b264bc5ff 100755 --- a/cg/cg21cg.uml +++ b/cg/cg21cg.uml @@ -343,32 +343,44 @@ ENDPAGE TOOLBAR "topbar" 0 0 0 2 -BUTTON DLG_OK 10 2 +BUTTON DLG_OK 2 2 BEGIN - PROMPT -14 -1 "" + PROMPT 1 1 "" END -BUTTON DLG_DELREC 10 2 +BUTTON DLG_DELREC 2 2 BEGIN - PROMPT -34 -1 "Elimina" + PROMPT 2 1 "Elimina" MESSAGE EXIT,K_DEL END -BUTTON DLG_USER 10 2 +BUTTON DLG_USER 2 2 BEGIN - PROMPT -44 -1 "~Partite" + PROMPT 3 1 "~Partite" PICTURE TOOL_LINK END -BUTTON CG_MASTRINO 8 1 +BUTTON CG_MASTRINO 2 2 BEGIN - PROMPT 56 4 "Mastrino" + PROMPT 4 1 "Mastrino" PICTURE TOOL_LINK END -BUTTON DLG_CANCEL 10 2 +BUTTON CG_RATEO 2 2 BEGIN - PROMPT -24 -1 "" + PROMPT 5 1 "Rateo" + PICTURE TOOL_TODATAFIN +END + +BUTTON CG_RISCONTO 2 2 +BEGIN + PROMPT 6 1 "Risconto" + PICTURE TOOL_TODATAINI +END + +BUTTON DLG_CANCEL 2 2 +BEGIN + PROMPT 7 1 "" END ENDPAGE diff --git a/cg/cg21iva.uml b/cg/cg21iva.uml index 09c4bf0f6..3ffe2909d 100755 --- a/cg/cg21iva.uml +++ b/cg/cg21iva.uml @@ -243,20 +243,32 @@ ENDPAGE TOOLBAR "topbar" 0 0 0 2 -BUTTON DLG_OK 10 2 +BUTTON DLG_OK 2 2 BEGIN - PROMPT -13 -1 "" + PROMPT 1 1 "" +END + +BUTTON DLG_DELREC 2 2 +BEGIN + PROMPT 2 1 "Elimina" + MESSAGE EXIT,K_DEL +END + +BUTTON CG_RATEO 2 2 +BEGIN + PROMPT 3 1 "Rateo" + PICTURE TOOL_TODATAFIN +END + +BUTTON CG_RISCONTO 2 2 +BEGIN + PROMPT 4 1 "Risconto" + PICTURE TOOL_TODATAINI END BUTTON DLG_CANCEL 10 2 BEGIN - PROMPT -23 -1 "" -END - -BUTTON DLG_DELREC 10 2 -BEGIN - PROMPT -33 -1 "Elimina" - MESSAGE EXIT,K_DEL + PROMPT 5 1 "" END ENDPAGE diff --git a/cg/cg5100a.h b/cg/cg5100a.h index 5a3251875..a7f4442f2 100755 --- a/cg/cg5100a.h +++ b/cg/cg5100a.h @@ -66,6 +66,17 @@ #define CHK_DTCFPG 358 #define CHK_RIFPRO 359 #define CHK_LIQDIF 360 +#define FLD_DCSAUCP 361 + +#define FLD_RATEI_G 371 +#define FLD_RATEI_C 372 +#define FLD_RATEI_S 373 +#define FLD_RATEI_D 374 + +#define FLD_RISCO_G 376 +#define FLD_RISCO_C 377 +#define FLD_RISCO_S 378 +#define FLD_RISCO_D 379 // gruppi #define GROUP_SALDACONTO 1 diff --git a/cg/cg5100a.uml b/cg/cg5100a.uml index 7b2539405..95a99a006 100755 --- a/cg/cg5100a.uml +++ b/cg/cg5100a.uml @@ -784,14 +784,14 @@ ENDPAGE PAGE "Ratei/Risconti" -1 -1 77 8 -GROUPBOX DLG_NULL 78 10 +GROUPBOX DLG_NULL 78 4 BEGIN - PROMPT 1 1 "@bRatei/Risconti" + PROMPT 1 1 "@bFrequenza" END RADIOBUTTON LST_RRFRAM 20 BEGIN - PROMPT 3 2 "" + PROMPT 3 1 "" HELP "Frequenza del calcolo dei ratei e risconti" ITEM "A|Freq. Annuale" ITEM "M|Freq. Mensile" @@ -807,9 +807,14 @@ BEGIN GROUP GROUP_CONTABILITA END +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 6 "@bRatei" +END + STRING FLD_RRCCRA 3 BEGIN - PROMPT 3 6 "Causale ratei " + PROMPT 2 7 "Causale " HELP "Codice causale dei ratei per movimento di contabilita'" FLAGS "UZ" USE LF_CAUSALI @@ -823,9 +828,9 @@ BEGIN GROUP GROUP_CONTABILITA END -STRING FLD_DRRCCRA 50 48 +STRING FLD_DRRCCRA 50 52 BEGIN - PROMPT 26 6 "" + PROMPT 22 7 "" HELP "Descrizione causale dei ratei per movimento di contabilita'" USE LF_CAUSALI KEY 2 INPUT DESCR FLD_DRRCCRA @@ -836,32 +841,138 @@ BEGIN GROUP GROUP_CONTABILITA END +NUMBER FLD_RATEI_G 3 +BEGIN + PROMPT 2 8 "Conto " + GROUP GROUP_CONTABILITA + FIELD RateiG +END + +NUMBER FLD_RATEI_C 3 +BEGIN + PROMPT 14 8 "" + USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")&&(TMCF="")&&((INDBIL="1")||(INDBIL="2")) + INPUT GRUPPO FLD_RATEI_G + INPUT CONTO FLD_RATEI_C + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Descrizione@50" DESCR + DISPLAY "Indicatore" INDBIL + OUTPUT FLD_RATEI_G GRUPPO + OUTPUT FLD_RATEI_C CONTO + CHECKTYPE NORMAL + GROUP GROUP_CONTABILITA + FIELD RateiC +END + +NUMBER FLD_RATEI_S 6 +BEGIN + PROMPT 22 8 "" + USE LF_PCON SELECT (SOTTOCONTO!="") + INPUT GRUPPO FLD_RATEI_G SELECT + INPUT CONTO FLD_RATEI_C SELECT + INPUT SOTTOCONTO FLD_RATEI_S + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + DISPLAY "Descrizione@50" DESCR + OUTPUT FLD_RATEI_S SOTTOCONTO + OUTPUT FLD_RATEI_D DESCR + CHECKTYPE NORMAL + GROUP GROUP_CONTABILITA + FIELD RateiS +END + +STRING FLD_RATEI_D 50 40 +BEGIN + PROMPT 34 8 "" + USE LF_PCON KEY 2 SELECT (GRUPPO=#FLD_RATEI_G)&&(CONTO=#FLD_RATEI_C)&&(SOTTOCONTO!="") + INPUT DESCR FLD_RATEI_D + DISPLAY "Descrizione@50" DESCR + DISPLAY "Gruppo" GRUPPO + DISPLAY "Conto" CONTO + DISPLAY "Sottoconto" SOTTOCONTO + COPY OUTPUT FLD_RATEI_S + GROUP GROUP_CONTABILITA +END + +GROUPBOX DLG_NULL 77 4 +BEGIN + PROMPT 1 11 "@bRisconti" +END + STRING FLD_RRCCRI 3 BEGIN - PROMPT 3 8 "Causale risconti " + PROMPT 2 12 "Causale " HELP "Codice causale dei risconti per movimento di contabilita'" - FLAGS "UZ" - COPY USE FLD_RRCCRA - INPUT CODCAUS FLD_RRCCRI - COPY DISPLAY FLD_COCACH - OUTPUT FLD_RRCCRI CODCAUS - OUTPUT FLD_DRRCCRI DESCR - CHECKTYPE NORMAL - ADD RUN cg0 -4 - FIELD RrCcRi + FLAGS "UZ" + COPY USE FLD_RRCCRA + INPUT CODCAUS FLD_RRCCRI + COPY DISPLAY FLD_COCACH + OUTPUT FLD_RRCCRI CODCAUS + OUTPUT FLD_DRRCCRI DESCR + CHECKTYPE NORMAL + ADD RUN cg0 -4 + FIELD RrCcRi GROUP GROUP_CONTABILITA END -STRING FLD_DRRCCRI 50 48 +STRING FLD_DRRCCRI 50 52 BEGIN - PROMPT 26 8 "" - HELP "Descrizione causale dei risconti per movimento di contabilita'" - USE LF_CAUSALI KEY 2 - INPUT DESCR FLD_DRRCCRI - COPY DISPLAY FLD_DCOCACH - COPY OUTPUT FLD_RRCCRI - CHECKTYPE NORMAL - ADD RUN cg0 -4 + PROMPT 22 12 "" + HELP "Descrizione causale dei risconti per movimento di contabilita'" + USE LF_CAUSALI KEY 2 + INPUT DESCR FLD_DRRCCRI + COPY DISPLAY FLD_DCOCACH + COPY OUTPUT FLD_RRCCRI + CHECKTYPE NORMAL + ADD RUN cg0 -4 + GROUP GROUP_CONTABILITA +END + +NUMBER FLD_RISCO_G 3 +BEGIN + PROMPT 2 13 "Conto " + GROUP GROUP_CONTABILITA + FIELD RiscontiG +END + +NUMBER FLD_RISCO_C 3 +BEGIN + PROMPT 14 13 "" + COPY USE FLD_RATEI_C + INPUT GRUPPO FLD_RISCO_G + INPUT CONTO FLD_RISCO_C + COPY DISPLAY FLD_RATEI_C + OUTPUT FLD_RISCO_G GRUPPO + OUTPUT FLD_RISCO_C CONTO + CHECKTYPE NORMAL + GROUP GROUP_CONTABILITA + FIELD RiscontiC +END + +NUMBER FLD_RISCO_S 6 +BEGIN + PROMPT 22 13 "" + COPY USE FLD_RATEI_S + INPUT GRUPPO FLD_RISCO_G SELECT + INPUT CONTO FLD_RISCO_C SELECT + INPUT SOTTOCONTO FLD_RISCO_S + COPY DISPLAY FLD_RATEI_S + OUTPUT FLD_RISCO_S SOTTOCONTO + OUTPUT FLD_RISCO_D DESCR + CHECKTYPE NORMAL + GROUP GROUP_CONTABILITA + FIELD RiscontiS +END + +STRING FLD_RISCO_D 50 40 +BEGIN + PROMPT 34 13 "" + USE LF_PCON KEY 2 SELECT (GRUPPO=#FLD_RISCO_G)&&(CONTO=#FLD_RISCO_C)&&(SOTTOCONTO!="") + INPUT DESCR FLD_RISCO_D + COPY DISPLAY FLD_RATEI_D + COPY OUTPUT FLD_RISCO_S GROUP GROUP_CONTABILITA END