Correzione errori vari

git-svn-id: svn://10.65.10.50/trunk@1902 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1995-09-27 15:28:09 +00:00
parent 9bd1c2573c
commit 896d83465f
21 changed files with 1307 additions and 84 deletions

View File

@ -25,7 +25,8 @@ class TStampa_deleghe_IVA : public TApplication
long _codice; // Codice profilo
bool _stampa_distinte, _aggiorna_codici, _definitiva;
TDate _pd;
protected:
virtual bool create();
virtual bool destroy();
@ -97,8 +98,11 @@ int TStampa_deleghe_IVA::select()
_codice = m.get_long(F_CODICE);
const bool contofis = _profilo != "DEL";
const TDate pd(m.get(F_DATA));
printer().setdate(pd);
//const TDate pd(m.get(F_DATA));
//printer().setdate(pd);
_pd = m.get(F_DATA);
printer().setdate(_pd);
_concessione = m.get(F_CONCESSIONE);
const long soloabi = m.get_long(F_SOLO_ABI);
@ -382,6 +386,7 @@ bool TStampa_deleghe_IVA::print_deleghe()
if (_definitiva)
{
delega.put("B0", "X"); // Stampato
delega.put("D0", _pd);
scrivi = TRUE;
}
if (!_aggiorna_codici) // Cancella codici se non richiesti

View File

@ -25,7 +25,8 @@ class TStampa_deleghe_IVA : public TApplication
long _codice; // Codice profilo
bool _stampa_distinte, _aggiorna_codici, _definitiva;
TDate _pd;
protected:
virtual bool create();
virtual bool destroy();
@ -97,8 +98,11 @@ int TStampa_deleghe_IVA::select()
_codice = m.get_long(F_CODICE);
const bool contofis = _profilo != "DEL";
const TDate pd(m.get(F_DATA));
printer().setdate(pd);
//const TDate pd(m.get(F_DATA));
//printer().setdate(pd);
_pd = m.get(F_DATA);
printer().setdate(_pd);
_concessione = m.get(F_CONCESSIONE);
const long soloabi = m.get_long(F_SOLO_ABI);
@ -382,6 +386,7 @@ bool TStampa_deleghe_IVA::print_deleghe()
if (_definitiva)
{
delega.put("B0", "X"); // Stampato
delega.put("D0", _pd);
scrivi = TRUE;
}
if (!_aggiorna_codici) // Cancella codici se non richiesti

View File

@ -27,7 +27,9 @@ int main(int argc,char** argv)
case 6:
cg4700(argc,argv); break;
case 7:
cg4800(argc,argv); break;
cg4800(argc,argv); break;
case 8:
cg4900(argc,argv); break;
default:
error_box(usage, argv[0]);
}

View File

@ -13,6 +13,7 @@ int cg4500(int argc, char* argv[]);
int cg4600(int argc, char* argv[]);
int cg4700(int argc, char* argv[]);
int cg4800(int argc, char* argv[]);
int cg4900(int argc, char* argv[]);
#ifdef __MAIN__
#define extern

View File

@ -56,4 +56,12 @@ MENU MENU_BAR(6)
MENUBAR MENU_BAR(7)
MENU MENU_BAR(7)
SUBMENU MENU_FILE "~File"
SUBMENU MENU_FILE "~File"
/* cg4 -8 Visualizzazione liquidazione acconti */
MENUBAR MENU_BAR(8)
MENU MENU_BAR(8)
SUBMENU MENU_FILE "~File"

View File

@ -374,7 +374,7 @@ bool TLiquidazione_app::set_print(int)
}
break;
case 2: // estrazione deleghe
_isprint = FALSE;
_isprint = FALSE;
build_ditte_sheet(all);
while (set_deleghe())
{
@ -397,6 +397,7 @@ bool TLiquidazione_app::set_print(int)
break;
case 3: // calcolo acconto
_isprint = TRUE;
_month = 12;
build_ditte_sheet(all);
real inf; real ina; // cotale obbrobrio non fu da me cercato, ne' mai condiviso
while (set_acconto(inf, ina))

View File

@ -487,6 +487,7 @@ public:
bool set_deleghe();
bool extract_deleghe();
bool extract_delega(int m, TArray& desc);
bool video_conferma(const real&, const real&, const real&);
// stampa
void set_deltab(_DescrItem& d, bool iscred);

View File

@ -1,54 +1,54 @@
#include "cg4300b.h"
PAGE "Estrazione deleghe" -1 -1 45 10
NUMBER FLD_CGB_YEAR 4
BEGIN
PROMPT 2 1 "Anno estrazione "
HELP "Anno d'esercizio da cui effettuare le estrazioni"
FLAGS "A"
FLAGS "A"
END
LIST FLD_CGB_MONTH 10
BEGIN
PROMPT 2 2 "Mese estrazione "
PROMPT 2 2 "Mese estrazione "
HELP "Mese da cui effettuare le estrazioni"
FLAGS "AM"
ITEM "13|Annuale"
FLAGS "AM"
//ITEM "13|Annuale"
END
BOOLEAN CHK_CGB_PRINT
BEGIN
PROMPT 2 3 "Stampa tabulato"
PROMPT 2 3 "Stampa tabulato"
END
GROUPBOX DLG_NULL 41 4
BEGIN
PROMPT 2 4 "Scelta ditte"
PROMPT 2 4 "Scelta ditte"
END
BUTTON DLG_SELECT 10 2
BEGIN
PROMPT -12 5 "Scegli"
PROMPT -12 5 "Scegli"
HELP "Selezionare le ditte di cui estrarre le deleghe"
MESSAGE EXIT,DLG_SELECT
MESSAGE EXIT,DLG_SELECT
END
BUTTON BUT_CGB_ALL 10 2
BEGIN
PROMPT -22 5 "Tutte"
PROMPT -22 5 "Tutte"
HELP "Selezionare tutte le ditte di cui estrarre le deleghe"
MESSAGE EXIT,BUT_CGB_ALL
MESSAGE EXIT,BUT_CGB_ALL
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
PROMPT -12 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -1 ""
PROMPT -22 -1 ""
END
ENDPAGE

View File

@ -158,7 +158,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
if (is_in_liq_period(inatt)) _isdifferita = FALSE;
TConfig cnf1(CONFIG_STUDIO, "cg");
_isricacq = cnf1.get_bool("RicAcq");
_isricacq = cnf1.get_bool("RicAcq");
// ricalcolo normale
// lim c'e' solo per i trimestri
@ -270,6 +270,9 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
if (!_isregis)
stliq = riepliq = TRUE;
if (_comp_acconto)
stliq = riepliq = FALSE;
if (calc || !recalc)
if (!update_att(month, cattiv) && stliq)
describe_error("Attivita' non ricalcolate: possibili errori",
@ -506,12 +509,21 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
tipodoc == "IN" || tipodoc == "PG");
/*
* check date: se si calcola l'acconto, solo da 1/12 a 20/12
* check date: se si calcola l'acconto, solo da 1/12 a 20/12 | 1/10 a 20/12
*/
int accmonth = _isdifferita ? 11 : 12;
if (_comp_acconto && date.month() != accmonth && date.day() > 20)
//if (_comp_acconto && date.month() != accmonth && date.day() > 20)
// continue;
if (_comp_acconto && _freqviva == "M" && date.month() != accmonth)
continue;
if (_comp_acconto && _freqviva == "T")
if (date.month() != 10 && date.month() != 11 && date.month() != 12)
continue;
if (_comp_acconto && date.month() == accmonth && date.day() > 20)
continue;
bool corrisp = _reg->get_bool("B0");
tiporeg tipomov = (tiporeg)_reg->get_long("I0");
@ -1540,8 +1552,10 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
look_lia();
_lia->put("R1", vol_aff_l);
_lia->put("R2", vol_aff_1);
_lia->put("R3", vol_aff_2);
//_lia->put("R4", acc_dec);
_lia->put("R3", vol_aff_2);
/***08/09/1995
_lia->put("R4", acc_dec);
***/
_lia->put("R5", cred_cost);
_lia->rewrite();
}

View File

@ -481,8 +481,13 @@ bool TLiquidazione_app::look_del(int month, int type, bool create)
if (abi.empty())
{
abi = anag.get("CODABI");
cab = anag.get("CODCAB");
/*
abi = anag.get("CODABI");
cab = anag.get("CODCAB");
*/
TConfig c (CONFIG_STUDIO, "cg");
abi = c.get("CodABI");
cab = c.get("CodCAB");
}
_del->put("S7", abi);
@ -494,7 +499,7 @@ bool TLiquidazione_app::look_del(int month, int type, bool create)
TString codban = format("%05ld", atol(abi));
if (!cab.empty()) codban << format("%05ld", atol(cab));
ban.put("CODTAB", codban);
if (ban.read() != NOERR)
if (ban.read() == NOERR)
{
TString desban(ban.get("S0"));
_del->put("S1", desban);

View File

@ -155,7 +155,6 @@ void TLiquidazione_app::describe_firm(int month)
d->_s2 = _freqviva;
d->_f1 = month;
_descr_arr.add(d);
}
@ -1963,7 +1962,7 @@ void TLiquidazione_app::set_deltab(_DescrItem& d, bool iscred)
TParagraph_string rgs(tt.get(1), 30);
TString diocantaro(rgs.get(0));
TString frq(tt.get(2));
real tp (tt.get(3));
real tp (tt.get(3));
real in (tt.get(4));
TString abi(tt.get(5));
TString cab(tt.get(6));
@ -1972,13 +1971,14 @@ void TLiquidazione_app::set_deltab(_DescrItem& d, bool iscred)
if (!tel.blank())
tel << '/';
tel << tt.get(9);
tp += in;
TString desc(tt.get(10));
set_row(rw++, "%-5s@8g%-30s@40g%1s %s @55g%r %5s %5s %3s",
//tp += in; //comprendeva gia' gli interessi!
set_row(rw++, "%-5s@8g%-30s@40g%1s %s @55g%r %5s %5s %3s %-.45s",
(const char*)cod, (const char*)diocantaro, (const char*)frq,
(const char*)tel, &tp, (const char*)abi,
(const char*)cab, (const char*)con);
(const char*)tel, &tp, (const char*)abi,
(const char*)cab, (const char*)con, (const char*)desc);
for (int i = 1; i < rgs.items(); i++)
set_row(rw++, "@8g%-30s", (const char*)rgs.get(i));

View File

@ -1,4 +1,4 @@
// cg4306: liquidazione IVA
// cg4305: liquidazione IVA
// funzionalita' accessorie (calcolo acconto, estrazione deleghe)
#include <defmask.h>
@ -10,7 +10,11 @@
#include "cg4300.h"
#include "cg4300b.h"
#include "cg4300c.h"
#include "cg4300c.h"
#include "cg4800b.h"
#define IVA_DA_VERSARE_ALTRI_MESI real(50500.0)
#define IVA_DA_VERSARE_MESE_12 real(500.0) //chiesto conferma a Milano: e' proprio cosi'
// -------------------------------------------------- estrazione deleghe
bool TLiquidazione_app::set_deleghe()
@ -57,8 +61,8 @@ bool TLiquidazione_app::set_deleghe()
if (k == K_ENTER)
{
_year = m.get(FLD_CGB_YEAR);
_month = atoi(m.get(FLD_CGB_MONTH));
_year = m.get(FLD_CGB_YEAR);
_month = atoi(m.get(FLD_CGB_MONTH));
}
return k == K_ENTER;
@ -89,7 +93,7 @@ bool TLiquidazione_app::extract_deleghe()
// must succeed
look_lia();
_freqviva = _lia->get("S7");
_freqviva = _lia->get("S7");
sprintf (buf,"Estrazione deleghe (%d):\nditta %s\n ",
_month,
@ -101,8 +105,8 @@ bool TLiquidazione_app::extract_deleghe()
{
_isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
bool mens = _freqviva == "M";
_isannual = (_month == 12 && !mens && !_isbenzinaro) ||
(_month == 13 && (mens || _isbenzinaro));
//_isannual = (_month == 12 && !mens && !_isbenzinaro) ||
// (_month == 13 && (mens || _isbenzinaro));
_isriepilogo = _month == 13;
_isendliq = _isannual || _isriepilogo;
@ -154,15 +158,27 @@ bool TLiquidazione_app::extract_deleghe()
bool TLiquidazione_app::extract_delega(int month, TArray& desc)
{
TToken_string* tt = NULL;
bool versare = FALSE;
if (look_lim(month))
{
real topay = result_liq(month); // TBC non si puo' fa' accussi'!!!!! pena il casino!
real topay = result_liq(month); // TBC non si puo' fa' accussi'!!!!! pena il casino!
if (month == 12)
{
if (topay > IVA_DA_VERSARE_MESE_12)
versare = TRUE;
}
else if (topay > IVA_DA_VERSARE_ALTRI_MESI)
versare = TRUE;
real intr = _lim->get_real("R14");
topay += intr; // lo vogliono registrato con interessi
real nrnd = topay;
topay.round(-3);
topay.round(-3); // importo totale del versamento arrotondato
//bool wasdel = look_del(month, _isannual ? 2 : 1);
bool wasdel = look_del(month, 1);
if (!topay.is_zero())
{
tt = new TToken_string(80);
@ -171,23 +187,38 @@ bool TLiquidazione_app::extract_delega(int month, TArray& desc)
tt->add(_freqviva);
tt->add(topay.string());
tt->add("");
// tt->add(intr.string());
}
if (topay.sign() > 0)
//if (topay.sign() > 0)
if (versare)
{
look_del(month, _isannual ? 2 : 1, TRUE);
_del->put("R0",topay);
_del->put("R1",intr);
_del->put("R2",nrnd); // non arrotondato, per calcolo risultato a debito/cr
_del->rewrite();
look_del(month, 1, TRUE);
bool stampato = _del->get_bool("B0");
if (stampato) //se esiste e stampato si richiede conferma aggiornamento
{
if (topay != _del->get_real("R0"))
video_conferma(topay, intr, nrnd);
}
else //aggiorna importo versamento
{
_del->put("R0",topay);
_del->put("R1",intr);
_del->put("R2",nrnd); // non arrotondato, per calcolo risultato a debito/cr
_del->rewrite();
}
tt->add(_del->get("S7"));
tt->add(_del->get("S8"));
tt->add(_del->get("S9"));
tt->add(_nditte->curr().get("PTEL"));
tt->add(_nditte->curr().get("TEL"));
tt->add(_nditte->curr().get("TEL"));
TString desc(_del->get("S1"));
if (desc.not_empty())
tt->add(desc);
else tt->add(_del->get("S2"));
}
else if (wasdel) //se esiste e no versare
_del->remove();
}
if (tt != NULL)
@ -196,6 +227,50 @@ bool TLiquidazione_app::extract_delega(int month, TArray& desc)
return TRUE;
}
bool TLiquidazione_app::video_conferma(const real& newimp, const real& intr,
const real& narr)
{
TMask m("cg4800b");
m.field(F_CODDITTA).set(_nditte->lfile().get("CODDITTA"));
m.field(F_RAGSOC).set(_nditte->lfile().get("RAGSOC"));
m.field(F_DATAVER).set(_del->get_date("D0"));
m.field(F_ABI).set(_del->get("S7"));
m.field(F_CAB).set(_del->get("S8"));
m.field(F_CON).set(_del->get("S9"));
m.field(F_IMPVER).set(_del->get("R0"));
m.field(F_NEWIMP).set(newimp.string());
for (bool stop = FALSE; !stop;)
{
KEY k = m.run();
switch(k)
{
case K_SAVE:
{
KEY k = yesnocancel_box("Delega gia' stampata. Si desidera ugualmente confermare l'aggiornamento?");
if (k == K_YES)
{
_del->put("B0", "");
_del->put("R0",newimp);
_del->put("R1",intr);
_del->put("R2",narr);
_del->rewrite();
}
if (k == K_YES || k == K_NO)
stop = TRUE;
}
break;
case K_ESC:
//case K_QUIT:
stop = TRUE;
break;
}
}
return TRUE;
}
// -------------------------------------------- calcolo acconto dicembre
bool TLiquidazione_app::set_acconto(real& inf, real& ina)
{
@ -246,7 +321,6 @@ bool TLiquidazione_app::set_acconto(real& inf, real& ina)
return k == K_ENTER;
}
bool TLiquidazione_app::recalc_acconti(real& inf, real& ina)
{
char buf[256];
@ -279,6 +353,14 @@ bool TLiquidazione_app::recalc_acconti(real& inf, real& ina)
_nditte->read();
TApplication::set_firm(_nditte->curr().get_long("CODDITTA"));
_isbenzinaro = _nditte->curr(LF_ATTIV).get_bool("ART74/4");
look_lia();
_freqviva = _lia->get("S7");
inf = _lia->get_real("R13");
ina = _lia->get_real("R14");
sprintf (buf,"Calcolo acconto:\nditta %s",
(const char*)_nditte_r->get("RAGSOC"));
_prind->set_text(buf);
@ -295,9 +377,21 @@ bool TLiquidazione_app::recalc_acconti(real& inf, real& ina)
bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
{
real bc, acc, cre, deb;
real bc = 0.0;
real acc = 0.0;
real cre = 0.0;
real deb = 0.0;
real iva_ven = 0.0;
real iva_acq = 0.0;
real iva_ret = 0.0;
real iva_rim = 0.0;
real ult_det = 0.0;
real iva_pro = 0.0;
real cre_pre = 0.0;
real acq_intr = 0.0;
bool isdifferita = FALSE;
bool error = FALSE;
TString16 tipo_acc;
// TBI rewrite from scratch
// this is absolutely fundamental
@ -392,7 +486,9 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
{
acc = bc * ACCONTO_DICEMBRE;
acc.round(ROUND_LIRA);
}
}
tipo_acc = "S";
}
_year = thyear;
}
@ -406,47 +502,94 @@ else if (_basecalc == incorso)
update_firm(12);
// calcola l'acconto
if (look_lim(12))
if (look_lim(12)) //posiziona anche la tabella lam
{
// TBC trimestrali, differite
bc = result_liq(12);
// somma i non fatturati/non annotati
//bc += inf + ina;
bc += inf + ina;
cre = _lim->get_real("R12");
deb = _lim->get_real("R13");
if (bc.sign() > 0) acc = bc;
if (bc.sign() > 0) acc = bc;
// 11/09/1995
iva_ven = _lam->get_real("R0"); //iva sulle vendite annotate fino al 20/12
iva_acq = _lam->get_real("R1"); //iva sugli acquisti annotati fino al 20/12
cre_pre = _lam->get_real("R2"); //credito precedente
iva_ret = _lim->get_real("R5"); //rettifica
iva_rim = _lim->get_real("R1"); //iva chiesta a rimborso
ult_det = _lim->get_real("R6"); //ulteriori detrazioni
//iva_pro: //iva relativa alla percentuale di prorata
TTable plm ("PLM");
plm.zero();
plm.put("CODTAB",_year);
TRectype rec (plm.curr());
plm.read(_isgteq);
for (; !plm.eof(); plm.next())
{
if (plm.curr() != rec) break;
iva_pro += plm.get_real("R2");
}
//acq_intr
TTable pom ("POM");
pom.zero();
pom.put("CODTAB",_year);
rec = pom.curr();
pom.read(_isgteq);
for (; !pom.eof(); pom.next())
{
if (pom.curr() != rec) break;
acq_intr += pom.get_real("R0");
}
tipo_acc = "A"; //flag per dire che si e' utilizzato il metodo analitico
//stop
}
else error = 1;
else error = 1;
// pulisci il water
_comp_acconto = FALSE;
update_firm(12);
_comp_acconto = FALSE;
_isprint = FALSE;
update_firm(12);
_isprint = TRUE;
}
// sbatti l'acconto in LIA
// sbatti l'acconto (e non solo!) in LIA
if (look_lia())
{
isdifferita = _lia->get_bool("B1");
if (isdifferita && _basecalc == incorso) acc *= real(double(2/3));
_lia->put("R4",acc);
_lia->put("R7",iva_ven);
_lia->put("R8",iva_acq);
_lia->put("R9",iva_ret);
_lia->put("R10",iva_rim);
_lia->put("R11",ult_det);
_lia->put("R12",iva_pro);
TToken_string rr;
rr.add(cre_pre.string(),0);
rr.add(acq_intr.string(),1);
_lia->put("S1",rr);
_lia->put("S8",tipo_acc);
_lia->rewrite();
}
bool wasdel = look_del(12,7);
/*** Non bisogna aggiornare la delega
bool wasdel = look_del(12,7);
if (acc.sign() > 0 && acc >= ACCONTO_MINIMO_DA_VERSARE)
{
if (acc.sign() > 0 && acc >= ACCONTO_MINIMO_DA_VERSARE)
{
// crea o aggiorna delega
// TBC everything
look_del(12,7,TRUE);
_del->put("R0", acc);
_del->rewrite();
}
else if (wasdel)
}
else if (wasdel)
_del->remove();
***/
// per questa volta lasciamo perdere la describe_acconto
if (_isprint)
// per questa volta lasciamo perdere la describe_acconto
if (_isprint)
{
// segnalazioni di errore da gesticolare:
// error = 0: no error
@ -468,3 +611,4 @@ else if (wasdel)
}
return TRUE;
}

View File

@ -1,3 +1,6 @@
//Gestione acconti: questo assurdo prg viene usato solo se ho un acconto da versare
//(cosa stabilita dal prg di calcolo acconti) e serve per versare meno, cioe'
//per frodare il fisco.
#include <relapp.h>
#include <config.h>
#include <msksheet.h>
@ -61,6 +64,8 @@ bool GesAcc_app::msk_credito(TMask_field& f, KEY k)
{
real credito (f.get());
real acconto (f.mask().get(F_ACCONTO));
if (credito.sign() < 0)
return f.error_box("Introdurre un valore non negativo");
if (credito > acconto)
return f.error_box("Il credito non puo' essere superiore all'acconto");
if (acconto.is_zero())
@ -78,6 +83,8 @@ bool GesAcc_app::msk_acconto(TMask_field& f, KEY k)
real acconto (f.get());
if (!acconto.is_zero())
{
if (acconto.sign() < 0)
return f.error_box("Introdurre un valore non negativo");
if (acconto - credito < ACCONTO_MENO_CREDITO)
return f.error_box("La differenza tra acconto e credito deve essere superiore a lire %s", ACCONTO_MENO_CREDITO.string("."));
}

View File

@ -1,3 +1,4 @@
//Creazione versamenti per acconti
#include <applicat.h>
#include <mask.h>
#include <tabutil.h>
@ -475,9 +476,12 @@ void VersAcc_app::lettura_anagrafica(bool* tipo)
{
*tipo = FALSE;
_con = "";
const long codabi = anag.get_long("CODABI");
const long codcab = anag.get_long("CODCAB");
if (codabi != 0 || codcab != 0)
//const long codabi = anag.get_long("CODABI");
//const long codcab = anag.get_long("CODCAB");
const long codabi = _nditte->lfile().get_long("ABIBAN");
const long codcab = _nditte->lfile().get_long("CABBAN");
//if (codabi != 0 || codcab != 0)
if (codabi != 0 && codcab != 0)
{
_abi = format("%05ld", codabi);
_cab = format("%05ld", codcab);
@ -518,7 +522,8 @@ bool VersAcc_app::video_conferma()
stop = TRUE;
}
break;
case K_ESC:
case K_ESC:
//case K_QUIT:
stop = TRUE;
break;
}

View File

@ -10,7 +10,7 @@ END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -34 -1 ""
PROMPT -22 -1 ""
MESSAGE EXIT,K_ESC
END
@ -52,19 +52,19 @@ END
NUMBER F_ABI 5
BEGIN
PROMPT 1 6 "Codice banca "
FLAGS "D"
FLAGS "ZD"
END
NUMBER F_CAB 5
BEGIN
PROMPT 1 7 "Codice dipendenza "
FLAGS "D"
FLAGS "ZD"
END
NUMBER F_CON 3
BEGIN
PROMPT 1 8 "Codice concessione "
FLAGS "D"
FLAGS "ZD"
END
NUMBER F_IMPVER 15

543
cg/cg4900.cpp Executable file
View File

@ -0,0 +1,543 @@
//Visualizzazione liquidazione acconti
#include <applicat.h>
#include <mask.h>
#include <tabutil.h>
#include <relation.h>
#include <sheet.h>
#include <urldefid.h>
#include <prefix.h>
#include <printer.h>
#include <progind.h>
#include <utility.h>
#include <config.h>
#include "cg4900.h"
#define ACCONTO_MIN_DA_VERSARE real(200000.0)
class LiqAcc_app : public TApplication
{
TRelation* _nditte;
TArray_sheet* _ditte;
TArray _nomiditte;
TMask* _mask;
TTable* _lia,* _lam;
int _year;
long _ditta;
bool _registra;
TString16 _tipo_acc;
protected:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG);
// handlers
static bool set_ditta(TMask_field&, KEY);
static bool set_ragsoc(TMask_field&, KEY);
static bool ch_year_handler(TMask_field& f, KEY key);
static bool msk_risul(TMask_field& f, KEY key);
static bool msk_hide(TMask& m, KEY key);
public:
static LiqAcc_app& app() { return (LiqAcc_app&)main_app(); }
void build_ditte_sheet();
void build_nomiditte();
void reset_fields();
bool vis_acc();
bool video_vis();
bool select_butt(TMask& m);
LiqAcc_app() : _ditte(NULL), _nomiditte(100), _registra(FALSE) {}
};
bool LiqAcc_app::create()
{
TApplication::create();
TDate oggi(TODAY);
_year = oggi.year();
_nditte = new TRelation(LF_NDITTE);
_ditte = new TArray_sheet(-1, -1, 0, 0, "Selezione Ditte",
"Cod.@5|Ragione Sociale@50|Vers.");
_lia = new TTable("%LIA");
_lam = new TTable("LAM");
begin_wait();
build_nomiditte();
build_ditte_sheet();
end_wait();
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
bool LiqAcc_app::destroy()
{
delete _lia;
delete _ditte;
delete _nditte;
return TApplication::destroy();
}
// handlers
bool LiqAcc_app::msk_hide(TMask& m,KEY k)
{
if (k == K_SHIFT+K_F7) //&& app()._registra)
{
TMask m1("cg4900d");
m1.field(F_TIPO).set(app()._tipo_acc);
for (bool stop1 = FALSE; !stop1;)
{
KEY k1 = m1.run();
switch(k1)
{
case K_ESC:
case K_QUIT:
if (m1.dirty())
{
KEY k = yesnocancel_box("Registrazione modifiche effettuate?");
if (k == K_YES)
{
TString16 tipo (m1.get(F_TIPO));
TTable lia ("%LIA");
TString16 y; y.format("%05ld%04d", app()._ditta, app()._year);
lia.zero();
lia.put("CODTAB", y);
if (lia.read() != NOERR)
return FALSE;
lia.put("S8", tipo);
lia.rewrite();
}
if (k == K_YES || k == K_NO)
stop1 = TRUE;
break;
}
else stop1 = TRUE;
break;
case K_SAVE:
if (m1.dirty())
{
TString16 tipo (m1.get(F_TIPO));
TTable lia ("%LIA");
TString16 y; y.format("%05ld%04d", app()._ditta, app()._year);
lia.zero();
lia.put("CODTAB", y);
if (lia.read() != NOERR)
return FALSE;
lia.put("S8", tipo);
lia.rewrite();
}
break;
} //switch
} //for
}
return TRUE;
}
bool LiqAcc_app::msk_risul(TMask_field& f, KEY k)
{
if (k == K_TAB && f.focusdirty())
{
real iva_ven(f.mask().get(F_IVAVEN));
real iva_red(f.mask().get(F_IVARED));
real iva_rim(f.mask().get(F_IVARIM));
real non_fat(f.mask().get(F_NONFAT));
real non_ann(f.mask().get(F_NONANN));
real risven = ZERO;
risven = iva_ven + iva_red + iva_rim + non_fat + non_ann;
real risacq (f.mask().get(F_RISACQ));
if (risacq - risven < ZERO)
{
f.mask().show(F_IVADEB);
f.mask().hide(F_IVACRE);
}
else if (risacq - risven > ZERO)
{
f.mask().hide(F_IVADEB);
f.mask().show(F_IVACRE);
}
else
{
f.mask().hide(F_IVADEB);
f.mask().hide(F_IVACRE);
}
}
return TRUE;
}
bool LiqAcc_app::set_ditta(TMask_field& f, KEY k)
{
bool found = TRUE;
if (k == K_F9)
return app().select_butt(f.mask());
if (k == K_TAB && f.focusdirty())
{
found = FALSE;
TString ditta = f.get();
for (int i = 0; i < app()._ditte->items(); i++)
{
TToken_string& row = app()._ditte->row(i);
if (ditta == row.get(0))
{
if (app()._ditte->enabled(i))
{
f.mask().field(F_CODDITTA).set(row.get(0));
f.mask().field(F_RAGSOC).set(row.get(1));
found = TRUE;
}
else
{
warning_box("Non sono definiti i parametri liquidazione per la ditta %ld",
atol(ditta));
f.reset();
}
break;
}
}
}
if (!found) f.reset();
return found;
}
bool LiqAcc_app::set_ragsoc(TMask_field& f, KEY k)
{
bool found = TRUE;
if (k == K_F9)
return app().select_butt(f.mask());
if (k == K_TAB && f.focusdirty())
{
found = FALSE;
TString ditta = f.get();
for (int i = 0; i < app()._ditte->items(); i++)
{
TToken_string& row = app()._ditte->row(i);
TString ts(row.get(1));
if (ts.find(ditta) != -1)
{
if (app()._ditte->enabled(i))
{
f.mask().field(F_CODDITTA).set(row.get(0));
f.mask().field(F_RAGSOC).set(row.get(1));
found = TRUE;
break;
}
}
}
}
if (!found) f.reset();
return found;
}
bool LiqAcc_app::ch_year_handler(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty())
{
app().begin_wait();
app()._year = atoi(f.get());
app().build_nomiditte();
app().build_ditte_sheet();
app().reset_fields();
app().end_wait();
}
return TRUE;
}
void LiqAcc_app::build_ditte_sheet()
{
// build sheet
_ditte->destroy();
for (int i = 0; i < _nomiditte.items(); i++)
{
TToken_string* d = new TToken_string(64);
*d = (TToken_string&)_nomiditte[i];
const char vers = d->get_char(2);
bool selectable = vers == '?';
const long pos = _ditte->add(d);
if (selectable) _ditte->disable(pos);
}
}
void LiqAcc_app::reset_fields()
{
_mask->field(F_CODDITTA).set("");
_mask->field(F_RAGSOC).set("");
}
bool LiqAcc_app::select_butt(TMask& m)
{
if (_ditte->run() == K_ENTER)
{
TToken_string& row = _ditte->row(_ditte->selected());
m.field(F_CODDITTA).set(row.get(0));
m.field(F_RAGSOC).set(row.get(1));
return TRUE;
}
return FALSE;
}
void LiqAcc_app::build_nomiditte()
{
_nomiditte.destroy();
// ricostruire _nomiditte e rifare build_ditte_sheet
TLocalisamfile& dt = _nditte->lfile();
TString fr(2);
TTable lia("%LIA");
for (dt.first(); !dt.eof(); dt.next())
{
// check no archivi
fr = "??";
bool good = prefix().exist(dt.get_long("CODDITTA"));
if (good)
{
// check no parametri liquidazione
lia.put("CODTAB", format("%05ld%d",dt.get_long("CODDITTA"),_year));
if (lia.read() != NOERR) good = FALSE;
else fr = lia.get("S7");
}
else continue;
TToken_string* d = new TToken_string(64);
// add record
d->add(dt.get("CODDITTA"));
d->add(dt.get("RAGSOC"));
d->add(fr);
_nomiditte.add(d);
}
}
bool LiqAcc_app::menu(MENU_TAG m)
{
if (m == BAR_ITEM(1))
return vis_acc();
return TApplication::menu(m);
}
bool LiqAcc_app::vis_acc()
{
long ditta = get_firm();
TMask m("cg4900a");
KEY k;
_mask = &m;
m.set_handler(F_CODDITTA, set_ditta);
m.set_handler(F_RAGSOC, set_ragsoc);
m.set_handler(F_YEAR, ch_year_handler);
while ((k = m.run()) != K_ESC)
{
if (k == DLG_SELECT)
select_butt(m);
else if (k == K_ENTER)
{
if (m.get(F_CODDITTA).empty() || m.get(F_RAGSOC).empty())
{
beep();
continue;
}
_ditta = m.get_long(F_CODDITTA);
_year = m.get_int(F_YEAR);
set_firm(_ditta);
video_vis();
}
}
_mask = NULL;
set_firm(ditta);
return FALSE;
}
bool LiqAcc_app::video_vis()
{
TTable lia ("%LIA");
TString16 y; y.format("%05ld%04d", _ditta, _year);
lia.zero();
lia.put("CODTAB", y);
if (lia.read() != NOERR) //da verificare se e' giusto
return FALSE;
_tipo_acc = lia.get("S8");
TString16 freqviva = lia.get("S7");
bool liqdiff = lia.get_bool("B1");
real acconto = ZERO;
real iva_ven = ZERO;
real iva_acq = ZERO;
real iva_ret = ZERO;
real iva_rim = ZERO;
real ult_det = ZERO;
real per_pro = ZERO;
real non_fat = ZERO;
real non_ann = ZERO;
real risven = ZERO;
real risacq = ZERO;
real diff = ZERO;
acconto = lia.get_real("R4");
iva_ven = lia.get_real("R7");
iva_acq = lia.get_real("R8");
iva_ret = lia.get_real("R9");
iva_rim = lia.get_real("R10");
ult_det = lia.get_real("R11");
per_pro = lia.get_real("R12");
non_fat = lia.get_real("R13");
non_ann = lia.get_real("R14");
TToken_string ff(lia.get("S1"));
real cre_pre (ff.get(0));
real acq_intr (ff.get(1));
// mask diverse per liq. differita oppure no
TMask m(liqdiff ? "cg4900c" : "cg4900b");
m.field(F_IVAVEN).set(iva_ven.string());
if (!liqdiff)
{
m.field(F_NONFAT).set(non_fat.string());
m.field(F_NONANN).set(non_ann.string());
}
if (iva_ret.sign() <= 0)
m.field(F_IVAREC).set(abs(iva_ret).string());
else m.field(F_IVARED).set(iva_ret.string());
m.field(F_IVARIM).set(iva_rim.string());
m.field(F_IVAACQ).set((iva_acq + acq_intr).string());
if (per_pro.is_zero())
m.hide(F_PERPRO);
else
{
m.show(F_PERPRO);
m.field(F_PERPRO).set(per_pro.string());
}
m.field(F_CREPRE).set(cre_pre.string());
m.field(F_ULTDET).set(ult_det.string());
risven = iva_ven + non_fat + non_ann + iva_ret + iva_rim;
m.field(F_RISVEN).set(risven.string());
risacq = iva_acq + acq_intr + cre_pre + ult_det + abs(iva_ret);
m.field(F_RISACQ).set(risacq.string());
diff = risacq - risven;
if (diff.sign() < 0)
{
m.show(F_IVADEB);
m.hide(F_IVACRE);
if (liqdiff) //se no e' gestito da maschera
m.field(F_IVADEB).set(abs(diff).string());
}
else if (diff.sign() > 0)
{
m.hide(F_IVADEB);
m.show(F_IVACRE);
if (liqdiff)
m.field(F_IVACRE).set(diff.string());
}
else
{
m.hide(F_IVADEB);
m.hide(F_IVACRE);
}
if (acconto.sign() < 0)
{
m.show(F_CREEVI);
m.field(F_CREEVI).set(acconto.string());
m.hide(F_ACCVER);
m.hide(F_ACCNVER);
}
else if (acconto.sign() > 0 && acconto > ACCONTO_MIN_DA_VERSARE)
{
m.hide(F_CREEVI);
m.hide(F_ACCNVER);
m.show(F_ACCVER);
m.field(F_ACCVER).set(acconto.string());
}
else if (acconto.sign() > 0 && acconto <= ACCONTO_MIN_DA_VERSARE)
{
m.hide(F_CREEVI);
m.show(F_ACCNVER);
m.hide(F_ACCVER);
m.field(F_ACCNVER).set(acconto.string());
}
m.set_handler(F_NONFAT, msk_risul);
m.set_handler(F_NONANN, msk_risul);
m.set_handler(msk_hide);
for (bool stop = FALSE; !stop;)
{
KEY k = m.run();
switch(k)
{
case K_ESC:
case K_QUIT:
if (m.dirty())
{
KEY k = yesnocancel_box("Registrazione modifiche effettuate?");
if (k == K_YES)
{
if (!liqdiff)
{
real nf (m.get(F_NONFAT));
real na (m.get(F_NONANN));
if (nf != non_fat || na != non_ann)
message_box("Valori modificati: rieseguire il calcolo dell'acconto");
lia.put("R13", nf);
lia.put("R14", na);
lia.rewrite();
}
}
if (k == K_YES || k == K_NO)
stop = TRUE;
break;
}
else stop = TRUE;
break;
case K_SAVE:
_registra = TRUE;
if (m.dirty())
{
if (!liqdiff)
{
real nf (m.get(F_NONFAT));
real na (m.get(F_NONANN));
if (nf != non_fat || na != non_ann)
message_box("Valori modificati: rieseguire il calcolo dell'acconto");
lia.put("R13", nf);
lia.put("R14", na);
lia.rewrite();
}
}
break;
}
}
return TRUE;
}
int cg4900(int argc, char* argv[])
{
LiqAcc_app app;
app.run(argc, argv, "Visualizzazione liquidazione acconti");
return 0;
}

21
cg/cg4900.h Executable file
View File

@ -0,0 +1,21 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_YEAR 103
#define F_IVAVEN 104
#define F_NONFAT 105
#define F_NONANN 106
#define F_IVARED 107
#define F_IVARIM 108
#define F_RISVEN 109
#define F_IVAACQ 110
#define F_PERPRO 111
#define F_CREPRE 112
#define F_ULTDET 113
#define F_IVAREC 114
#define F_RISACQ 115
#define F_IVACRE 116
#define F_CREEVI 117
#define F_IVADEB 118
#define F_ACCVER 119
#define F_ACCNVER 120
#define F_TIPO 121

50
cg/cg4900a.uml Executable file
View File

@ -0,0 +1,50 @@
#include "cg4900a.h"
PAGE "Visualizzazione liquidazione acconti" -1 -1 70 6
NUMBER F_CODDITTA 5
BEGIN
PROMPT 1 1 "Codice ditta "
HELP "Codice della ditta da attivare"
END
BUTTON F_SELECT 2 1
BEGIN
PROMPT 20 1 "*"
PICTURE 109
MESSAGE EXIT,DLG_SELECT
END
STRING F_RAGSOC 50 30
BEGIN
PROMPT 25 1 "Rag. soc. "
HELP "Ragione sociale della ditta da selezionare"
END
BUTTON F_SELECT 2 1
BEGIN
PROMPT 66 1 "*"
PICTURE 109
MESSAGE EXIT,DLG_SELECT
END
NUMBER F_YEAR 4
BEGIN
PROMPT 1 2 "Anno liquidazione "
FLAGS "A"
VALIDATE FIXLEN_FUNC 4
CHECKTYPE REQUIRED
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

185
cg/cg4900b.uml Executable file
View File

@ -0,0 +1,185 @@
#include "cg4900.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_SAVEREC 8 2
BEGIN
PROMPT -13 -1 "~Registra"
MESSAGE EXIT,K_SAVE
END
BUTTON DLG_CANCEL 8 2
BEGIN
PROMPT -23 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 8 2
BEGIN
PROMPT -33 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
PAGE "Acconto su operazioni effettuate" -1 -1 77 20
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Codice "
FLAGS "DFR"
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Rag. Soc. "
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 51 3 "Credito"
END
TEXT DLG_NULL
BEGIN
PROMPT 66 3 "Debito"
END
NUMBER F_IVAVEN 15
BEGIN
PROMPT 1 4 "Iva sulle operazioni annotate fino al 20 dic. "
FLAGS "RD"
PICTURE "."
END
NUMBER F_NONFAT 15
BEGIN
PROMPT 1 5 "Iva su operaz. fino al 20 dic., ma non fatturate "
FLAGS "R"
PICTURE "."
MESSAGE K_TAB,F_RISVEN|K_TAB,F_IVACRE|K_TAB,F_IVADEB
END
NUMBER F_NONANN 15
BEGIN
PROMPT 1 6 "Iva su operaz. fino al 20 dic., ma non annotate "
FLAGS "R"
PICTURE "."
MESSAGE K_TAB,F_RISVEN|K_TAB,F_IVACRE|K_TAB,F_IVADEB
END
NUMBER F_IVARED 15
BEGIN
PROMPT 1 7 "Rettifiche iva a debito "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVARIM 15
BEGIN
PROMPT 1 8 "Iva chiesta a rimborso "
FLAGS "RD"
PICTURE "."
END
NUMBER F_RISVEN 15
BEGIN
PROMPT 1 9 "RISULTATO "
FLAGS "RD"
PICTURE "."
NUM_CALC {#F_IVAVEN + #F_NONFAT + #F_NONANN + #F_IVARED + #F_IVARIM}
END
NUMBER F_IVAACQ 15
BEGIN
PROMPT 1 10 "Iva su acq. annotati fino al 20 dic. "
FLAGS "RD"
PICTURE "."
END
NUMBER F_PERPRO 15
BEGIN
PROMPT 1 11 "meno % di prorata pari a Lire "
FLAGS "RD"
PICTURE "."
END
NUMBER F_CREPRE 15
BEGIN
PROMPT 1 12 "Credito precedente "
FLAGS "RD"
PICTURE "."
END
NUMBER F_ULTDET 15
BEGIN
PROMPT 1 13 "Ulteriori detrazioni "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVAREC 15
BEGIN
PROMPT 1 14 "Rettifiche iva a credito "
FLAGS "RD"
PICTURE "."
END
NUMBER F_RISACQ 15
BEGIN
PROMPT 1 15 "RISULTATO "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVACRE 15
BEGIN
PROMPT 15 16 "IVA A CREDITO "
FLAGS "RD"
PICTURE "."
NUM_CALC {#F_RISACQ - #F_RISVEN}
END
NUMBER F_CREEVI 15
BEGIN
PROMPT 6 17 "CREDITO DA EVIDENZIARE "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVADEB 15
BEGIN
PROMPT 16 16 "IVA A DEBITO "
FLAGS "RD"
PICTURE "."
NUM_CALC {#F_RISVEN - #F_RISACQ}
END
NUMBER F_ACCVER 15
BEGIN
PROMPT 10 17 "ACCONTO DA VERSARE "
FLAGS "RD"
PICTURE "."
END
NUMBER F_ACCNVER 15
BEGIN
PROMPT 6 17 "ACCONTO DA NON VERSARE "
FLAGS "RD"
PICTURE "."
END
ENDPAGE
ENDMASK

168
cg/cg4900c.uml Executable file
View File

@ -0,0 +1,168 @@
#include "cg4900.h"
TOOLBAR "" 0 20 0 2
/*
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -12 -1 "~Registra"
MESSAGE EXIT,K_SAVE
END
*/
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -12 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
PAGE "Acconto su operazioni effettuate" -1 -1 77 20
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Codice "
FLAGS "DFR"
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Rag. Soc. "
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 51 3 "Credito"
END
TEXT DLG_NULL
BEGIN
PROMPT 66 3 "Debito"
END
NUMBER F_IVAVEN 15
BEGIN
PROMPT 1 4 "Iva sulle operazioni di vendita "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVARED 15
BEGIN
PROMPT 1 5 "Rettifiche iva a debito "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVARIM 15
BEGIN
PROMPT 1 6 "Iva chiesta a rimborso "
FLAGS "RD"
PICTURE "."
END
NUMBER F_RISVEN 15
BEGIN
PROMPT 1 7 "RISULTATO "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVAACQ 15
BEGIN
PROMPT 1 9 "Iva sulle operazioni di acquisto "
FLAGS "RD"
PICTURE "."
END
NUMBER F_PERPRO 15
BEGIN
PROMPT 1 10 "meno % di prorata pari a Lire "
FLAGS "RD"
PICTURE "."
END
NUMBER F_CREPRE 15
BEGIN
PROMPT 1 11 "Credito precedente "
FLAGS "RD"
PICTURE "."
END
NUMBER F_ULTDET 15
BEGIN
PROMPT 1 12 "Ulteriori detrazioni "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVAREC 15
BEGIN
PROMPT 1 13 "Rettifiche iva a credito "
FLAGS "RD"
PICTURE "."
END
NUMBER F_RISACQ 15
BEGIN
PROMPT 1 14 "RISULTATO "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVACRE 15
BEGIN
PROMPT 15 15 "IVA A CREDITO "
FLAGS "RD"
PICTURE "."
END
NUMBER F_CREEVI 15
BEGIN
PROMPT 6 17 "CREDITO DA EVIDENZIARE "
FLAGS "RD"
PICTURE "."
END
NUMBER F_IVADEB 15
BEGIN
PROMPT 16 15 "IVA A DEBITO "
FLAGS "RD"
PICTURE "."
END
NUMBER F_ACCVER 15
BEGIN
PROMPT 10 17 "ACCONTO DA VERSARE "
FLAGS "RD"
PICTURE "."
END
NUMBER F_ACCNVER 15
BEGIN
PROMPT 6 17 "ACCONTO DA NON VERSARE "
FLAGS "RD"
PICTURE "."
END
ENDPAGE
ENDMASK

58
cg/cg4900d.uml Executable file
View File

@ -0,0 +1,58 @@
#include "cg4900.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_SAVEREC 8 2
BEGIN
PROMPT -13 -1 "~Registra"
MESSAGE EXIT,K_SAVE
END
BUTTON DLG_CANCEL 8 2
BEGIN
PROMPT -23 -1 ""
MESSAGE EXIT,K_ESC
END
BUTTON DLG_QUIT 8 2
BEGIN
PROMPT -33 -1 ""
MESSAGE EXIT,K_QUIT
END
ENDPAGE
PAGE "Acconto su operazioni effettuate" -1 -1 77 20
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 1 "Codice "
FLAGS "DFR"
USE LF_NDITTE KEY 1
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Rag. Soc. "
FLAGS "D"
END
RADIOBUTTON F_TIPO 24
BEGIN
PROMPT 3 4 "Tipo calcolo acconto"
ITEM "A|Analitico"
ITEM "S|Storico"
END
ENDPAGE
ENDMASK