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

View File

@ -168,7 +168,7 @@ END
SPREADSHEET F_SHEETCG SPREADSHEET F_SHEETCG
BEGIN BEGIN
PROMPT 1 10 "" PROMPT 0 9 ""
ITEM "Dare@17" ITEM "Dare@17"
ITEM "Avere@17" ITEM "Avere@17"
ITEM " @1" ITEM " @1"
@ -186,6 +186,20 @@ BEGIN
ITEM " @1" ITEM " @1"
END 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 ENDPAGE
ENDMASK ENDMASK

File diff suppressed because it is too large Load Diff

View File

@ -1,221 +1,225 @@
#include <xvtmacro.h> #include <xvtmacro.h>
#include "cg2101.h" #include "cg2101.h"
#include "cg2103.h" #include "cg2103.h"
#include <lffiles.h> #include <lffiles.h>
#include <mov.h> #include <mov.h>
#include <rmov.h> #include <rmov.h>
#include <rmoviva.h> #include <rmoviva.h>
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Movimento di prima nota // Movimento di prima nota
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
TMovimentoPN::TMovimentoPN() TMovimentoPN::TMovimentoPN()
: TRelation(LF_MOV), _oldcg(0), _oldiva(0) : TRelation(LF_MOV), _oldcg(0), _oldiva(0)
{ {
add(LF_RMOV, "NUMREG=NUMREG"); add(LF_RMOV, "NUMREG=NUMREG");
add(LF_RMOVIVA, "NUMREG=NUMREG"); add(LF_RMOVIVA, "NUMREG=NUMREG");
} }
void TMovimentoPN::destroy_rows() void TMovimentoPN::destroy_rows()
{ {
_cg.destroy(); _cg.destroy();
_iva.destroy(); _iva.destroy();
} }
TRectype& TMovimentoPN::cg(int i) TRectype& TMovimentoPN::cg(int i)
{ {
TRectype* r = (TRectype*)_cg.objptr(i); TRectype* r = (TRectype*)_cg.objptr(i);
if (r == NULL) if (r == NULL)
{ {
r = new TRectype(LF_RMOV); r = new TRectype(LF_RMOV);
_cg.add(r, i); _cg.add(r, i);
} }
return *r; return *r;
} }
TRectype& TMovimentoPN::iva(int i) TRectype& TMovimentoPN::iva(int i)
{ {
TRectype* r = (TRectype*)_iva.objptr(i); TRectype* r = (TRectype*)_iva.objptr(i);
if (r == NULL) if (r == NULL)
{ {
r = new TRectype(LF_RMOVIVA); r = new TRectype(LF_RMOVIVA);
_iva.add(r, i); _iva.add(r, i);
} }
return *r; return *r;
} }
int TMovimentoPN::read_mov_rows() int TMovimentoPN::read_mov_rows()
{ {
const TLocalisamfile* rm = lfile(LF_RMOV); const TLocalisamfile* rm = lfile(LF_RMOV);
const TLocalisamfile* ri = lfile(LF_RMOVIVA); const TLocalisamfile* ri = lfile(LF_RMOVIVA);
position_rels(); position_rels();
destroy_rows(); destroy_rows();
for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV)) for(bool ok = is_first_match(LF_RMOV); ok; ok = next_match(LF_RMOV))
{ {
const int row = rm->get_int(RMV_NUMRIG) - 1; const int row = rm->get_int(RMV_NUMRIG) - 1;
cg(row) = rm->curr(); cg(row) = rm->curr();
} }
_oldcg = cg_items(); _oldcg = cg_items();
for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA)) for(ok = is_first_match(LF_RMOVIVA); ok; ok = next_match(LF_RMOVIVA))
{ {
const int row = ri->get_int(RMI_NUMRIG) - 1; const int row = ri->get_int(RMI_NUMRIG) - 1;
iva(row) = ri->curr(); iva(row) = ri->curr();
} }
_oldiva = iva_items(); _oldiva = iva_items();
return NOERR; return NOERR;
} }
int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate) int TMovimentoPN::read(TIsamop op, TReclock lockop, TDate& atdate)
{ {
int err = file()->read(op, lockop, atdate); int err = file()->read(op, lockop, atdate);
if (err == NOERR) err = read_mov_rows(); if (err == NOERR) err = read_mov_rows();
return err; return err;
} }
int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile* f) int TMovimentoPN::write_rec(bool re, const TRectype& rec, TLocalisamfile* f)
{ {
if (re) if (re)
{ {
const bool scrivi = f->rewrite(rec) != NOERR; const bool scrivi = f->rewrite(rec) != NOERR;
if (scrivi) f->write(rec); if (scrivi) f->write(rec);
} }
else else
{ {
f->write(rec); f->write(rec);
} }
return f->status(); return f->status();
} }
int TMovimentoPN::cancella(TLocalisamfile* f, int da, int a) int TMovimentoPN::cancella(TLocalisamfile* f, int da, int a)
{ {
const long numreg = lfile()->get_long("NUMREG"); const long numreg = lfile()->get_long("NUMREG");
for (int i = da; i <= a; i++) for (int i = da; i <= a; i++)
{ {
f->zero(); f->zero();
f->put("NUMREG", numreg); f->put("NUMREG", numreg);
f->put("NUMRIG", i); f->put("NUMRIG", i);
if (f->read(_isequal, _lock) == NOERR) if (f->read(_isequal, _lock) == NOERR)
f->remove(); f->remove();
} }
return f->status(); return f->status();
} }
int TMovimentoPN::registra(bool re, bool force) int TMovimentoPN::registra(bool re, bool force)
{ {
TLocalisamfile* m = lfile(); TLocalisamfile* m = lfile();
const int err = write_rec(re, m->curr(), m); const int err = write_rec(re, m->curr(), m);
if (err != NOERR) return err; if (err != NOERR) return err;
TLocalisamfile* rm = lfile(LF_RMOV); TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA); TLocalisamfile* ri = lfile(LF_RMOVIVA);
const long numreg = m->get_long("NUMREG"); const long numreg = m->get_long("NUMREG");
for (int i = 0 ; i < cg_items(); i++) for (int i = 0 ; i < cg_items(); i++)
{ {
if (!re) cg(i).put("NUMREG", numreg); if (!re) cg(i).put("NUMREG", numreg);
const int err = write_rec(re, cg(i), rm); const int err = write_rec(re, cg(i), rm);
if (!force && err != NOERR) return err; if (!force && err != NOERR) return err;
} }
if (i < _oldcg) if (i < _oldcg)
cancella(rm, i+1, _oldcg); cancella(rm, i+1, _oldcg);
_oldcg = cg_items(); _oldcg = cg_items();
for (i = 0 ; i < iva_items(); i++) for (i = 0 ; i < iva_items(); i++)
{ {
if (!re) iva(i).put("NUMREG", numreg); if (!re) iva(i).put("NUMREG", numreg);
const int err = write_rec(re, iva(i), ri); const int err = write_rec(re, iva(i), ri);
if (!force && err != NOERR) return err; if (!force && err != NOERR) return err;
} }
if (i < _oldiva) if (i < _oldiva)
cancella(ri, i+1, _oldiva); cancella(ri, i+1, _oldiva);
_oldiva = iva_items(); _oldiva = iva_items();
return err; return err;
} }
int TMovimentoPN::write(bool force, TDate&) int TMovimentoPN::write(bool force, TDate&)
{ {
const TLocalisamfile& r = *lfile(); const TLocalisamfile& r = *lfile();
const int annoiva = r.get_int("ANNOIVA"); const int annoiva = r.get_int("ANNOIVA");
const TString16 reg(r.get("REG")); const TString16 reg(r.get("REG"));
TRegistro registro(reg, annoiva); TRegistro registro(reg, annoiva);
if (reg.not_empty() && registro.tipo_attivita() == "M") if (registro.iva() != nessuna_iva)
{ {
for (int i = 0; i < iva_items(); i++) const bool mista = registro.tipo_attivita() == "M";
{ for (int i = 0; i < iva_items(); i++)
const int riga = iva(i).get_int("RIGAIMP"); {
int tipoatt = 0; int tipoatt = 1;
if (riga) if (mista)
{ {
const TRectype& r = cg(riga-1); const int riga = iva(i).get_int("RIGAIMP");
const char tipo = r.get_char("TIPOC"); if (riga)
if (tipo == ' ') {
{ const TRectype& r = cg(riga-1);
TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO")); const char tipo = r.get_char("TIPOC");
TRectype conto(LF_PCON); c.read(conto); if (tipo == ' ')
const TIndbil ib = (TIndbil)conto.get_int("INDBIL"); {
if (ib == ib_passivita || ib == ib_ricavi) TConto c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
{ TRectype conto(LF_PCON); c.read(conto);
int ricser = conto.get_int("RICSER"); const TIndbil ib = (TIndbil)conto.get_int("INDBIL");
tipoatt = (ricser <= 0) ? 2 : 1; 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; iva(i).put("TIPOATT", tipoatt);
int err = registra(FALSE, force); }
}
if (err == NOERR)
{ _oldcg = _oldiva = 0;
if (reg.not_empty()) int err = registra(FALSE, force);
{
const long protiva = r.get_long("PROTIVA"); if (err == NOERR)
const long uprotiva = r.get_long("UPROTIVA"); {
const TDate datareg = r.get_date("DATAREG"); if (reg.not_empty())
registro.update(max(protiva, uprotiva), datareg); {
} const long protiva = r.get_long("PROTIVA");
} const long uprotiva = r.get_long("UPROTIVA");
return err; const TDate datareg = r.get_date("DATAREG");
} registro.update(max(protiva, uprotiva), datareg);
}
}
int TMovimentoPN::rewrite(bool force, TDate&) return err;
{ }
return registra(TRUE, force);
}
int TMovimentoPN::rewrite(bool force, TDate&)
{
int TMovimentoPN::remove(TDate&) return registra(TRUE, force);
{ }
TLocalisamfile* m = lfile();
TLocalisamfile* rm = lfile(LF_RMOV);
TLocalisamfile* ri = lfile(LF_RMOVIVA); int TMovimentoPN::remove(TDate&)
{
cancella(rm, 1, _oldcg); TLocalisamfile* m = lfile();
cancella(ri, 1, _oldiva); TLocalisamfile* rm = lfile(LF_RMOV);
m->remove(); TLocalisamfile* ri = lfile(LF_RMOVIVA);
_oldcg = _oldiva = 0;
return m->status(); 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 'F': // Ritenute Fiscali
case 'S': // Ritenute Sociali case 'S': // Ritenute Sociali
case 'D': // IVA Detraibile case 'D': // IVA Detraibile
case 'N':last = 3; break; // IVA Non detraibile case 'N':
case 'T': // Totale documento last = 3; // IVA Non detraibile
case 'I':last = 6; break; // Imponibile break;
default :last = 0; break; // Solo contabile case 'T': // Totale documento
} case 'I':
last = 7; // Imponibile
break;
default :
last = 0; // Solo contabile
break;
}
TSheet_field& cg = cgs(); TSheet_field& cg = cgs();
for (int i = 0; i < last; i++) for (int i = 0; i < last; i++)
@ -343,14 +349,7 @@ void TPrimanota_application::cgs_pack()
{ {
const real imp = get_cgs_imp(i); const real imp = get_cgs_imp(i);
if (imp == 0.0) if (imp == 0.0)
{
del = TRUE; del = TRUE;
/*
const TConto c(r, 6, 0x0); // Remove if import=0 and Bill not used
del = !bill_used(c);
*/
}
} }
if (del) if (del)
rows.destroy(i, FALSE); 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' // Handler dello sheet di contabilita'
// Certified 90% // Certified 90%
bool TPrimanota_application::cg_handler(TMask_field& f, KEY k) 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) if (k == K_ENTER)
{ {
TSheet_field& cg = app().cgs(); TSheet_field& cg = app().cgs();
bool empty = TRUE; real saldo = app().calcola_saldo();
real saldo; if (saldo != ZERO)
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)
{ {
const char* ss = saldo.string("."); const char* ss = saldo.string(".");
return f.error_box("Il movimento e' sbilanciato di %s lire.", ss); return f.error_box("Il movimento e' sbilanciato di %s lire.", ss);
} }
else else
if (empty) if (app().get_cgs_imp(0) == ZERO)
return f.error_box("Il movimento non contiene nessuna riga contabile!"); return f.error_box("Il movimento non ha una prima riga contabile valida!");
} }
return TRUE; return TRUE;
} }
@ -393,17 +423,22 @@ bool TPrimanota_application::cg_notify(int r, KEY k)
TSheet_field& cg = app().cgs(); TSheet_field& cg = app().cgs();
TToken_string& row = cg.row(r); TToken_string& row = cg.row(r);
const char tipo = row.empty() ? ' ' : row.right(1)[0]; const char tipo = row.empty() ? ' ' : row.right(1)[0];
if (k == K_SPACE) switch(k)
{ {
TMask& m = cg.sheet_mask(); case K_SPACE:
m.enable(DLG_DELREC, tipo == ' '); cg.sheet_mask().enable(DLG_DELREC, tipo == ' ');
} else break;
if (k == K_DEL) case K_ENTER:
{ app().calcola_saldo();
if (tipo != ' ') break;
return error_box("La riga %d non puo' essere cancellata", r+1); case K_DEL:
} if (tipo != ' ')
return error_box("La riga %d non puo' essere cancellata", r+1);
break;
default:
break;
}
return TRUE; return TRUE;
} }
@ -497,7 +532,7 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
const real& percent = cod2IVA(f.mask().get(102)); const real& percent = cod2IVA(f.mask().get(102));
real imposta = abs(imponibile) * percent / 100.0; real imposta = abs(imponibile) * percent / 100.0;
imposta.ceil(); imposta.ceil();
if (imponibile.sign() < 0) imposta = -imposta; if (imponibile < ZERO) imposta = -imposta;
const real val(f.get()); const real val(f.get());
if (val != imposta) if (val != imposta)
@ -506,8 +541,8 @@ bool TPrimanota_application::imposta_handler(TMask_field& f, KEY key)
{ {
const TString16 wrong(val.string(".")); const TString16 wrong(val.string("."));
const TString16 right(imposta.string(".")); const TString16 right(imposta.string("."));
if (f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'", f.warning_box("Imposta di '%s' errata: dovrebbe essere '%s'",
(const char*)wrong, (const char*)right)); (const char*)wrong, (const char*)right);
} }
} }
} else } 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% // Certified 50%
bool TPrimanota_application::iva_notify(int r, KEY k) bool TPrimanota_application::iva_notify(int r, KEY k)
{ {
@ -589,7 +644,10 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
} }
else else
app().add_cgs_imp(oldposiva, imp-oldiva); app().add_cgs_imp(oldposiva, imp-oldiva);
oldiva = imp; oldiva = imp;
app().calcola_imp();
app().calcola_saldo();
} }
return TRUE; return TRUE;
} }
@ -601,13 +659,7 @@ bool TPrimanota_application::iva_handler(TMask_field& f, KEY k)
{ {
if (k != K_ENTER) return TRUE; if (k != K_ENTER) return TRUE;
real imp; const real imp = app().calcola_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 TMask& m = f.mask(); const TMask& m = f.mask();
real tot(m.get(F_TOTALE)); real tot(m.get(F_TOTALE));

View File

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

View File

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

View File

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

View File

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