Patch level : 10.0

Files correlati     : cg2.exe cg2100b.msk cg2100c.msk cg5100a.msk
Ricompilazione Demo : [ ]
Commento            :
Implementazione semplificata di ratei e risconti in prima nota con conti configurabili nei parametri ditta


git-svn-id: svn://10.65.10.50/branches/R_10_00@21005 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-10-13 13:38:54 +00:00
parent 1742e5dfb9
commit 0c81874e86
9 changed files with 401 additions and 66 deletions

View File

@ -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())

View File

@ -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

View File

@ -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

View File

@ -1,8 +1,10 @@
#include <automask.h>
#include <colors.h>
#include <execp.h>
#include <msksheet.h>
#include <progind.h>
#include <tabutil.h>
#include <toolfld.h>
#include <urldefid.h>
#include <utility.h>
#include <validate.h>
@ -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());

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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