Aggiunta la gestione del saldo DARE e AVERE e dei totali IMPONIBILI.

Aggiuta la ricerca per descrizione dei conti e dei clienti nelle maschere.


git-svn-id: svn://10.65.10.50/trunk@129 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-09-01 16:26:29 +00:00
parent c9d6658992
commit 03532d4a93
10 changed files with 1553 additions and 1324 deletions

View File

@ -1,84 +1,88 @@
#ifndef __CG2100_H
#define __CG2100_H
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_DATAREG 103
#define F_NUMREG 104
#define F_CODCAUS 105
#define F_DESCRCAUS 106
#define F_DOCUMENTO 107
#define F_TIPODOC 108
#define F_CODREG 109
#define F_PROTIVA 110
#define F_RIEPILOGO 111
#define F_DESCR 112
#define F_DATADOC 113
#define F_NUMDOC 114
#define F_ANNOES 115
#define F_DATACOMP 116
#define F_ANNOIVA 117
#define F_CLIFO 150
#define F_CLIENTE 151
#define F_RAGSOCCLIENTE 152
#define F_STATOPAIV 153
#define F_PIVACLIENTE 154
#define F_FORNITORE 161
#define F_RAGSOCFORNITORE 162
#define F_PIVAFORNITORE 164
#define F_GRUPPOCLIFO 172
#define F_CONTOCLIFO 173
#define F_GRUPPORIC 174
#define F_CONTORIC 175
#define F_SOTTOCONTORIC 176
#define F_TOTALE 118
#define F_CODIVA 119
#define F_RITFIS 120
#define F_RITSOC 121
#define F_CODPAG 122
#define F_ANNORIF 123
#define F_NUMRIF 124
#define F_VALUTA 126
#define F_CAMBIO 127
#define F_VISVAL 128
#define F_PROVVISORIO 129
#define F_OCCASIONALE 130
#define F_OCCASEDIT 131
#define F_SOLAIVA 132
#define F_CORRLIRE 133
#define F_CORRVALUTA 134
#define F_DATA74TER 135
#define F_DESCAGG 136
#define F_SHEETCG 300
#define F_SHEETIVA 301
// Campi ripetuti sulla seconda pagina
#define H_DATAREG 201
#define H_NUMREG 202
#define H_CODCAUS 203
#define H_DESCRCAUS 204
#define H_ANNOES 205
// Campi ripetuti sulla terza pagina
#define H_DATAREG1 211
#define H_NUMREG1 212
#define H_CODCAUS1 213
#define H_DESCRCAUS1 214
#define H_ANNOES1 215
// Maschera clienti/fornitori occasionali
#define O_CODICE 100
#define O_RAGSOC 101
#define O_STATO 102
#define O_COMUNE 103
#define O_DENCOM 104
#define O_CAP 105
#define O_INDIRIZZO 106
#define O_NUMERO 107
#define O_SESSO 110
#define O_DATANAS 111
#define O_STATONAS 112
#define O_COMUNENAS 113
#define O_DENCOMNAS 114
#endif
#ifndef __CG2100_H
#define __CG2100_H
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_DATAREG 103
#define F_NUMREG 104
#define F_CODCAUS 105
#define F_DESCRCAUS 106
#define F_DOCUMENTO 107
#define F_TIPODOC 108
#define F_CODREG 109
#define F_PROTIVA 110
#define F_RIEPILOGO 111
#define F_DESCR 112
#define F_DATADOC 113
#define F_NUMDOC 114
#define F_ANNOES 115
#define F_DATACOMP 116
#define F_ANNOIVA 117
#define F_CLIFO 150
#define F_CLIENTE 151
#define F_RAGSOCCLIENTE 152
#define F_STATOPAIV 153
#define F_PIVACLIENTE 154
#define F_FORNITORE 161
#define F_RAGSOCFORNITORE 162
#define F_PIVAFORNITORE 164
#define F_GRUPPOCLIFO 172
#define F_CONTOCLIFO 173
#define F_GRUPPORIC 174
#define F_CONTORIC 175
#define F_SOTTOCONTORIC 176
#define F_TOTALE 118
#define F_CODIVA 119
#define F_RITFIS 120
#define F_RITSOC 121
#define F_CODPAG 122
#define F_ANNORIF 123
#define F_NUMRIF 124
#define F_VALUTA 126
#define F_CAMBIO 127
#define F_VISVAL 128
#define F_PROVVISORIO 129
#define F_OCCASIONALE 130
#define F_OCCASEDIT 131
#define F_SOLAIVA 132
#define F_CORRLIRE 133
#define F_CORRVALUTA 134
#define F_DATA74TER 135
#define F_DESCAGG 136
#define F_DARE 137
#define F_AVERE 138
#define F_IMPONIBILI 139
#define F_IMPOSTE 140
#define F_SHEETCG 300
#define F_SHEETIVA 301
// Campi ripetuti sulla seconda pagina
#define H_DATAREG 201
#define H_NUMREG 202
#define H_CODCAUS 203
#define H_DESCRCAUS 204
#define H_ANNOES 205
// Campi ripetuti sulla terza pagina
#define H_DATAREG1 211
#define H_NUMREG1 212
#define H_CODCAUS1 213
#define H_DESCRCAUS1 214
#define H_ANNOES1 215
// Maschera clienti/fornitori occasionali
#define O_CODICE 100
#define O_RAGSOC 101
#define O_STATO 102
#define O_COMUNE 103
#define O_DENCOM 104
#define O_CAP 105
#define O_INDIRIZZO 106
#define O_NUMERO 107
#define O_SESSO 110
#define O_DATANAS 111
#define O_STATONAS 112
#define O_COMUNENAS 113
#define O_DENCOMNAS 114
#endif

View File

@ -168,7 +168,7 @@ END
SPREADSHEET F_SHEETCG
BEGIN
PROMPT 1 10 ""
PROMPT 0 9 ""
ITEM "Dare@17"
ITEM "Avere@17"
ITEM " @1"
@ -186,6 +186,20 @@ BEGIN
ITEM " @1"
END
NUMBER F_DARE 17
BEGIN
PROMPT 1 -1 "Saldo Dare "
FLAGS "DRV"
PICTURE "."
END
NUMBER F_AVERE 17
BEGIN
PROMPT 40 -1 "Saldo Avere "
FLAGS "DRV"
PICTURE "."
END
ENDPAGE
ENDMASK

File diff suppressed because it is too large Load Diff

View File

@ -1,221 +1,225 @@
#include <xvtmacro.h>
#include "cg2101.h"
#include "cg2103.h"
#include <lffiles.h>
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
///////////////////////////////////////////////////////////
// Movimento di prima nota
///////////////////////////////////////////////////////////
TMovimentoPN::TMovimentoPN()
: TRelation(LF_MOV), _oldcg(0), _oldiva(0)
{
add(LF_RMOV, "NUMREG=NUMREG");
add(LF_RMOVIVA, "NUMREG=NUMREG");
}
void TMovimentoPN::destroy_rows()
{
_cg.destroy();
_iva.destroy();
}
TRectype& TMovimentoPN::cg(int i)
{
TRectype* r = (TRectype*)_cg.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOV);
_cg.add(r, i);
}
return *r;
}
TRectype& TMovimentoPN::iva(int i)
{
TRectype* r = (TRectype*)_iva.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOVIVA);
_iva.add(r, i);
}
return *r;
}
int TMovimentoPN::read_mov_rows()
{
const TLocalisamfile* rm = lfile(LF_RMOV);
const TLocalisamfile* ri = lfile(LF_RMOVIVA);
position_rels();
destroy_rows();
for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV))
{
const int row = rm->get_int(RMV_NUMRIG) - 1;
cg(row) = rm->curr();
}
_oldcg = cg_items();
for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA))
{
const int row = ri->get_int(RMI_NUMRIG) - 1;
iva(row) = ri->curr();
}
_oldiva = iva_items();
return NOERR;
}
int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate)
{
int err = file()->read(op, lockop, atdate);
if (err == NOERR) err = read_mov_rows();
return err;
}
int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile* f)
{
if (re)
{
const bool scrivi = f->rewrite(rec) != NOERR;
if (scrivi) f->write(rec);
}
else
{
f->write(rec);
}
return f->status();
}
int TMovimentoPN::cancella(TLocalisamfile* f, int da, int a)
{
const long numreg = lfile()->get_long("NUMREG");
for (int i = da; i <= a; i++)
{
f->zero();
f->put("NUMREG", numreg);
f->put("NUMRIG", i);
if (f->read(_isequal, _lock) == NOERR)
f->remove();
}
return f->status();
}
int TMovimentoPN::registra(bool re, bool force)
{
TLocalisamfile* m = lfile();
const int err = write_rec(re, m->curr(), m);
if (err != NOERR) return err;
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
const long numreg = m->get_long("NUMREG");
for (int i = 0 ; i < cg_items(); i++)
{
if (!re) cg(i).put("NUMREG", numreg);
const int err = write_rec(re, cg(i), rm);
if (!force && err != NOERR) return err;
}
if (i < _oldcg)
cancella(rm, i+1, _oldcg);
_oldcg = cg_items();
for (i = 0 ; i < iva_items(); i++)
{
if (!re) iva(i).put("NUMREG", numreg);
const int err = write_rec(re, iva(i), ri);
if (!force && err != NOERR) return err;
}
if (i < _oldiva)
cancella(ri, i+1, _oldiva);
_oldiva = iva_items();
return err;
}
int TMovimentoPN::write(bool force, TDate&)
{
const TLocalisamfile& r = *lfile();
const int annoiva = r.get_int("ANNOIVA");
const TString16 reg(r.get("REG"));
TRegistro registro(reg, annoiva);
if (reg.not_empty() && registro.tipo_attivita() == "M")
{
for (int i = 0; i < iva_items(); i++)
{
const int riga = iva(i).get_int("RIGAIMP");
int tipoatt = 0;
if (riga)
{
const TRectype& r = cg(riga-1);
const char tipo = r.get_char("TIPOC");
if (tipo == ' ')
{
TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
TRectype conto(LF_PCON); c.read(conto);
const TIndbil ib = (TIndbil)conto.get_int("INDBIL");
if (ib == ib_passivita || ib == ib_ricavi)
{
int ricser = conto.get_int("RICSER");
tipoatt = (ricser <= 0) ? 2 : 1;
}
}
}
iva(i).put("TIPOATT", tipoatt);
}
}
_oldcg = _oldiva = 0;
int err = registra(FALSE, force);
if (err == NOERR)
{
if (reg.not_empty())
{
const long protiva = r.get_long("PROTIVA");
const long uprotiva = r.get_long("UPROTIVA");
const TDate datareg = r.get_date("DATAREG");
registro.update(max(protiva, uprotiva), datareg);
}
}
return err;
}
int TMovimentoPN::rewrite(bool force, TDate&)
{
return registra(TRUE, force);
}
int TMovimentoPN::remove(TDate&)
{
TLocalisamfile* m = lfile();
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
cancella(rm, 1, _oldcg);
cancella(ri, 1, _oldiva);
m->remove();
_oldcg = _oldiva = 0;
return m->status();
}
#include <xvtmacro.h>
#include "cg2101.h"
#include "cg2103.h"
#include <lffiles.h>
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
///////////////////////////////////////////////////////////
// Movimento di prima nota
///////////////////////////////////////////////////////////
TMovimentoPN::TMovimentoPN()
: TRelation(LF_MOV), _oldcg(0), _oldiva(0)
{
add(LF_RMOV, "NUMREG=NUMREG");
add(LF_RMOVIVA, "NUMREG=NUMREG");
}
void TMovimentoPN::destroy_rows()
{
_cg.destroy();
_iva.destroy();
}
TRectype& TMovimentoPN::cg(int i)
{
TRectype* r = (TRectype*)_cg.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOV);
_cg.add(r, i);
}
return *r;
}
TRectype& TMovimentoPN::iva(int i)
{
TRectype* r = (TRectype*)_iva.objptr(i);
if (r == NULL)
{
r = new TRectype(LF_RMOVIVA);
_iva.add(r, i);
}
return *r;
}
int TMovimentoPN::read_mov_rows()
{
const TLocalisamfile* rm = lfile(LF_RMOV);
const TLocalisamfile* ri = lfile(LF_RMOVIVA);
position_rels();
destroy_rows();
for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV))
{
const int row = rm->get_int(RMV_NUMRIG) - 1;
cg(row) = rm->curr();
}
_oldcg = cg_items();
for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA))
{
const int row = ri->get_int(RMI_NUMRIG) - 1;
iva(row) = ri->curr();
}
_oldiva = iva_items();
return NOERR;
}
int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate)
{
int err = file()->read(op, lockop, atdate);
if (err == NOERR) err = read_mov_rows();
return err;
}
int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile* f)
{
if (re)
{
const bool scrivi = f->rewrite(rec) != NOERR;
if (scrivi) f->write(rec);
}
else
{
f->write(rec);
}
return f->status();
}
int TMovimentoPN::cancella(TLocalisamfile* f, int da, int a)
{
const long numreg = lfile()->get_long("NUMREG");
for (int i = da; i <= a; i++)
{
f->zero();
f->put("NUMREG", numreg);
f->put("NUMRIG", i);
if (f->read(_isequal, _lock) == NOERR)
f->remove();
}
return f->status();
}
int TMovimentoPN::registra(bool re, bool force)
{
TLocalisamfile* m = lfile();
const int err = write_rec(re, m->curr(), m);
if (err != NOERR) return err;
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
const long numreg = m->get_long("NUMREG");
for (int i = 0 ; i < cg_items(); i++)
{
if (!re) cg(i).put("NUMREG", numreg);
const int err = write_rec(re, cg(i), rm);
if (!force && err != NOERR) return err;
}
if (i < _oldcg)
cancella(rm, i+1, _oldcg);
_oldcg = cg_items();
for (i = 0 ; i < iva_items(); i++)
{
if (!re) iva(i).put("NUMREG", numreg);
const int err = write_rec(re, iva(i), ri);
if (!force && err != NOERR) return err;
}
if (i < _oldiva)
cancella(ri, i+1, _oldiva);
_oldiva = iva_items();
return err;
}
int TMovimentoPN::write(bool force, TDate&)
{
const TLocalisamfile& r = *lfile();
const int annoiva = r.get_int("ANNOIVA");
const TString16 reg(r.get("REG"));
TRegistro registro(reg, annoiva);
if (registro.iva() != nessuna_iva)
{
const bool mista = registro.tipo_attivita() == "M";
for (int i = 0; i < iva_items(); i++)
{
int tipoatt = 1;
if (mista)
{
const int riga = iva(i).get_int("RIGAIMP");
if (riga)
{
const TRectype& r = cg(riga-1);
const char tipo = r.get_char("TIPOC");
if (tipo == ' ')
{
TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
TRectype conto(LF_PCON); c.read(conto);
const TIndbil ib = (TIndbil)conto.get_int("INDBIL");
if (ib == ib_passivita || ib == ib_ricavi)
{
int ricser = conto.get_int("RICSER");
tipoatt = (ricser == 0) ? 2 : 1;
}
}
}
}
iva(i).put("TIPOATT", tipoatt);
}
}
_oldcg = _oldiva = 0;
int err = registra(FALSE, force);
if (err == NOERR)
{
if (reg.not_empty())
{
const long protiva = r.get_long("PROTIVA");
const long uprotiva = r.get_long("UPROTIVA");
const TDate datareg = r.get_date("DATAREG");
registro.update(max(protiva, uprotiva), datareg);
}
}
return err;
}
int TMovimentoPN::rewrite(bool force, TDate&)
{
return registra(TRUE, force);
}
int TMovimentoPN::remove(TDate&)
{
TLocalisamfile* m = lfile();
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA);
cancella(rm, 1, _oldcg);
cancella(ri, 1, _oldiva);
m->remove();
_oldcg = _oldiva = 0;
return m->status();
}

View File

@ -266,11 +266,17 @@ void TPrimanota_application::disable_cgs_cells(int n, char tipo)
case 'F': // Ritenute Fiscali
case 'S': // Ritenute Sociali
case 'D': // IVA Detraibile
case 'N':last = 3; break; // IVA Non detraibile
case 'T': // Totale documento
case 'I':last = 6; break; // Imponibile
default :last = 0; break; // Solo contabile
}
case 'N':
last = 3; // IVA Non detraibile
break;
case 'T': // Totale documento
case 'I':
last = 7; // Imponibile
break;
default :
last = 0; // Solo contabile
break;
}
TSheet_field& cg = cgs();
for (int i = 0; i < last; i++)
@ -343,14 +349,7 @@ void TPrimanota_application::cgs_pack()
{
const real imp = get_cgs_imp(i);
if (imp == 0.0)
{
del = TRUE;
/*
const TConto c(r, 6, 0x0); // Remove if import=0 and Bill not used
del = !bill_used(c);
*/
}
}
if (del)
rows.destroy(i, FALSE);
@ -360,6 +359,44 @@ void TPrimanota_application::cgs_pack()
}
real TPrimanota_application::calcola_saldo() const
{
TArray& rows = cgs().rows_array();
const int max = rows.items();
real tdare, tavere;
for (int i = 0; i < max; i++)
{
TToken_string& r = (TToken_string&)rows[i];
const real dare(r.get(0));
const real avere(r.get());
tdare += dare;
tavere += avere;
}
real saldo = tdare-tavere;
switch (saldo.sign())
{
case 1:
mask().set(F_DARE, saldo.string());
mask().reset(F_AVERE);
break;
case -1:
mask().reset(F_DARE);
saldo = -saldo;
mask().set(F_AVERE, saldo.string());
break;
default:
mask().reset(F_DARE);
mask().reset(F_AVERE);
break;
}
return saldo;
}
// Handler dello sheet di contabilita'
// Certified 90%
bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
@ -367,22 +404,15 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
if (k == K_ENTER)
{
TSheet_field& cg = app().cgs();
bool empty = TRUE;
real saldo;
for (int i = 0; i < cg.items(); i++)
{
const real imp = app().get_cgs_imp(i);
if (empty) empty = imp == 0.0;
saldo += imp;
}
if (saldo != 0.0)
real saldo = app().calcola_saldo();
if (saldo != ZERO)
{
const char* ss = saldo.string(".");
return f.error_box("Il movimento e' sbilanciato di %s lire.", ss);
}
else
if (empty)
return f.error_box("Il movimento non contiene nessuna riga contabile!");
if (app().get_cgs_imp(0) == ZERO)
return f.error_box("Il movimento non ha una prima riga contabile valida!");
}
return TRUE;
}
@ -393,17 +423,22 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
TSheet_field& cg = app().cgs();
TToken_string& row = cg.row(r);
const char tipo = row.empty() ? ' ' : row.right(1)[0];
if (k == K_SPACE)
{
TMask& m = cg.sheet_mask();
m.enable(DLG_DELREC, tipo == ' ');
} else
if (k == K_DEL)
{
if (tipo != ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
}
switch(k)
{
case K_SPACE:
cg.sheet_mask().enable(DLG_DELREC, tipo == ' ');
break;
case K_ENTER:
app().calcola_saldo();
break;
case K_DEL:
if (tipo != ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
break;
default:
break;
}
return TRUE;
}
@ -497,7 +532,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
const real& percent = cod2IVA(f.mask().get(102));
real imposta = abs(imponibile) * percent / 100.0;
imposta.ceil();
if (imponibile.sign() < 0) imposta = -imposta;
if (imponibile < ZERO) imposta = -imposta;
const real val(f.get());
if (val != imposta)
@ -506,8 +541,8 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
{
const TString16 wrong(val.string("."));
const TString16 right(imposta.string("."));
if (f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
(const char*)wrong, (const char*)right));
f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
(const char*)wrong, (const char*)right);
}
}
} else
@ -524,6 +559,26 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
}
real TPrimanota_application::calcola_imp() const
{
TArray& rows = ivas().rows_array();
const int max = rows.items();
real imponibili, imposte;
for (int r = 0; r < max; r++)
{
TToken_string& row = (TToken_string&)rows[r];
imponibili += real(row.get(0));
imposte += real(row.get(3));
}
mask().set(F_IMPONIBILI, imponibili.string());
mask().set(F_IMPOSTE, imposte.string());
return imponibili+imposte;
}
// Certified 50%
bool TPrimanota_application::iva_notify(int r, KEY k)
{
@ -589,7 +644,10 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
}
else
app().add_cgs_imp(oldposiva, imp-oldiva);
oldiva = imp;
oldiva = imp;
app().calcola_imp();
app().calcola_saldo();
}
return TRUE;
}
@ -601,13 +659,7 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k)
{
if (k != K_ENTER) return TRUE;
real imp;
for (int r = 0; r < app().ivas().items(); r++)
{
TToken_string& row = app().ivas().row(r);
imp += real(row.get(0)); // imponibile
imp += real(row.get(3)); // imposta
}
const real imp = app().calcola_imp();
const TMask& m = f.mask();
real tot(m.get(F_TOTALE));

View File

@ -23,119 +23,121 @@
class TPrimanota_application : public TRelation_application
{
TMovimentoPN* _rel;
TLocalisamfile* _tabcom;
TLocalisamfile* _tab;
TLocalisamfile* _caus;
TLocalisamfile* _rcaus;
TLocalisamfile* _clifo;
TLocalisamfile* _pcon;
TLocalisamfile* _attiv;
TLocalisamfile* _saldo;
TLocalisamfile* _comuni;
TLocalisamfile* _occas;
TLocalisamfile* _nditte;
TMovimentoPN* _rel;
TLocalisamfile* _tabcom;
TLocalisamfile* _tab;
TLocalisamfile* _caus;
TLocalisamfile* _rcaus;
TLocalisamfile* _clifo;
TLocalisamfile* _pcon;
TLocalisamfile* _attiv;
TLocalisamfile* _saldo;
TLocalisamfile* _comuni;
TLocalisamfile* _occas;
TLocalisamfile* _nditte;
TCausale _causale; // Causale corrente
TLibro_giornale _giornale; // Libro giornale corrente
TipoIVA _iva; // Tipo di IVA corrente
TSaldo_agg _saldi; // Saldi da aggiornare
TCausale _causale; // Causale corrente
TLibro_giornale _giornale; // Libro giornale corrente
TipoIVA _iva; // Tipo di IVA corrente
TSaldo_agg _saldi; // Saldi da aggiornare
TMask* _msk[4]; // Maschere di query, cg, iva
long _lastreg; // Numero ultima registrazione
int _mode; // Modo maschera corrente
TMask* _msk[4]; // Maschere di query, cg, iva
long _lastreg; // Numero ultima registrazione
int _mode; // Modo maschera corrente
static bool suspended_handler(TMask_field& f, KEY k);
static bool num_handler(TMask_field& f, KEY key);
static bool caus_query_handler(TMask_field& f, KEY key);
static bool caus_modify_handler(TMask_field& f, KEY key);
static bool num_handler(TMask_field& f, KEY key);
static bool caus_query_handler(TMask_field& f, KEY key);
static bool caus_modify_handler(TMask_field& f, KEY key);
static bool datareg_handler(TMask_field& f, KEY key);
static bool datacomp_handler(TMask_field& f, KEY key);
static bool data74ter_handler(TMask_field& f, KEY key);
static bool reg_handler(TMask_field& f, KEY key);
static bool clifo_handler(TMask_field& f, KEY key);
static bool totale_handler(TMask_field& f, KEY key);
static bool ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_handler(TMask_field& f, KEY key);
static bool visval_handler(TMask_field& f, KEY key);
static bool reg_handler(TMask_field& f, KEY key);
static bool clifo_handler(TMask_field& f, KEY key);
static bool totale_handler(TMask_field& f, KEY key);
static bool ritfis_handler(TMask_field& f, KEY key);
static bool ritsoc_handler(TMask_field& f, KEY key);
static bool visval_handler(TMask_field& f, KEY key);
static bool occas_code_handler(TMask_field& f, KEY key);
static bool occas_handler(TMask_field& f, KEY key);
static bool solaiva_handler(TMask_field& f, KEY key);
static bool occas_handler(TMask_field& f, KEY key);
static bool solaiva_handler(TMask_field& f, KEY key);
static bool descr_handler(TMask_field& f, KEY k);
static bool imponibile_handler(TMask_field& f, KEY key);
static bool codiva_handler(TMask_field& f, KEY key);
static bool imposta_handler(TMask_field& f, KEY key);
static bool codiva_handler(TMask_field& f, KEY key);
static bool imposta_handler(TMask_field& f, KEY key);
static bool dareavere_handler(TMask_field& f, KEY k);
static bool conto_handler(TMask_field& f, KEY key);
static bool iva_notify(int r, KEY key);
static bool iva_handler(TMask_field& f, KEY key);
static bool cg_notify(int r, KEY key);
static bool cg_handler(TMask_field& f, KEY key);
static bool iva_notify(int r, KEY key);
static bool iva_handler(TMask_field& f, KEY key);
static bool cg_notify(int r, KEY key);
static bool cg_handler(TMask_field& f, KEY key);
protected:
virtual bool user_create();
virtual bool user_destroy();
virtual bool changing_mask(int mode);
virtual TMask* get_mask(int mode);
virtual TRelation* get_relation() const { return _rel; }
virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual const char* get_next_key();
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual bool remove();
virtual bool user_create();
virtual bool user_destroy();
virtual bool changing_mask(int mode);
virtual TMask* get_mask(int mode);
virtual TRelation* get_relation() const { return _rel; }
virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual const char* get_next_key();
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual bool remove();
void genera_incasso(const char* causimm);
TMask* load_mask(int n);
TMask& occas_mask() { return *load_mask(3); }
bool get_conto(int r, TConto& c) const;
void mask2rel(const TMask& m);
bool get_conto(int r, TConto& c) const;
void mask2rel(const TMask& m);
TipoIVA iva() const { return _iva; }
TipoIVA iva() const { return _iva; }
TMask& TPrimanota_application::mask() const;
void fill_sheet(TMask& m) const;
void init_mask(TMask& m);
void fill_sheet(TMask& m) const;
void init_mask(TMask& m);
TSheet_field& cgs() const;
TSheet_field& ivas() const;
TSheet_field& cgs() const;
TSheet_field& ivas() const;
static real imp2sez(const real& importo);
static int bill2pos(const TConto& conto, char tipo);
static TipoIVA reg2IVA(const char* registro, int anno);
static TipoIVA cau2IVA(const char* causale, int anno);
static int type2pos(char tipo);
static const real& cod2IVA(const char* codiva);
static real imp2sez(const real& importo);
static int bill2pos(const TConto& conto, char tipo);
static TipoIVA reg2IVA(const char* registro, int anno);
static TipoIVA cau2IVA(const char* causale, int anno);
static int type2pos(char tipo);
static const real& cod2IVA(const char* codiva);
static real scorpora(real& imponibile, const real& percentuale);
static int date2esc(const TDate& d, int* prev = NULL);
static bool detraibile(int tipodet);
static int date2esc(const TDate& d, int* prev = NULL);
static bool detraibile(int tipodet);
bool bill_used(const TConto& conto) const;
int bill2contr(const TConto& c, char sezione) const;
bool read_caus(const char* cod, int year);
bool bill_used(const TConto& conto) const;
int bill2contr(const TConto& c, char sezione) const;
bool read_caus(const char* cod, int year);
TCausale& causale() { return _causale; }
TLibro_giornale& giornale() { return _giornale; }
void set_cgs_imp(int n, const real& importo);
real get_cgs_imp(int n);
void add_cgs_imp(int n, const real& importo);
void cgs_pack();
void set_cgs_imp(int n, const real& importo);
real get_cgs_imp(int n);
void add_cgs_imp(int n, const real& importo);
void cgs_pack();
real calcola_saldo() const;
real calcola_imp() const;
void set_ivas_row(int n, const char* codiva, TConto& tc, const char* desc);
int set_cgs_row(int n, const real& importo, TConto& conto, const char* desc, char tipo);
void disable_cgs_cells(int n, char tipo);
void set_ivas_row(int n, const char* codiva, TConto& tc, const char* desc);
int set_cgs_row(int n, const real& importo, TConto& conto, const char* desc, char tipo);
void disable_cgs_cells(int n, char tipo);
void add_cgs_tot(TMask& m);
void add_cgs_rit(bool fisc);
void add_cgs_rit(bool fisc);
public:
TPrimanota_application();
TPrimanota_application();
};
#endif

View File

@ -1,265 +1,342 @@
PAGE "RIGA PRIMA NOTA" -1 -1 67 17
GROUPBOX DLG_NULL 66 3
BEGIN
PROMPT 1 1 "Descrizione"
END
STRING 108 5
BEGIN
PROMPT 2 2 ""
FLAGS "U"
USE %DPN
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT 108 CODTAB
OUTPUT 109 S0
CHECKTYPE NORMAL
END
STRING 109 50
BEGIN
PROMPT 14 2 ""
FIELD DESCR
END
GROUPBOX DLG_NULL 66 5
BEGIN
PROMPT 1 4 "Conto principale"
END
NUMBER 101 14
BEGIN
PROMPT 2 5 "Dare "
FLAGS "RUV"
PICTURE "."
END
NUMBER 102 14
BEGIN
PROMPT 44 5 "Avere "
FLAGS "RUV"
PICTURE "."
END
LIST 103 1 12
BEGIN
PROMPT 2 6 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206
END
NUMBER 104 3
BEGIN
PROMPT 20 6 "Gruppo "
END
NUMBER 105 3
BEGIN
PROMPT 32 6 "Conto "
FIELD LF_PCON->CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
INPUT GRUPPO 104
INPUT CONTO 105
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT 103 TMCF
OUTPUT 104 GRUPPO
OUTPUT 105 CONTO
OUTPUT 107 DESCR
ADD RUN CG0 -0
CHECKTYPE NORMAL
WARNING "Conto inesistente o mancante sulla riga contabile"
END
NUMBER 106 6
BEGIN
PROMPT 45 6 "Sottoconto "
FIELD LF_PCON->SOTTOCONTO
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO 104
INPUT CONTO 105
INPUT SOTTOCONTO 106
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
COPY OUTPUT 105
OUTPUT 106 SOTTOCONTO
ADD RUN cg0 -0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 2 101 102
WARNING "Sottoconto inesistente o mancante sulla riga contabile"
END
NUMBER 206 6
BEGIN
PROMPT 45 6 "Cliente "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF 206
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 206 CODCF
OUTPUT 107 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
FLAGS "G"
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
NUMBER 306 6
BEGIN
PROMPT 45 6 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
INPUT TIPOCF "F"
INPUT CODCF 306
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 306 CODCF
OUTPUT 107 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
MESSAGE COPY,106
FLAGS "G"
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
STRING 107 50
BEGIN
PROMPT 2 7 "Descrizione "
FIELD LF_PCON->SOTTOCONTO
FLAGS "D"
END
GROUPBOX DLG_NULL 66 4
BEGIN
PROMPT 1 9 "Contropartita"
END
LIST 110 1 12
BEGIN
PROMPT 2 10 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313
ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313
ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213
END
NUMBER 111 3
BEGIN
PROMPT 20 10 "Gruppo "
END
NUMBER 112 3
BEGIN
PROMPT 32 10 "Conto "
FIELD LF_PCON->CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
INPUT GRUPPO 111
INPUT CONTO 112
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT 110 TMCF
OUTPUT 111 GRUPPO
OUTPUT 112 CONTO
OUTPUT 114 DESCR
ADD RUN CG0 -0
CHECKTYPE NORMAL
END
NUMBER 113 6
BEGIN
PROMPT 45 10 "Sottoconto "
FIELD LF_PCON->SOTTOCONTO
COPY USE 106
COPY INPUT 112
INPUT SOTTOCONTO 113
COPY DISPLAY 106
COPY OUTPUT 112
OUTPUT 113 SOTTOCONTO
CHECKTYPE NORMAL
END
NUMBER 213 6
BEGIN
PROMPT 45 10 "Cliente "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF 213
COPY DISPLAY 206
OUTPUT 213 CODCF
OUTPUT 114 RAGSOC
MESSAGE COPY,113
CHECKTYPE NORMAL
END
NUMBER 313 6
BEGIN
PROMPT 45 10 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
INPUT TIPOCF "F"
INPUT CODCF 313
COPY DISPLAY 306
COPY OUTPUT 213
OUTPUT 313 CODCF
MESSAGE COPY,113
CHECKTYPE NORMAL
END
STRING 114 50
BEGIN
FIELD LF_PCON->DESCR
PROMPT 2 11 "Descrizione "
FLAGS "D"
END
LIST 115 20
BEGIN
PROMPT 2 13 "Tipo riga "
ITEM " |Sola contabilita'"
ITEM "C|Gestione saldaconto"
ITEM "D|IVA detraibile"
ITEM "F|Ritenute fiscali"
ITEM "I|Riga di IVA"
ITEM "N|IVA non detraibile"
ITEM "S|Ritenute sociali"
ITEM "T|Totale documento"
FLAGS "D"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_DELREC 9 2
BEGIN
PROMPT -33 -1 "Elimina"
END
ENDPAGE
ENDMASK
PAGE "RIGA PRIMA NOTA" -1 -1 67 16
GROUPBOX DLG_NULL 66 3
BEGIN
PROMPT 1 1 "Descrizione"
END
STRING 108 5
BEGIN
PROMPT 2 2 ""
FLAGS "U"
USE %DPN
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT 108 CODTAB
OUTPUT 109 S0
CHECKTYPE NORMAL
END
STRING 109 50
BEGIN
PROMPT 14 2 ""
FIELD DESCR
END
GROUPBOX DLG_NULL 66 5
BEGIN
PROMPT 1 4 "Conto principale"
END
NUMBER 101 14
BEGIN
PROMPT 2 5 "Dare "
FLAGS "RUV"
PICTURE "."
END
NUMBER 102 14
BEGIN
PROMPT 44 5 "Avere "
FLAGS "RUV"
PICTURE "."
END
LIST 103 1 12
BEGIN
PROMPT 2 6 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,106|HIDE,206|HIDE,306|SHOW,107|HIDE,207|HIDE,307
ITEM "C|Cliente" MESSAGE SHOW,206|HIDE,106|HIDE,306|SHOW,207|HIDE,107|HIDE,307
ITEM "F|Fornitore" MESSAGE SHOW,306|HIDE,106|HIDE,206|SHOW,307|HIDE,107|HIDE,207
END
NUMBER 104 3
BEGIN
PROMPT 20 6 "Gruppo "
END
NUMBER 105 3
BEGIN
PROMPT 32 6 "Conto "
FIELD LF_PCON->CONTO
USE LF_PCON SELECT (CONTO!="") && (SOTTOCONTO="")
INPUT GRUPPO 104
INPUT CONTO 105
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT 103 TMCF
OUTPUT 104 GRUPPO
OUTPUT 105 CONTO
OUTPUT 107 DESCR
ADD RUN CG0 -0
CHECKTYPE NORMAL
WARNING "Conto inesistente o mancante sulla riga contabile"
END
NUMBER 106 6
BEGIN
PROMPT 45 6 "Sottoconto "
FIELD LF_PCON->SOTTOCONTO
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO 104
INPUT CONTO 105
INPUT SOTTOCONTO 106
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT 106 SOTTOCONTO
OUTPUT 104 GRUPPO
OUTPUT 105 CONTO
OUTPUT 107 DESCR
ADD RUN cg0 -0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 2 101 102
WARNING "Sottoconto inesistente o mancante sulla riga contabile"
END
NUMBER 206 6
BEGIN
PROMPT 45 6 "Cliente "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF 206
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 206 CODCF
OUTPUT 307 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
NUMBER 306 6
BEGIN
PROMPT 45 6 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO
INPUT TIPOCF "F"
INPUT CODCF 306
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 306 CODCF
OUTPUT 307 RAGSOC
MESSAGE COPY,106
ADD RUN cg0 -1
MESSAGE COPY,106
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
STRING 107 50
BEGIN
PROMPT 2 7 "Descriz. "
FIELD LF_PCON->DESCR
USE LF_PCON KEY 2
INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 106
CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga contabile"
ADD RUN cg0 -0
END
STRING 207 50
BEGIN
PROMPT 2 7 "Cliente "
FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC 207
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 206
MESSAGE COPY,107
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
STRING 307 50
BEGIN
PROMPT 2 7 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC 307
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 306
MESSAGE COPY,107
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
GROUPBOX DLG_NULL 66 4
BEGIN
PROMPT 1 9 "Contropartita"
END
LIST 110 1 12
BEGIN
PROMPT 2 10 "Tipo "
FLAGS "U"
ITEM " |Conto" MESSAGE SHOW,113|HIDE,213|HIDE,313|SHOW,114|HIDE,214|HIDE,314
ITEM "C|Cliente" MESSAGE SHOW,213|HIDE,113|HIDE,313|SHOW,214|HIDE,114|HIDE,314
ITEM "F|Fornitore" MESSAGE SHOW,313|HIDE,113|HIDE,213|SHOW,314|HIDE,114|HIDE,214
END
NUMBER 111 3
BEGIN
PROMPT 20 10 "Gruppo "
END
NUMBER 112 3
BEGIN
PROMPT 32 10 "Conto "
FIELD LF_PCON->CONTO
COPY USE 105
INPUT GRUPPO 111
INPUT CONTO 112
COPY DISPLAY 105
OUTPUT 110 TMCF
OUTPUT 111 GRUPPO
OUTPUT 112 CONTO
OUTPUT 114 DESCR
ADD RUN CG0 -0
CHECKTYPE NORMAL
END
NUMBER 113 6
BEGIN
PROMPT 45 10 "Sottoconto "
FIELD LF_PCON->SOTTOCONTO
COPY USE 106
COPY INPUT 112
INPUT SOTTOCONTO 113
COPY DISPLAY 106
OUTPUT 113 SOTTOCONTO
OUTPUT 111 GRUPPO
OUTPUT 112 CONTO
OUTPUT 114 DESCR
CHECKTYPE NORMAL
END
NUMBER 213 6
BEGIN
PROMPT 45 10 "Cliente "
FIELD LF_CLIFO->CODCF
COPY USE 206
INPUT TIPOCF "C"
INPUT CODCF 213
COPY DISPLAY 206
OUTPUT 213 CODCF
OUTPUT 214 RAGSOC
MESSAGE COPY,113
CHECKTYPE NORMAL
END
NUMBER 313 6
BEGIN
PROMPT 45 10 "Fornitore "
FIELD LF_CLIFO->CODCF
COPY USE 306
INPUT TIPOCF "F"
INPUT CODCF 313
COPY DISPLAY 306
OUTPUT 313 CODCF
OUTPUT 314 RAGSOC
MESSAGE COPY,113
CHECKTYPE NORMAL
END
STRING 114 50
BEGIN
PROMPT 2 11 "Descriz. "
FIELD LF_PCON->DESCR
COPY USE 107
INPUT DESCR 114
COPY DISPLAY 107
COPY OUTPUT 113
ADD RUN cg0 -0
WARNING "Conto inesistente sulla riga contabile"
END
STRING 214 50
BEGIN
PROMPT 2 11 "Cliente "
FIELD LF_CLIFO->RAGSOC
COPY USE 207
INPUT TIPOCF "C"
INPUT RAGSOC 214
COPY DISPLAY 207
COPY OUTPUT 213
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga contabile"
END
STRING 314 50
BEGIN
PROMPT 2 11 "Fornitore "
FIELD LF_CLIFO->RAGSOC
COPY USE 307
INPUT TIPOCF "F"
INPUT RAGSOC 314
COPY DISPLAY 307
COPY OUTPUT 313
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga contabile"
END
LIST 115 20
BEGIN
PROMPT 2 13 "Tipo riga "
ITEM " |Sola contabilita'"
ITEM "C|Gestione saldaconto"
ITEM "D|IVA detraibile"
ITEM "F|Ritenute fiscali"
ITEM "I|Riga di IVA"
ITEM "N|IVA non detraibile"
ITEM "S|Ritenute sociali"
ITEM "T|Totale documento"
FLAGS "D"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_DELREC 9 2
BEGIN
PROMPT -33 -1 "Elimina"
END
ENDPAGE
ENDMASK

View File

@ -10,11 +10,11 @@ BEGIN
PROMPT 2 2 "Tipo "
FIELD TMCF
ITEM " |Conto"
MESSAGE SHOW,109|HIDE,209|HIDE,309
MESSAGE SHOW,109|HIDE,209|HIDE,309|SHOW,110|HIDE,210|HIDE,310
ITEM "C|Cliente"
MESSAGE SHOW,209|HIDE,109|HIDE,309
MESSAGE SHOW,209|HIDE,109|HIDE,309|SHOW,210|HIDE,110|HIDE,310
ITEM "F|Fornitore"
MESSAGE SHOW,309|HIDE,109|HIDE,209
MESSAGE SHOW,309|HIDE,109|HIDE,209|SHOW,310|HIDE,110|HIDE,210
FLAGS "U"
END
@ -58,10 +58,10 @@ BEGIN
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT 109 SOTTOCONTO
OUTPUT 105 TIPOSPRIC
OUTPUT 107 GRUPPO
OUTPUT 108 CONTO
OUTPUT 109 SOTTOCONTO
OUTPUT 110 DESCR
ADD RUN cg0 -0
CHECKTYPE NORMAL
@ -80,7 +80,7 @@ BEGIN
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
OUTPUT 209 CODCF
OUTPUT 110 RAGSOC
OUTPUT 210 RAGSOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "G"
@ -98,7 +98,7 @@ BEGIN
OUTPUT 107 GRUPPO
OUTPUT 108 CONTO
OUTPUT 309 CODCF
OUTPUT 110 RAGSOC
OUTPUT 310 RAGSOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
FLAGS "G"
@ -107,10 +107,58 @@ END
STRING 110 50
BEGIN
PROMPT 2 3 "Descrizione "
FLAGS "D"
PROMPT 2 3 "Descriz. "
FIELD LF_PCON->DESCR
USE LF_PCON KEY 2
INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT 109
CHECKTYPE NORMAL
WARNING "Sottoconto inesistente o mancante sulla riga IVA"
ADD RUN cg0 -0
END
STRING 210 50
BEGIN
PROMPT 2 3 "Cliente "
FIELD LF_CLIFO->RAGSOC
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC 210
DISPLAY "Ragione Sociale Cliente@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 209
MESSAGE COPY,110
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Cliente inesistente sulla riga IVA"
END
STRING 310 50
BEGIN
PROMPT 2 3 "Fornitore "
FIELD LF_PCON->SOTTOCONTO
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC 310
DISPLAY "Ragione Sociale Fornitore@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Codice" CODCF
COPY OUTPUT 309
MESSAGE COPY,110
ADD RUN cg0 -1
CHECKTYPE NORMAL
WARNING "Fornitore inesistente sulla riga IVA"
END
GROUPBOX DLG_NULL 67 5
BEGIN
PROMPT 1 5 "Imposta"

View File

@ -1,26 +1,27 @@
#include <xvt.h>
#include <checks.h>
#include "cg3.h"
#define usage "Error - usage : %s -{0|1|2|3|4|5}"
int main(int argc,char** argv)
{
int rt = 0 ;
int s = atoi(argv[1]+1) ;
switch (s)
{
case 0: rt = cg3100(argc,argv) ; break;
case 1: rt = cg3200(argc,argv) ; break;
// case 2: rt = cg3400(argc,argv) ; break;
case 3: rt = cg3500(argc,argv) ; break;
default: error_box(usage, argv[0]) ; break;
}
return rt;
}
#include <xvt.h>
#include <checks.h>
#include "cg3.h"
#define usage "Error - usage : %s -{0|1|2|3|4|5}"
int main(int argc,char** argv)
{
int rt = 0 ;
int s = atoi(argv[1]+1) ;
switch (s)
{
case 0: rt = cg3100(argc,argv) ; break;
case 1: rt = cg3200(argc,argv) ; break;
case 2: rt = cg3300(argc,argv) ; break;
case 3: rt = cg3400(argc,argv) ; break;
case 4: rt = cg3500(argc,argv) ; break;
default: error_box(usage, argv[0]) ; break;
}
return rt;
}

View File

@ -1,19 +1,19 @@
#ifndef __CG3_H
#define __CG3_H
#ifdef MAIN
#define extern
#endif
#ifdef MAIN
#undef extern
#endif
int cg3100(int argc, char* argv[]);
int cg3200(int argc, char* argv[]);
int cg3300(int argc, char* argv[]);
//int cg3400(int argc, char* argv[]);
int cg3500(int argc, char* argv[]);
#endif // __CG3_H
#ifndef __CG3_H
#define __CG3_H
#ifdef MAIN
#define extern
#endif
#ifdef MAIN
#undef extern
#endif
int cg3100(int argc, char* argv[]);
int cg3200(int argc, char* argv[]);
int cg3300(int argc, char* argv[]);
int cg3400(int argc, char* argv[]);
int cg3500(int argc, char* argv[]);
#endif // __CG3_H