Modifiche da Parma a causali mastrini list amovimenti e giornale

git-svn-id: svn://10.65.10.50/trunk@256 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1994-09-16 11:16:25 +00:00
parent adb2327962
commit 7472971f9d
13 changed files with 2301 additions and 2055 deletions

View File

@ -13,7 +13,7 @@
#include <rcausali.h> #include <rcausali.h>
#include "cglib.h" #include "cglib.h"
#include "cg0501.h" #include "cg2103.h"
#include "cg0500.h" #include "cg0500.h"
#define SS_TIPOCF 102 #define SS_TIPOCF 102
@ -171,6 +171,7 @@ typedef enum { acquisto, vendita, incasso_pagamento,
// 1 vendite senza corrisp // 1 vendite senza corrisp
// 2 vendite con corrisp // 2 vendite con corrisp
// 3 acquisti // 3 acquisti
// 4 sia acquisti che vendite
friend bool filtra_reg(const TRelation * r); friend bool filtra_reg(const TRelation * r);
@ -181,6 +182,7 @@ typedef enum { acquisto, vendita, incasso_pagamento,
static bool conto_hndl (TMask_field& f, KEY k); static bool conto_hndl (TMask_field& f, KEY k);
static bool sottoconto_hndl (TMask_field& f, KEY k); static bool sottoconto_hndl (TMask_field& f, KEY k);
static bool codcausim_hndl (TMask_field& f, KEY k); static bool codcausim_hndl (TMask_field& f, KEY k);
static bool m770_hndl (TMask_field& f, KEY k);
static bool leggi_riga (int r, KEY k); static bool leggi_riga (int r, KEY k);
TRelation * _rel; TRelation * _rel;
@ -218,6 +220,7 @@ protected:
// int cancella(long items); // int cancella(long items);
public: public:
bool _forcedCopy;
TRighe_rcaus _righe_rcaus; // Array delle descrizioni delle righe TRighe_rcaus _righe_rcaus; // Array delle descrizioni delle righe
tipo_descr _tipo_des; // Il tipo di causale corrente tipo_descr _tipo_des; // Il tipo di causale corrente
int _riga; // Riga corrente dello sheet (set_notify) int _riga; // Riga corrente dello sheet (set_notify)
@ -295,76 +298,125 @@ bool filtra_reg(const TRelation * r)
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
// Handler della maschera principale // Handler della maschera principale
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
/************
se m770==6 le descrizioni devono essere
1. conto
2. cassa/banca
3. erario
************/
bool CG0500_application::m770_hndl (TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
TMask& m = f.mask();
const int m770 = m.get_int(F_M_770);
if (m770 == 6) app()->fill_sheet(m);
}
return TRUE;
}
bool CG0500_application::tipodoc_hndl (TMask_field& f, KEY k) bool CG0500_application::tipodoc_hndl (TMask_field& f, KEY k)
{ {
// if (k == K_TAB && f.focusdirty())
// Testo K_TAB perche' il controllo deve scattare anche all'inizio // Testo K_TAB perche' il controllo deve scattare anche all'inizio
// per vedere, per es., se il registro scritto nella causale // per vedere, per es., se il registro scritto nella causale esiste ancora
// esiste ancora
if (k == K_TAB) if (k == K_TAB)
{ {
const TString16 val(f.get()); const TString16 val(f.get());
TEdit_field& field_reg = (TEdit_field&)f.mask().field(F_COD_REG); TEdit_field& field_reg = (TEdit_field&)f.mask().field(F_COD_REG);
if (val.not_empty() && val != "IN" && val != "PG" && val != "AN") if (val.not_empty() && val != "IN" && val != "PG" && val != "AN")
{ {
if (salda_conto()) // if (f.to_check(k)) {
{ f.mask().hide(F_TIPO_MOV_2);
f.mask().hide(F_TIPO_MOV_2); if (salda_conto()) f.mask().show(F_TIPO_MOV_1);
f.mask().show(F_TIPO_MOV_1); // }
}
f.mask().enable(F_COD_REG); f.mask().enable(F_COD_REG);
field_reg.check_type(CHECK_REQUIRED); field_reg.check_type(CHECK_REQUIRED);
// Cambio il filtro sui registri: con tipo=1 TipoIVA i = nessuna_iva;
if (val == "FV" || val == "FF" || val == "FS") { TTable tabtpd("%TPD");
app()->_filtro = 1; tabtpd.put("CODTAB", val);
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else if (tabtpd.read() == NOERR)
// con tipo=1 e corrisp="X" {
if (val == "CN" || val == "RN" || val == "CR" || i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
val == "SC" || val == "RF" || val == "SN") { bool corrisp = tabtpd.get_bool("B0");
app()->_filtro = 2;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg); if (i == 1) // vendite
} else {
// Possono essere 1 o 2 if (corrisp) { // vendite con corrispettivi
if (val == "NC" || val == "ST" || val == "ND" || app()->_filtro = 2;
val == "AF") {
app()->_filtro = 4;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg); field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else }
// con tipo=2 else { // vendite senza corrispettivi
if (val == "FA" || val == "BD") { app()->_filtro = 1;
app()->_filtro = 3; field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
}
} else
if ( i == 2 ) // acquisti
{
app()->_filtro = 3;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
if ( i == 9 ) // sia acquisti che vendite
{
app()->_filtro = 4;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg); field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} }
// Ma davvero esiste il registro ?
TString16 codreg=f.mask().get(F_COD_REG);
if (codreg.not_empty())
{
TRegistro registro(codreg, anno_iva());
if (!registro.read(codreg, anno_iva()))
return f.warning_box("Non esiste il registro %s per l'anno %d",
(const char *)codreg, anno_iva());
} }
/**************************************************************
// Cambio il filtro sui registri: con tipo=1
if (val == "FV" || val == "FF" || val == "FS") {
app()->_filtro = 1;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
// con tipo=1 e corrisp="X"
if (val == "CN" || val == "RN" || val == "CR" ||
val == "SC" || val == "RF" || val == "SN") {
app()->_filtro = 2;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
// Possono essere 1 o 2
if (val == "NC" || val == "ST" || val == "ND" ||
val == "AF") {
app()->_filtro = 4;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
// con tipo=2
if (val == "FA" || val == "BD") {
app()->_filtro = 3;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
}
**************************************************************/
} }
else // TIPODOC vuoto || IN || PG || AN else // TIPODOC vuoto || IN || PG || AN
{ {
// Devo poter rivedere tutti i registri se ho cancellato il campo TIPODOC // Devo poter rivedere tutti i registri se ho cancellato il campo TIPODOC
field_reg.check_type(CHECK_NORMAL); field_reg.check_type(CHECK_NORMAL);
f.mask().set(F_COD_REG,""); f.mask().set(F_COD_REG,"");
f.mask().disable(F_COD_REG); f.mask().disable(F_COD_REG);
if (salda_conto()) {
f.mask().hide(F_TIPO_MOV_1); // if (f.to_check(k)) {
f.mask().show(F_TIPO_MOV_2); f.mask().hide(F_TIPO_MOV_1);
} if (salda_conto()) f.mask().show(F_TIPO_MOV_2);
// }
} }
if (f.focusdirty()) {
// Ma davvero esiste il registro ?
TString16 codreg=f.mask().get(F_COD_REG);
if (codreg.not_empty())
{
TRegistro registro(codreg, anno_iva());
if (!registro.read(codreg, anno_iva()))
return f.warning_box("Non esiste il registro %s per l'anno %d",
(const char *)codreg, anno_iva());
}
app()->MostraCampi(f);
if (f.focusdirty())
app()->fill_sheet(f.mask()); app()->fill_sheet(f.mask());
app()->MostraCampi(f); // show-hide di diversi campi pilotati da codreg
}
} }
return TRUE; return TRUE;
} }
@ -373,7 +425,7 @@ bool CG0500_application::tipomov_hndl (TMask_field& f, KEY k)
{ {
if (k == K_SPACE) { if (k == K_SPACE) {
app()->MostraCampi(f); app()->MostraCampi(f);
app()->fill_sheet(f.mask()); if (f.focusdirty()) app()->fill_sheet(f.mask());
} }
return TRUE; return TRUE;
} }
@ -402,95 +454,126 @@ bool CG0500_application::codcausim_hndl (TMask_field& f, KEY k)
bool CG0500_application::MostraCampi(TMask_field& f) bool CG0500_application::MostraCampi(TMask_field& f)
{ {
const int tpm = f.mask().get_int(F_TIPO_MOV); TMask& m = f.mask();
TString16 codreg = f.mask().get(F_COD_REG); const int tpm = m.get_int(F_TIPO_MOV);
TString16 codreg = m.get(F_COD_REG);
if (codreg.empty()) if (codreg.empty())
{ {
m.hide(F_AUTO_FAT);
m.hide(F_ALLEGAT);
m.hide(F_FAT_RITARDO);
m.hide(F_OP_INTRACOM);
m.hide(F_VALINTRA);
if (salda_conto()) m.hide(F_COD_CAUS_IM);
switch (tpm) { switch (tpm) {
case 0: case 0:
f.mask().show(F_OP_FINE_ANNO); m.show(F_OP_FINE_ANNO);
f.mask().hide(F_MOV_VALU); m.show(F_COLL_CESP);
f.mask().hide(F_MOV_SEZ); m.show(F_M_770);
m.hide(F_MOV_VALU);
m.hide(F_MOV_SEZ);
break; break;
case 3: case 3:
case 5: case 5:
case 6: case 6:
f.mask().hide(F_OP_FINE_ANNO); if (gestione_valuta()) m.show(F_MOV_VALU);
f.mask().show(F_MOV_VALU); if (salda_conto()) m.show(F_MOV_SEZ);
f.mask().show(F_MOV_SEZ); m.show(F_M_770);
f.mask().hide(F_COLL_CESP); m.hide(F_OP_FINE_ANNO);
m.hide(F_COLL_CESP);
break; break;
default: default:
f.mask().show(F_COLL_CESP);
break; break;
} }
} }
else { // codreg non vuoto else { // codreg non vuoto
f.mask().hide(F_OP_FINE_ANNO); m.hide(F_OP_FINE_ANNO);
f.mask().hide(F_MOV_SEZ); m.hide(F_MOV_SEZ);
if (gestione_valuta()) if (gestione_valuta()) m.show(F_MOV_VALU);
f.mask().show(F_MOV_VALU); if (!salda_conto()) m.show(F_COD_CAUS_IM);
m.show(F_AUTO_FAT);
m.show(F_ALLEGAT);
m.show(F_FAT_RITARDO);
m.show(F_COLL_CESP);
m.show(F_OP_INTRACOM);
m.show(F_VALINTRA);
} }
return TRUE; return TRUE;
} }
bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k) bool CG0500_application::cod_reg_hndl (TMask_field& f, KEY k)
{ {
// if (k == K_TAB && f.focusdirty()) if (k == K_TAB) {
if (k == K_TAB)
{
app()->MostraCampi(f); app()->MostraCampi(f);
if (f.focusdirty()) app()->fill_sheet(f.mask()); if (f.focusdirty()) app()->fill_sheet(f.mask());
return TRUE; return TRUE;
} }
// controllo di consistenza tra codice (tipo) registro e tipo documento // controllo di consistenza tra codice (tipo) registro e tipo documento
// if (k == K_ENTER && f.dirty())
if (k == K_ENTER) if (k == K_ENTER)
{ {
bool ok = TRUE; // bool ok = TRUE;
const TString16 tpd = f.mask().get(F_TIPO_DOC);
const TString16 tpd = f.mask().get(F_TIPO_DOC);
const int tipo = f.mask().get_int(F_TIPO_REG);
const bool corrisp = f.mask().get_bool(F_CORRISP);
const TString16 codreg = f.mask().get(F_COD_REG); const TString16 codreg = f.mask().get(F_COD_REG);
if (tpd.not_empty() && tpd != "AN" && tpd != "PG" && tpd != "IN") if (tpd.not_empty())
{ {
if (codreg.empty()) TipoIVA i = nessuna_iva;
return f.warning_box("Manca il codice del registro"); TRegistro grog(codreg, anno_iva());
} TTable tabtpd("%TPD");
else tabtpd.put("CODTAB", tpd);
{ if (tabtpd.read() == NOERR)
// con tipo=1
if (tpd == "FV" || tpd == "FS" || tpd == "FS")
{ {
if (tipo != 1) ok = FALSE; i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
} else const TipoIVA ri = grog.iva();
if (i == iva_generica) i = ri;
// con tipo=1 e corrisp="X" if (i != ri) {
if (tpd == "CN" || tpd == "RN" || tpd == "CR" || return f.warning_box("Tipo documento incompatibile con tipo registro");
tpd == "SC" || tpd == "RF" || tpd == "SN") i = iva_errata;
{ }
if (tipo != 1 || !corrisp) ok = FALSE; }
} else
// Possono essere 1 o 2
if (tpd == "NC" || tpd == "ST" || tpd == "ND" ||
tpd == "AF")
{
if (tipo != 1 && tipo != 2) ok = FALSE;
} else
// con tipo=2
if (tpd == "FA" || tpd == "BD")
{
if (tipo != 2) ok = FALSE;
}
} }
if (!ok) }
return f.warning_box("Il registro (tipo %d) non e' compatibile con il tipo di documento (%s)", /*
tipo, (const char*)tpd); if (tpd.not_empty() && tpd != "AN" && tpd != "PG" && tpd != "IN")
} {
if (codreg.empty())
return f.warning_box("Manca il codice del registro");
}
else
{
// con tipo=1
if (tpd == "FV" || tpd == "FS" || tpd == "FS")
{
if (tipo != 1) ok = FALSE;
} else
// con tipo=1 e corrisp="X"
if (tpd == "CN" || tpd == "RN" || tpd == "CR" ||
tpd == "SC" || tpd == "RF" || tpd == "SN")
{
if (tipo != 1 || !corrisp) ok = FALSE;
} else
// Possono essere 1 o 2
if (tpd == "NC" || tpd == "ST" || tpd == "ND" ||
tpd == "AF")
{
if (tipo != 1 && tipo != 2) ok = FALSE;
} else
// con tipo=2
if (tpd == "FA" || tpd == "BD")
{
if (tipo != 2) ok = FALSE;
}
}
if (!ok)
return f.warning_box("Il registro (tipo %d) non e' compatibile con il tipo di documento (%s)",
tipo, (const char*)tpd);
}
*/
return TRUE; return TRUE;
} }
@ -677,23 +760,40 @@ void TRighe_rcaus::CausaleIncassoPagamento()
void CG0500_application::compilaarray(const TString& tpd, int tpm, int tpr, int m770) void CG0500_application::compilaarray(const TString& tpd, int tpm, int tpr, int m770)
{ {
_forcedCopy = FALSE;
if (tpd.empty() || tpd == "IN" || tpd == "AN" || tpd == "PG") if (tpd.empty() || tpd == "IN" || tpd == "AN" || tpd == "PG")
{ {
if ( tpm == 3 || tpm == 5 || tpm == 6 ) if (salda_conto())
_righe_rcaus.CausaleIncassoPagamento();
else
{ {
if ( !salda_conto() || tpm == 0 ) switch (tpm) {
if (m770 == 6) case 3:
{ case 5:
case 6:
_righe_rcaus.CausaleIncassoPagamento();
break;
case 0:
if (m770 == 6)
_righe_rcaus.CausaleRitenutaOccas(); _righe_rcaus.CausaleRitenutaOccas();
return; else {
_forcedCopy = TRUE;
_righe_rcaus.ClearDescr();
_righe_rcaus.CaricaRigheLibere();
} }
break;
default:
_forcedCopy = TRUE;
_righe_rcaus.ClearDescr();
_righe_rcaus.CaricaRigheLibere();
break;
}
}
else { // NO saldaconto
_forcedCopy = TRUE;
_righe_rcaus.ClearDescr(); _righe_rcaus.ClearDescr();
_righe_rcaus.CaricaRigheLibere(); _righe_rcaus.CaricaRigheLibere();
} }
} }
else else // C'e' il tipodoc.
{ {
if (tpr == 1) if (tpr == 1)
_righe_rcaus.CausaleVendite(); _righe_rcaus.CausaleVendite();
@ -702,6 +802,7 @@ void CG0500_application::compilaarray(const TString& tpd, int tpm, int tpr, int
_righe_rcaus.CausaleAcquisti(); _righe_rcaus.CausaleAcquisti();
else else
{ {
_forcedCopy = TRUE;
_righe_rcaus.ClearDescr(); _righe_rcaus.ClearDescr();
_righe_rcaus.CaricaRigheLibere(); _righe_rcaus.CaricaRigheLibere();
} }
@ -781,20 +882,28 @@ void CG0500_application::array2sheet()
char _dfi [30]; char _dfi [30];
TFixed_string dfi(_dfi,30); TFixed_string dfi(_dfi,30);
_items = _righe_rcaus.items(); _items = _righe_rcaus.items();
// ss().reset(); bool update = FALSE;
for (int i = 0; i < _items; i++) for (int i = 0; i < _items; i++)
{ {
TToken_string & riga = ss().row(i); TToken_string& riga = ss().row(i);
TToken_string * r = (TToken_string*)_righe_rcaus.objptr(i); TToken_string* r = (TToken_string*)_righe_rcaus.objptr(i);
if (r != NULL)
{ dfi = r->get(0);
dfi = r->get(0); // Ricopio la descrizione solo se non vuota
riga.add(dfi,0); if (_forcedCopy) {
} update = TRUE;
else riga.add(dfi,0);
riga.cut(0); } else
if (!r->empty_items())
{
if (dfi.not_empty()) {
update = TRUE;
riga.add(dfi,0);
}
}
} }
ss().force_update(); if (update) ss().force_update();
} }
bool CG0500_application::descr2array(TMask& m, bool fromHandler) bool CG0500_application::descr2array(TMask& m, bool fromHandler)
@ -803,15 +912,19 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler)
TString16 tpd, codreg; TString16 tpd, codreg;
int tpm, m770, tpr; int tpm, m770, tpr;
if (m.mode() == MODE_MOD && !fromHandler) // if (m.mode() == MODE_MOD && !fromHandler)
{ if (fromHandler) {
codreg = m.field(F_COD_REG).get();
tpd = m.field(F_TIPO_DOC).get();
tpm = m.get_int(F_TIPO_MOV);
m770 = m.get_int(F_M_770);
} else if (m.mode() == MODE_MOD) {
codreg = caus.get("REG"); codreg = caus.get("REG");
tpd = caus.get("TIPODOC"); tpd = caus.get("TIPODOC");
tpm = caus.get_int("TIPOMOV"); tpm = caus.get_int("TIPOMOV");
m770 = caus.get_int("M770"); m770 = caus.get_int("M770");
} }
else else { // sono in inserimento e prima di entrare negli handler
{
codreg = m.field(F_COD_REG).get(); codreg = m.field(F_COD_REG).get();
tpd = m.field(F_TIPO_DOC).get(); tpd = m.field(F_TIPO_DOC).get();
tpm = m.get_int(F_TIPO_MOV); tpm = m.get_int(F_TIPO_MOV);
@ -820,8 +933,7 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler)
if (fromHandler) if (fromHandler)
tpr = m.get_int(F_TIPO_REG); tpr = m.get_int(F_TIPO_REG);
else else {
{
TString16 chiave; chiave << anno_iva() << codreg; TString16 chiave; chiave << anno_iva() << codreg;
TTable reg("REG"); TTable reg("REG");
reg.put("CODTAB", chiave); reg.put("CODTAB", chiave);
@ -894,7 +1006,6 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
desc = riga.get(); desc = riga.get();
coddesc = riga.get(); coddesc = riga.get();
// NB spostato TIPOCF da terzultimo a secondo
if (g > 0 || c > 0 || s > 0L) if (g > 0 || c > 0 || s > 0L)
{ {
rcaus->zero(); rcaus->zero();
@ -923,7 +1034,6 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
if (rewrite) if (rewrite)
{ {
togli_dal_file(cau); // Elimina dal file le righe rimaste nel bitarray togli_dal_file(cau); // Elimina dal file le righe rimaste nel bitarray
// return _rel->rewrite();
return caus->rewrite(); return caus->rewrite();
} }
else else
@ -931,24 +1041,6 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
} }
/*
int CG0500_application::cancella(long items)
{
TLocalisamfile * rcaus = _rel->lfile(LF_RCAUSALI);
const TString codcaus = _rel->lfile()->get(RCA_CODCAUS);
for (int i = 1; i <= items; i++)
{
rcaus->zero();
rcaus->put(RCA_CODCAUS, codcaus);
rcaus->put(RCA_NRIGA, i);
if (rcaus->read(_isequal, _lock) == NOERR)
rcaus->remove();
}
return rcaus->status();
}
*/
bool CG0500_application::remove() bool CG0500_application::remove()
{ {
const bool ok = TRelation_application::remove(); const bool ok = TRelation_application::remove();
@ -988,41 +1080,10 @@ void CG0500_application::init_modify_mode(TMask& m)
void CG0500_application::init_mask(TMask& m) void CG0500_application::init_mask(TMask& m)
{ {
const TString tpd(m.get(F_TIPO_DOC));
const TString tpm(m.get(F_TIPO_MOV));
// F_TIPO_MOV e', nella maschera, un campo nascosto.
// Sono visibili nella maschera F_TIPO_MOV_1 oppure F_TIPO_MOV2,
// a seconda che F_TIPO_DOC sia compilato oppure no.
// All'inizio viene fatto l'output del campo TIPOMOV del file nel campo
// nascosto F_TIPO_MOV.
// Qui il contenuto di F_TIPO_MOV viene mandato a F_TIPO_MOV_1
// oppure F_TIPO_MOV_2.
if (tpd.empty() || tpd == "IN" || tpd == "AN" || tpd == "PG")
{
m.hide(F_TIPO_MOV_1);
m.set(F_TIPO_MOV_2, tpm);
m.show(F_TIPO_MOV_2);
}
else
{
m.hide(F_TIPO_MOV_2);
m.set(F_TIPO_MOV_1, tpm);
m.show(F_TIPO_MOV_1);
}
// 27/06/94 Setto il campo nascosto F_ANNOES all'anno di liq. Iva // 27/06/94 Setto il campo nascosto F_ANNOES all'anno di liq. Iva
// preso dai par.ditta // preso dai par.ditta
const int anno = anno_iva(); const int anno = anno_iva();
m.set(F_ANNOES, anno); m.set(F_ANNOES, anno);
// Setto il tipo reg e il flag corrisp nei campi nascosti della maschera
// perche non mi fa l'output su di essi quando carica i dati dal file
/*
TRegistro reg(codreg, anno);
const int tipo = reg.tipo();
m.set(F_TIPO_REG, tipo);
m.set(F_CORRISP, reg.corrisp());
*/
} }
@ -1050,10 +1111,13 @@ bool CG0500_application::user_create()
_msk->hide (F_MOV_VALU); _msk->hide (F_MOV_VALU);
_msk->set_handler(F_TIPO_DOC, tipodoc_hndl); _msk->set_handler(F_TIPO_DOC, tipodoc_hndl);
_msk->set_handler(F_TIPO_MOV_1, tipomov_hndl); if (salda_conto()) {
_msk->set_handler(F_TIPO_MOV_2, tipomov_hndl); _msk->set_handler(F_TIPO_MOV_1, tipomov_hndl);
_msk->set_handler(F_TIPO_MOV_2, tipomov_hndl);
}
_msk->set_handler(F_COD_REG, cod_reg_hndl); _msk->set_handler(F_COD_REG, cod_reg_hndl);
_msk->set_handler(F_COD_CAUS_IM, codcausim_hndl); _msk->set_handler(F_COD_CAUS_IM, codcausim_hndl);
_msk->set_handler(F_M_770, m770_hndl);
TSheet_field& cs = ss(); TSheet_field& cs = ss();
cs.set_notify(leggi_riga); cs.set_notify(leggi_riga);
@ -1064,6 +1128,8 @@ bool CG0500_application::user_create()
cs.sheet_mask().set_handler(305, sottoconto_hndl); cs.sheet_mask().set_handler(305, sottoconto_hndl);
cs.sheet_mask().set_handler(104, conto_hndl); cs.sheet_mask().set_handler(104, conto_hndl);
_forcedCopy = FALSE;
return TRUE; return TRUE;
} }

View File

@ -1,291 +1,291 @@
#include "cg0500.h" #include "cg0500.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 20 0 2
#include <toolbar.h> #include <toolbar.h>
ENDPAGE ENDPAGE
PAGE "" -1 -1 77 20 PAGE "" -1 -1 77 20
GROUPBOX DLG_NULL -1 3 GROUPBOX DLG_NULL -1 3
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
END END
STRING F_COD_CAUS 3 STRING F_COD_CAUS 3
BEGIN BEGIN
PROMPT 3 1 "Codice " PROMPT 3 1 "Codice "
FIELD LF_CAUSALI->CODCAUS FIELD LF_CAUSALI->CODCAUS
KEY 1 KEY 1
FLAGS "U" FLAGS "U"
USE LF_CAUSALI USE LF_CAUSALI
INPUT CODCAUS F_COD_CAUS INPUT CODCAUS F_COD_CAUS
DISPLAY "Cod. causale" CODCAUS DISPLAY "Cod. causale" CODCAUS
DISPLAY "Descrizione @50" DESCR DISPLAY "Descrizione @50" DESCR
DISPLAY "Tipo documento" TIPODOC DISPLAY "Tipo documento" TIPODOC
DISPLAY "Codice registro" REG DISPLAY "Codice registro" REG
DISPLAY "Tipo movimento" TIPOMOV DISPLAY "Tipo movimento" TIPOMOV
OUTPUT F_COD_CAUS CODCAUS OUTPUT F_COD_CAUS CODCAUS
OUTPUT F_DESCR DESCR OUTPUT F_DESCR DESCR
HELP "Codice causale" HELP "Codice causale"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_DESCR 40 STRING F_DESCR 40
BEGIN BEGIN
PROMPT 17 1 "Descrizione " PROMPT 17 1 "Descrizione "
FIELD LF_CAUSALI->DESCR FIELD LF_CAUSALI->DESCR
COPY USE F_COD_CAUS COPY USE F_COD_CAUS
INPUT CODCAUS F_COD_CAUS INPUT CODCAUS F_COD_CAUS
INPUT DESCR F_DESCR INPUT DESCR F_DESCR
DISPLAY "Cod. causale" CODCAUS DISPLAY "Cod. causale" CODCAUS
DISPLAY "Descrizione @50" DESCR DISPLAY "Descrizione @50" DESCR
DISPLAY "Tipo documento" TIPODOC DISPLAY "Tipo documento" TIPODOC
DISPLAY "Codice registro" REG DISPLAY "Codice registro" REG
DISPLAY "Tipo movimento" TIPOMOV DISPLAY "Tipo movimento" TIPOMOV
OUTPUT F_COD_CAUS CODCAUS OUTPUT F_COD_CAUS CODCAUS
OUTPUT F_DESCR DESCR OUTPUT F_DESCR DESCR
HELP "Descrizione della causale" HELP "Descrizione della causale"
END END
STRING F_TIPO_DOC 2 STRING F_TIPO_DOC 2
BEGIN BEGIN
PROMPT 2 4 "Tipo doc. " PROMPT 2 4 "Tipo doc. "
FIELD LF_CAUSALI->TIPODOC FIELD LF_CAUSALI->TIPODOC
USE %TPD USE %TPD
INPUT CODTAB F_TIPO_DOC INPUT CODTAB F_TIPO_DOC
DISPLAY "Tipo " CODTAB DISPLAY "Tipo " CODTAB
DISPLAY "Descrizione @50 " S0 DISPLAY "Descrizione @50 " S0
OUTPUT F_TIPO_DOC CODTAB OUTPUT F_TIPO_DOC CODTAB
HELP "Tipo documento" HELP "Tipo documento"
CHECKTYPE NORMAL CHECKTYPE NORMAL
// MESSAGE SHOW, 2@ // MESSAGE SHOW, 2@
// MESSAGE EMPTY HIDE, 2@ // MESSAGE EMPTY HIDE, 2@
FLAGS "U" FLAGS "U"
END END
STRING F_COD_REG 3 STRING F_COD_REG 3
BEGIN BEGIN
PROMPT 23 4 "Cod. reg. " PROMPT 23 4 "Cod. reg. "
FIELD LF_CAUSALI->REG FIELD LF_CAUSALI->REG
USE REG USE REG
INPUT CODTAB[1,4] F_ANNOES INPUT CODTAB[1,4] F_ANNOES
INPUT CODTAB[5,7] F_COD_REG INPUT CODTAB[5,7] F_COD_REG
DISPLAY "Anno" CODTAB[1,4] DISPLAY "Anno" CODTAB[1,4]
DISPLAY "Codice registro " CODTAB[5,7] DISPLAY "Codice registro " CODTAB[5,7]
DISPLAY "Tipo" I0 DISPLAY "Tipo" I0
DISPLAY "Registro corrispettivi" B0 DISPLAY "Registro corrispettivi" B0
DISPLAY "Descrizione @50" S0 DISPLAY "Descrizione @50" S0
OUTPUT F_ANNOES CODTAB[1,4] OUTPUT F_ANNOES CODTAB[1,4]
OUTPUT F_COD_REG CODTAB[5,7] OUTPUT F_COD_REG CODTAB[5,7]
OUTPUT F_TIPO_REG I0 OUTPUT F_TIPO_REG I0
OUTPUT F_CORRISP B0 OUTPUT F_CORRISP B0
HELP "Codice registro" HELP "Codice registro"
CHECKTYPE NORMAL CHECKTYPE NORMAL
FLAGS "D" FLAGS "D"
END END
// Questo rimane sempre nascosto // Questo rimane sempre nascosto
STRING F_TIPO_MOV 2 STRING F_TIPO_MOV 2
BEGIN BEGIN
PROMPT 68 4 "" PROMPT 68 4 ""
FIELD LF_CAUSALI->TIPOMOV FIELD LF_CAUSALI->TIPOMOV
FLAGS "H" FLAGS "H"
END END
// Viene mostrato questo se TPD non vuoto e diverso da IN AN PG // Viene mostrato questo se TPD non vuoto e diverso da IN AN PG
LISTBOX F_TIPO_MOV_1 1 20 LISTBOX F_TIPO_MOV_1 1 20
BEGIN BEGIN
PROMPT 44 4 "Tipo mov. " PROMPT 44 4 "Tipo mov. "
FIELD LF_CAUSALI->TIPOMOV FIELD LF_CAUSALI->TIPOMOV
HELP "Tipo movimento" HELP "Tipo movimento"
ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV
ITEM "1|Fattura" MESSAGE COPY,F_TIPO_MOV ITEM "1|Fattura" MESSAGE COPY,F_TIPO_MOV
ITEM "2|Nota credito" MESSAGE COPY,F_TIPO_MOV ITEM "2|Nota credito" MESSAGE COPY,F_TIPO_MOV
// GROUP 2 // GROUP 2
END END
// Viene mostrato questo se TPD vuoto o uguale a IN AN PG // Viene mostrato questo se TPD vuoto o uguale a IN AN PG
LISTBOX F_TIPO_MOV_2 1 20 LISTBOX F_TIPO_MOV_2 1 20
BEGIN BEGIN
PROMPT 44 4 "Tipo mov. " PROMPT 44 4 "Tipo mov. "
FIELD LF_CAUSALI->TIPOMOV FIELD LF_CAUSALI->TIPOMOV
HELP "Inserire il tipo movimento" HELP "Inserire il tipo movimento"
ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV ITEM " |Nessuno" MESSAGE COPY,F_TIPO_MOV
ITEM "3|Incasso/pagamento " MESSAGE COPY,F_TIPO_MOV ITEM "3|Incasso/pagamento " MESSAGE COPY,F_TIPO_MOV
ITEM "5|Insoluto" MESSAGE COPY,F_TIPO_MOV ITEM "5|Insoluto" MESSAGE COPY,F_TIPO_MOV
ITEM "6|Pagamento insoluto" MESSAGE COPY,F_TIPO_MOV ITEM "6|Pagamento insoluto" MESSAGE COPY,F_TIPO_MOV
FLAGS "H" FLAGS "H"
END END
STRING F_ANNOES 4 STRING F_ANNOES 4
BEGIN BEGIN
PROMPT 2 6 "" PROMPT 2 6 ""
FLAGS "H" FLAGS "H"
END END
STRING F_TIPO_REG 4 STRING F_TIPO_REG 4
BEGIN BEGIN
PROMPT 23 5 "" PROMPT 23 5 ""
FLAGS "H" FLAGS "H"
END END
BOOLEAN F_CORRISP BOOLEAN F_CORRISP
BEGIN BEGIN
PROMPT 33 5 "" PROMPT 33 5 ""
FLAGS "H" FLAGS "H"
END END
SPREADSHEET F_SHEET_GCS SPREADSHEET F_SHEET_GCS
BEGIN BEGIN
PROMPT 0 7 "" PROMPT 0 7 ""
ITEM "Tipo conto@21" ITEM "Tipo conto@21"
ITEM "C/F" ITEM "C/F"
ITEM "Gr." ITEM "Gr."
ITEM "Co." ITEM "Co."
ITEM "Sottoc." ITEM "Sottoc."
ITEM "D/A" ITEM "D/A"
ITEM "Descrizione@50" ITEM "Descrizione@50"
ITEM "Descr. agg." ITEM "Descr. agg."
ITEM "Iva" ITEM "Iva"
ITEM "Cod.Iva" ITEM "Cod.Iva"
END END
ENDPAGE ENDPAGE
PAGE "" -1 -1 77 20 PAGE "" -1 -1 77 20
GROUPBOX DLG_NULL -1 3 GROUPBOX DLG_NULL -1 3
BEGIN BEGIN
PROMPT 1 0 "@BCampi obbligatori in caricamento documenti" PROMPT 1 0 "@BCampi obbligatori in caricamento documenti"
END END
BOOLEAN F_DATA_DOC BOOLEAN F_DATA_DOC
BEGIN BEGIN
PROMPT 2 1 "Data documento" PROMPT 2 1 "Data documento"
FIELD LF_CAUSALI->DATADOC FIELD LF_CAUSALI->DATADOC
HELP "" HELP ""
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
BOOLEAN F_NUM_DOC BOOLEAN F_NUM_DOC
BEGIN BEGIN
PROMPT 34 1 "Numero documento" PROMPT 34 1 "Numero documento"
FIELD LF_CAUSALI->NUMDOC FIELD LF_CAUSALI->NUMDOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
BOOLEAN F_AUTO_FAT BOOLEAN F_AUTO_FAT
BEGIN BEGIN
PROMPT 2 4 "Autofattura art.34" PROMPT 2 4 "Autofattura art.34"
FIELD LF_CAUSALI->AUTOFATT FIELD LF_CAUSALI->AUTOFATT
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 2 GROUP 2
END END
BOOLEAN F_ALLEGAT BOOLEAN F_ALLEGAT
BEGIN BEGIN
PROMPT 34 4 "Doc. non va in allegati fine anno" PROMPT 34 4 "Doc. non va in allegati fine anno"
FIELD LF_CAUSALI->ALLEG FIELD LF_CAUSALI->ALLEG
GROUP 2 GROUP 2
END END
BOOLEAN F_FAT_RITARDO BOOLEAN F_FAT_RITARDO
BEGIN BEGIN
PROMPT 2 6 "Fattura in ritardo" PROMPT 2 6 "Fattura in ritardo"
FIELD LF_CAUSALI->RITFATT FIELD LF_CAUSALI->RITFATT
GROUP 2 GROUP 2
END END
STRING F_COD_CAUS_IM 3 STRING F_COD_CAUS_IM 3
BEGIN BEGIN
PROMPT 34 6 "Codice causale per l'incasso immediato " PROMPT 34 6 "Codice causale per l'incasso immediato "
FIELD LF_CAUSALI->CODCAUSIM FIELD LF_CAUSALI->CODCAUSIM
COPY USE F_COD_CAUS COPY USE F_COD_CAUS
INPUT CODCAUS F_COD_CAUS_IM INPUT CODCAUS F_COD_CAUS_IM
COPY DISPLAY F_COD_CAUS COPY DISPLAY F_COD_CAUS
OUTPUT F_COD_CAUS_IM CODCAUS OUTPUT F_COD_CAUS_IM CODCAUS
CHECKTYPE NORMAL CHECKTYPE NORMAL
// MESSAGE CLEAR, F_M_770 // MESSAGE CLEAR, F_M_770
GROUP 2 GROUP 2
END END
BOOLEAN F_OP_INTRACOM BOOLEAN F_OP_INTRACOM
BEGIN BEGIN
PROMPT 2 8 "Operazione intracomunitaria" PROMPT 2 8 "Operazione intracomunitaria"
FIELD LF_CAUSALI->INTRACOM FIELD LF_CAUSALI->INTRACOM
// MESSAGE TRUE "X", F_MOV_VALU | DISABLE, F_MOV_VALU // MESSAGE TRUE "X", F_MOV_VALU | DISABLE, F_MOV_VALU
// MESSAGE FALSE "", F_MOV_VALU | ENABLE, F_MOV_VALU // MESSAGE FALSE "", F_MOV_VALU | ENABLE, F_MOV_VALU
GROUP 2 GROUP 2
END END
BOOLEAN F_VALINTRA BOOLEAN F_VALINTRA
BEGIN BEGIN
PROMPT 34 8 "Gestione valuta per operazioni intrac." PROMPT 34 8 "Gestione valuta per operazioni intrac."
FIELD LF_CAUSALI->VALINTRA FIELD LF_CAUSALI->VALINTRA
GROUP 2 GROUP 2
END END
BOOLEAN F_MOV_VALU BOOLEAN F_MOV_VALU
BEGIN BEGIN
PROMPT 2 10 "Movimento in valuta" PROMPT 2 10 "Movimento in valuta"
FIELD LF_CAUSALI->MOVVAL FIELD LF_CAUSALI->MOVVAL
GROUP 2 GROUP 2
END END
BOOLEAN F_MOV_SEZ BOOLEAN F_MOV_SEZ
BEGIN BEGIN
PROMPT 34 10 "Movimento solo sezionale" PROMPT 34 10 "Movimento solo sezionale"
FIELD LF_CAUSALI->MOVSEZ FIELD LF_CAUSALI->MOVSEZ
FLAGS "H" FLAGS "H"
END END
LISTBOX F_OP_FINE_ANNO 1 10 LISTBOX F_OP_FINE_ANNO 1 10
BEGIN BEGIN
PROMPT 2 12 "Operazioni di fine anno " PROMPT 2 12 "Operazioni di fine anno "
ITEM " | " ITEM " | "
ITEM "C|Chiusura" ITEM "C|Chiusura"
ITEM "A|Apertura" ITEM "A|Apertura"
FIELD LF_CAUSALI->MOVAP FIELD LF_CAUSALI->MOVAP
FLAGS "H" FLAGS "H"
END END
LISTBOX F_COLL_CESP 1 40 LISTBOX F_COLL_CESP 1 40
BEGIN BEGIN
PROMPT 2 14 "Collegamento cespiti " PROMPT 2 14 "Collegamento cespiti "
FIELD LF_CAUSALI->COLLCESP FIELD LF_CAUSALI->COLLCESP
HELP "Inserire il tipo di collegamento cespiti" HELP "Inserire il tipo di collegamento cespiti"
ITEM " |Nessuno" ITEM " |Nessuno"
ITEM "A|Acquisto cespite" ITEM "A|Acquisto cespite"
ITEM "B|Rettifica acquisto" ITEM "B|Rettifica acquisto"
ITEM "C|Sostenimento costi" ITEM "C|Sostenimento costi"
ITEM "E|Eliminazione dal processo produttivo" ITEM "E|Eliminazione dal processo produttivo"
ITEM "M|Rivalutazione monetaria" ITEM "M|Rivalutazione monetaria"
ITEM "P|Reinvestimento plusvalenze" ITEM "P|Reinvestimento plusvalenze"
ITEM "R|Rivalutazione economica" ITEM "R|Rivalutazione economica"
ITEM "T|Trasferimento" ITEM "T|Trasferimento"
ITEM "V|Vendita cespite" ITEM "V|Vendita cespite"
ITEM "Z|Rettifica vendita" ITEM "Z|Rettifica vendita"
END END
LISTBOX F_M_770 1 40 LISTBOX F_M_770 1 40
BEGIN BEGIN
PROMPT 2 16 "Collegamento Mod.770 " PROMPT 2 16 "Collegamento Mod.770 "
FIELD LF_CAUSALI->M770 FIELD LF_CAUSALI->M770
HELP "Inserire il tipo di collegamento Mod.770" HELP "Inserire il tipo di collegamento Mod.770"
ITEM " |Nessuno" // MESSAGE ENABLE,F_COD_CAUS_IM ITEM " |Nessuno" // MESSAGE ENABLE,F_COD_CAUS_IM
ITEM "1|Ricevuta e/o pagamento fattura percip." // MESSAGE CLEAR,F_COD_CAUS_IM ITEM "1|Ricevuta e/o pagamento fattura percip." // MESSAGE CLEAR,F_COD_CAUS_IM
ITEM "2|Versamento ritenute percip." // MESSAGE CLEAR,F_COD_CAUS_IM ITEM "2|Versamento ritenute percip." // MESSAGE CLEAR,F_COD_CAUS_IM
ITEM "3|Versamento ritenute dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM ITEM "3|Versamento ritenute dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM
ITEM "4|Versamento contributi dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM ITEM "4|Versamento contributi dipendente" // MESSAGE CLEAR,F_COD_CAUS_IM
ITEM "5|Compensi non soggetti" // MESSAGE CLEAR,F_COD_CAUS_IM ITEM "5|Compensi non soggetti" // MESSAGE CLEAR,F_COD_CAUS_IM
ITEM "6|Ritenute per operazioni occasionali" // MESSAGE CLEAR,F_COD_CAUS_IM ITEM "6|Ritenute per operazioni occasionali" // MESSAGE CLEAR,F_COD_CAUS_IM
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK
#include "cg0500b.uml" #include "cg0500b.uml"

View File

@ -14,10 +14,13 @@ BEGIN
PROMPT 33 1 "C/F " PROMPT 33 1 "C/F "
ITEM " |Conto" ITEM " |Conto"
MESSAGE SHOW,105|HIDE,205|HIDE,305 MESSAGE SHOW,105|HIDE,205|HIDE,305
MESSAGE SHOW,107|HIDE,207|HIDE,307
ITEM "C|Cliente" ITEM "C|Cliente"
MESSAGE SHOW,205|HIDE,105|HIDE,305 MESSAGE SHOW,205|HIDE,105|HIDE,305
MESSAGE SHOW,207|HIDE,107|HIDE,307
ITEM "F|Fornitore" ITEM "F|Fornitore"
MESSAGE SHOW,305|HIDE,105|HIDE,205 MESSAGE SHOW,305|HIDE,105|HIDE,205
MESSAGE SHOW,307|HIDE,107|HIDE,207
FLAGS "DG" FLAGS "DG"
GROUP 1 GROUP 1
// FLAGS "U" // FLAGS "U"
@ -104,6 +107,7 @@ BEGIN
OUTPUT 107 RAGSOC OUTPUT 107 RAGSOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
FLAGS "H" FLAGS "H"
MESSAGE CLEAR,105
MESSAGE COPY,105 MESSAGE COPY,105
ADD RUN CG0 -1 ADD RUN CG0 -1
GROUP 1 GROUP 1
@ -126,6 +130,7 @@ BEGIN
OUTPUT 107 RAGSOC OUTPUT 107 RAGSOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
FLAGS "H" FLAGS "H"
MESSAGE CLEAR,105
MESSAGE COPY,105 MESSAGE COPY,105
ADD RUN CG0 -1 ADD RUN CG0 -1
GROUP 1 GROUP 1
@ -145,16 +150,40 @@ END
STRING 107 50 STRING 107 50
BEGIN BEGIN
PROMPT 1 5 "Descrizione " PROMPT 1 5 "Descrizione "
USE LF_PCON KEY 2
FIELD LF_RCAUSALI->DESC FIELD LF_RCAUSALI->DESC
USE LF_PCON KEY 2
INPUT DESCR 107
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT 103 GRUPPO
OUTPUT 104 CONTO
OUTPUT 105 SOTTOCONTO
OUTPUT 107 DESCR
// MESSAGE COPY, 207
// MESSAGE COPY, 307
ADD RUN CG0 -0
GROUP 1 GROUP 1
END END
// Descrizione CLIENTE // Descrizione CLIENTE
STRING 207 50 STRING 207 50
BEGIN BEGIN
PROMPT 1 5 "Descrizione " PROMPT 1 5 "Rag.sociale "
FIELD LF_RCAUSALI->DESC FIELD LF_RCAUSALI->DESC
USE LF_CLIFO KEY 2 SELECT (TIPOCF=="C")
INPUT TIPOCF "C"
INPUT CODCF 205
DISPLAY "Tipo C/F" TIPOCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" CODCF
OUTPUT 205 CODCF
OUTPUT 207 RAGSOC
MESSAGE CLEAR,107
MESSAGE COPY,107
GROUP 1 GROUP 1
FLAGS "H" FLAGS "H"
END END
@ -162,8 +191,20 @@ END
// Descrizione FORNITORE // Descrizione FORNITORE
STRING 307 50 STRING 307 50
BEGIN BEGIN
PROMPT 1 5 "Descrizione " PROMPT 1 5 "Rag.sociale "
FIELD LF_RCAUSALI->DESC FIELD LF_RCAUSALI->DESC
USE LF_CLIFO KEY 2 SELECT (TIPOCF=="F")
INPUT TIPOCF "F"
INPUT CODCF 305
DISPLAY "Tipo C/F" TIPOCF
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" CODCF
OUTPUT 305 CODCF
OUTPUT 307 RAGSOC
MESSAGE CLEAR,107
MESSAGE COPY,107
GROUP 1 GROUP 1
FLAGS "H" FLAGS "H"
END END

View File

@ -23,7 +23,7 @@
#include "cg3.h" #include "cg3.h"
#include "cg3100.h" #include "cg3100.h"
#include "cg3401.h" #include "cglib03.h"
//const MAXSTR = 128; //const MAXSTR = 128;
//static char __tmp [MAXSTR]; //static char __tmp [MAXSTR];
@ -67,7 +67,7 @@ class CG3100_application : public TPrintapp
TString _capcf, _codval, _simbolo, _statocf, _comcf, _tipo_fin; TString _capcf, _codval, _simbolo, _statocf, _comcf, _tipo_fin;
long _documenti, _codice_ini, _codice_fin, _numero_reg,_codcf; long _documenti, _codice_ini, _codice_fin, _numero_reg,_codcf;
long _numreg, _numreg_fin, _numreg_ini, _codalleg, _numeroregp,_codclifosucc; long _numreg, _numreg_fin, _numreg_ini, _codalleg, _numeroregp,_codclifosucc;
long _codcf_prec; long _codcf_prec, _numr;
int _anno, _annoes; int _anno, _annoes;
real _totdocumenti, _totdoc, _totimponibile, _totimposta, _importo; real _totdocumenti, _totdoc, _totimponibile, _totimposta, _importo;
real _op_esenti, _op_non_imp, _impo, _impos; real _op_esenti, _op_non_imp, _impo, _impos;
@ -861,13 +861,13 @@ bool CG3100_application::preprocess_page(int file,int counter)
{ {
int anno = cur->curr(LF_MOV).get_int(MOV_ANNOIVA); int anno = cur->curr(LF_MOV).get_int(MOV_ANNOIVA);
TString codreg = cur->curr(LF_MOV).get(MOV_REG); TString codreg = cur->curr(LF_MOV).get(MOV_REG);
_numr = current_cursor()->curr(LF_MOV).get_long(MOV_NUMREG);
_tipo_elenco = current_cursor()->curr(LF_MOV).get(MOV_TIPO); _tipo_elenco = current_cursor()->curr(LF_MOV).get(MOV_TIPO);
_codcf = current_cursor()->curr(LF_MOV).get_long(MOV_CODCF); _codcf = current_cursor()->curr(LF_MOV).get_long(MOV_CODCF);
int tiporeg = CodiceRegistro (codreg, anno); int tiporeg = CodiceRegistro (codreg, anno);
TString attreg = AttivitaRegistro (codreg, anno); TString attreg = AttivitaRegistro (codreg, anno);
if ((tiporeg == 1)||(tiporeg == 2))//se si tratta di un movimento iva if (tiporeg == 1 || tiporeg == 2)//se si tratta di un movimento iva
{ {
_tipoatt = TipoAttivita(attreg, get_firm()); _tipoatt = TipoAttivita(attreg, get_firm());
_tipo_elenco = cur->curr(LF_MOV).get(MOV_TIPO); _tipo_elenco = cur->curr(LF_MOV).get(MOV_TIPO);
@ -876,10 +876,14 @@ bool CG3100_application::preprocess_page(int file,int counter)
_tipodoc = cur->curr(LF_MOV).get(MOV_TIPODOC); _tipodoc = cur->curr(LF_MOV).get(MOV_TIPODOC);
_codval = cur->curr(LF_MOV).get(MOV_CODVAL); _codval = cur->curr(LF_MOV).get(MOV_CODVAL);
_totdoc = cur->curr(LF_MOV).get_real(MOV_TOTDOC); _totdoc = cur->curr(LF_MOV).get_real(MOV_TOTDOC);
/*
if ((_tipo_elenco != _tipo_clifo_precedente) && if ((_tipo_elenco != _tipo_clifo_precedente) &&
(_tipo_clifo_precedente != "") && _salto_pagina) (_tipo_clifo_precedente != "") && _salto_pagina)
printer().formfeed(); printer().formfeed();
*/
if ((_tipo_elenco != _tipo_clifo_prec) &&
(_tipo_clifo_prec != "") && _salto_pagina)
printer().formfeed();
TLocalisamfile* file = cur->file(LF_MOV); TLocalisamfile* file = cur->file(LF_MOV);
TRectype da (file->curr()); TRectype da (file->curr());
@ -914,13 +918,16 @@ bool CG3100_application::preprocess_page(int file,int counter)
_codcf_prec = _codcf; _codcf_prec = _codcf;
stampa_intestazione(); stampa_intestazione();
} }
else else
if ((_tipo_clifo_prec != _tipo_elenco)&&(_codcf_prec != _codcf)) if (_tipo_clifo_prec == _tipo_elenco && _codcf_prec == _codcf)
_settata_prima_riga = FALSE;
else
{ {
stampa_intestazione(); stampa_intestazione();
_tipo_clifo_prec = _tipo_elenco; _tipo_clifo_prec = _tipo_elenco;
_codcf_prec = _codcf; _codcf_prec = _codcf;
} _settata_prima_riga = FALSE;
}
return TRUE; return TRUE;
} }
} }
@ -941,11 +948,9 @@ bool CG3100_application::preprocess_page(int file,int counter)
_simbolo = SimboloValuta(_codval); _simbolo = SimboloValuta(_codval);
_allegb = CausAlleg(_codcaus); _allegb = CausAlleg(_codcaus);
_descr_doc = DescrDoc(_tipodoc); _descr_doc = DescrDoc(_tipodoc);
//_totdocumenti += _totdoc;
_totdocumenti += _totdoc;
//_ricser = current_cursor()->curr(LF_RMOVIVA).get_int(RMI_RICSER); //_ricser = current_cursor()->curr(LF_RMOVIVA).get_int(RMI_RICSER);
_intracom = current_cursor()->curr(LF_RMOVIVA).get_bool(RMI_INTRA); _intracom = current_cursor()->curr(LF_RMOVIVA).get_bool(RMI_INTRA);
//long numeroreg = cur->curr(LF_RMOVIVA).get_long(RMI_NUMREG);
if ((_codval != "LIT") && _intracom) if ((_codval != "LIT") && _intracom)
{ {
@ -996,7 +1001,6 @@ bool CG3100_application::preprocess_page(int file,int counter)
incrementa_totali(); incrementa_totali();
_settata_prima_riga = TRUE; _settata_prima_riga = TRUE;
++_documenti; ++_documenti;
} }
else if (_settata_prima_riga) else if (_settata_prima_riga)
{ {
@ -1075,6 +1079,8 @@ print_action CG3100_application::postprocess_page(int file,int count)
case fatture: case fatture:
if (file == LF_MOV) if (file == LF_MOV)
{ {
long numreg;
_totdocumenti += _totdoc;
TRecnotype pos, items; TRecnotype pos, items;
bool FINITO = FALSE; bool FINITO = FALSE;
TLocalisamfile* mov; TLocalisamfile* mov;
@ -1091,6 +1097,7 @@ print_action CG3100_application::postprocess_page(int file,int count)
{ {
cur->save_status(); cur->save_status();
++(*cur); ++(*cur);
long numrsucc = cur->file(LF_MOV)->get_long(MOV_NUMREG);
_tipoelsucc = cur->file(LF_MOV)->get(MOV_TIPO); _tipoelsucc = cur->file(LF_MOV)->get(MOV_TIPO);
_codclifosucc = cur->file(LF_MOV)->get_long(MOV_CODCF); _codclifosucc = cur->file(LF_MOV)->get_long(MOV_CODCF);
--(*cur); --(*cur);
@ -1112,17 +1119,19 @@ print_action CG3100_application::postprocess_page(int file,int count)
set_row(3, "@75g%r", &_totimposta); set_row(3, "@75g%r", &_totimposta);
set_row(3, "@94g%r", &_op_esenti); set_row(3, "@94g%r", &_op_esenti);
set_row(3, "@112g%r", &_op_non_imp); set_row(3, "@112g%r", &_op_non_imp);
_tipo_clifo_precedente = _tipo_elenco; //_tipo_clifo_precedente = _tipo_elenco;
_totimposta = 0; _totimposta = 0;
_totimponibile = 0; _totimponibile = 0;
_op_esenti = 0; _op_esenti = 0;
_op_non_imp = 0; _op_non_imp = 0;
_documenti = 0; _documenti = 0;
_tipo_clifo_prec = ""; _totdocumenti = 0;
_codcf_prec = 0l; //_tipo_clifo_prec = "";
//_codcf_prec = 0l;
return REPEAT_PAGE; return REPEAT_PAGE;
} }
} }
/*
else if (file == LF_RMOVIVA) else if (file == LF_RMOVIVA)
{ {
long numrec; long numrec;
@ -1132,17 +1141,16 @@ print_action CG3100_application::postprocess_page(int file,int count)
TRecnotype recno = rmoviva->recno(); TRecnotype recno = rmoviva->recno();
rmoviva->next(); rmoviva->next();
//if (rmoviva->bad()) rmoviva->zero(); numrec = rmoviva->get_long(RMI_NUMREG);
numrec = rmoviva->get_long(RMI_NUMREG);
rmoviva->readat(recno); rmoviva->readat(recno);
if (_numreg != numrec) if ( (_numreg != numrec) && (
_settata_prima_riga = FALSE; _settata_prima_riga = FALSE;
else else
_settata_prima_riga = TRUE; _settata_prima_riga = TRUE;
} }
*/
break; break;
case movimenti_sezionale: case movimenti_sezionale:
@ -1483,6 +1491,7 @@ bool CG3100_application::set_print(int m)
reset_files(); reset_files();
TLocalisamfile* fl; TLocalisamfile* fl;
//_curr1->set_filterfunction (0);
_curr1->set_filterfunction (filter_func); _curr1->set_filterfunction (filter_func);
_curr2->set_filterfunction (filter_func); _curr2->set_filterfunction (filter_func);
_curr3->set_filterfunction (filter_func_fatture); _curr3->set_filterfunction (filter_func_fatture);
@ -1552,7 +1561,7 @@ bool CG3100_application::set_print(int m)
fl = current_cursor()->file(LF_MOV); fl = current_cursor()->file(LF_MOV);
TString tipo = msk.get(F_TIPOELENCO); TString tipo = msk.get(F_TIPOELENCO);
bool movprov = msk.get_bool(F_STAMPAMOVP); bool movprov = msk.get_bool(F_STAMPAMOVP);
if ((tipo=="C")||(tipo=="F")) if (tipo=="C" || tipo=="F")
{ {
_codice_ini = atol(msk.get(F_CODICEINI)); _codice_ini = atol(msk.get(F_CODICEINI));
_codice_fin = atol(msk.get(F_CODICEFIN)); _codice_fin = atol(msk.get(F_CODICEFIN));
@ -1622,8 +1631,10 @@ void CG3100_application::user_create()
_relmov1->add(LF_RMOV, "NUMREG=NUMREG",1); _relmov1->add(LF_RMOV, "NUMREG=NUMREG",1);
_relmov1->add(LF_RMOVIVA, "NUMREG=NUMREG",1); _relmov1->add(LF_RMOVIVA, "NUMREG=NUMREG",1);
_relmov2->add(LF_RMOV, "NUMREG=NUMREG",1); _relmov2->add(LF_RMOV, "NUMREG=NUMREG",1);
_relmov2->add(LF_RMOVIVA, "NUMREG=NUMREG",1); _relmov2->add(LF_RMOVIVA, "NUMREG=NUMREG",1);
_relmov3->add(LF_RMOVIVA, "NUMREG=NUMREG",1); _relmov3->add(LF_RMOVIVA, "NUMREG=NUMREG",1);
_relmov3->add(LF_RMOV, "NUMREG=NUMREG",1); _relmov3->add(LF_RMOV, "NUMREG=NUMREG",1);

View File

@ -1,6 +1,6 @@
#include "cg3100.h" #include "cg3100.h"
PAGE "Stampa Lista Movimenti" -1 -1 76 20 PAGE "" -1 -1 76 20
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN

File diff suppressed because it is too large Load Diff

View File

@ -1,65 +1,65 @@
#ifndef __CG3200_H #ifndef __CG3200_H
#define __CG3200_H #define __CG3200_H
#define TAB_IVD "%IVD" #define TAB_IVD "%IVD"
#define TAB_TPD "%TPD" #define TAB_TPD "%TPD"
#define TAB_REG "REG" #define TAB_REG "REG"
#define TAB_ESC "ESC" #define TAB_ESC "ESC"
#define F_CODDITTA 101 #define F_CODDITTA 101
#define F_RAGSOC 102 #define F_RAGSOC 102
#define F_GRUPPOINI 103 #define F_GRUPPOINI 103
#define F_GRUPPOFINE 104 #define F_GRUPPOFINE 104
#define F_CONTOINI 105 #define F_CONTOINI 105
#define F_CONTOFINE 106 #define F_CONTOFINE 106
#define F_SOTTOCONTOINI 107 #define F_SOTTOCONTOINI 107
#define F_SOTTOCONTOFINE 108 #define F_SOTTOCONTOFINE 108
#define F_DATAINI 109 #define F_DATAINI 109
#define F_DATAFINE 110 #define F_DATAFINE 110
#define F_STAMPANUM 112 #define F_STAMPANUM 112
#define F_STAMPAPROGRE 113 #define F_STAMPAPROGRE 113
#define F_STAMPATOTIVA 114 #define F_STAMPATOTIVA 114
#define F_TIPOSTAMPA 115 #define F_TIPOSTAMPA 115
#define F_STAMPAMOVPROV 116 #define F_STAMPAMOVPROV 116
#define F_MEMORIZZA 117 #define F_MEMORIZZA 117
#define F_NUMCARAT 118 #define F_NUMCARAT 118
#define F_NUMMAST 119 #define F_NUMMAST 119
#define F_RICERCA 120 #define F_RICERCA 120
#define F_GRUPPOINI2 121 #define F_GRUPPOINI2 121
#define F_GRUPPOFINE2 122 #define F_GRUPPOFINE2 122
#define F_CONTOINI2 123 #define F_CONTOINI2 123
#define F_CONTOFINE2 124 #define F_CONTOFINE2 124
#define F_SOTTOCONTOINI2 125 #define F_SOTTOCONTOINI2 125
#define F_SOTTOCONTOFINE2 126 #define F_SOTTOCONTOFINE2 126
#define F_GRUPPOINI3 127 #define F_GRUPPOINI3 127
#define F_GRUPPOFINE3 128 #define F_GRUPPOFINE3 128
#define F_CONTOINI3 129 #define F_CONTOINI3 129
#define F_CONTOFINE3 130 #define F_CONTOFINE3 130
#define F_SOTTOCONTOINI3 131 #define F_SOTTOCONTOINI3 131
#define F_SOTTOCONTOFINE3 132 #define F_SOTTOCONTOFINE3 132
#define F_DESCRINI 133 #define F_DESCRINI 133
#define F_DESCRINI2 134 #define F_DESCRINI2 134
#define F_DESCRINI3 135 #define F_DESCRINI3 135
#define F_DESCRFINE 136 #define F_DESCRFINE 136
#define F_DESCRFINE2 137 #define F_DESCRFINE2 137
#define F_DESCRFINE3 138 #define F_DESCRFINE3 138
#define F_ANNO 139 #define F_ANNO 139
#define F_FORMATO 140 #define F_FORMATO 140
#endif // __CG3200_H #endif // __CG3200_H

File diff suppressed because it is too large Load Diff

View File

@ -51,7 +51,8 @@ public:
TCursor * _cur; TCursor * _cur;
TRectype * _RecPartoDa, *_RecArrivoA; TRectype * _RecPartoDa, *_RecArrivoA;
TString _reg_cod, _reg_anno, _reg_descr; int _ae; // anno esercizio di ALLA_DATA
TString _reg_cod, _reg_descr;
TDate _data_da, _data_a, _last_data; TDate _data_da, _data_a, _last_data;
real _tot_dare, _tot_avere; // valori di partenza real _tot_dare, _tot_avere; // valori di partenza
real _tot_dare_progr, _tot_avere_progr; // progressivi real _tot_dare_progr, _tot_avere_progr; // progressivi
@ -74,11 +75,12 @@ public:
bool _gia_settata_riga_mov; // per la stampa no iva bool _gia_settata_riga_mov; // per la stampa no iva
TString _viacf, _civcf, _comcf, _capcf, _statocf; // dati C/F TString _viacf, _civcf, _comcf, _capcf, _statocf; // dati C/F
TString _ragsoc, _paiva, _comunefis, _provfis, _viafis; // dati ditta TString _ragsoc, _paiva, _comunefis, _provfis, _viafis; // dati ditta
TString _cofi, _cap, _anno_es; TString _cofi, _cap;
TLocalisamfile * _com, *_clifo,*_pconti,*_nditte,*_anag, *_caus; TLocalisamfile * _com, *_clifo,*_pconti,*_nditte,*_anag, *_caus;
TTable *_tabreg, *_tabval, *_tabes; TTable *_tabreg, *_tabval, *_tabes;
public: public:
int _annoEsMov;
bool _stampa_definitiva; bool _stampa_definitiva;
TDate _inizioEs, _fineEs; // date inizio e fine esercizio TDate _inizioEs, _fineEs; // date inizio e fine esercizio
TString256 _riporto; // riga di stampa per i riporti TString256 _riporto; // riga di stampa per i riporti
@ -110,7 +112,7 @@ public:
int set_header_132(); int set_header_132();
int set_header_198(); int set_header_198();
bool leggi_tabreg(const char *, const char *); bool leggi_tabreg(const char * codreg, int annoes);
void aggiorna_tabreg(int, int); void aggiorna_tabreg(int, int);
void aggiorna_mov(); void aggiorna_mov();
void scrivi_numgio(long); void scrivi_numgio(long);
@ -122,7 +124,7 @@ public:
const char * SimboloValuta (const char * cod); const char * SimboloValuta (const char * cod);
const char * get_descr_caus (const char * codcaus); const char * get_descr_caus (const char * codcaus);
CG3400_application() : _reg_cod(3), _reg_anno(4), _tot_dare_progr(0.00), CG3400_application() : _reg_cod(3), _tot_dare_progr(0.00),
_tot_avere_progr (0.00), _data_da(""), _data_a("") {}; _tot_avere_progr (0.00), _data_da(""), _data_a("") {};
virtual ~CG3400_application() {}; virtual ~CG3400_application() {};
}; };
@ -431,8 +433,9 @@ void CG3400_application::stampa_totali_giorno(TDate data, bool ff)
else else
set_row (2, ""); // Lascio una riga vuota dopo il totale set_row (2, ""); // Lascio una riga vuota dopo il totale
if (ff) set_auto_ff (TRUE); if (ff) printer().formfeed();
else set_auto_ff (FALSE); // if (ff) set_auto_ff (TRUE);
// else set_auto_ff (FALSE);
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
@ -449,21 +452,21 @@ void CG3400_application::set_page_132 (int file, int counter)
if (_libro_giornale_iva_unico) if (_libro_giornale_iva_unico)
{ {
if (_stampa_definitiva) if (_stampa_definitiva)
set_row(r,"Registrazione n. #-7ld del @d documento n. @7s del @d @56g@s Anno di competenza %s", set_row(r,"Registrazione n. #-7ld del @d documento n. @7s del @d @56g@s Anno di competenza %04d",
&_nprog_mov, &_nprog_mov,
FLD(LF_MOV, MOV_DATAREG), FLD(LF_MOV, MOV_DATAREG),
FLD(LF_MOV, MOV_NUMDOC), FLD(LF_MOV, MOV_NUMDOC),
FLD(LF_MOV, MOV_DATADOC), FLD(LF_MOV, MOV_DATADOC),
FLD(LF_MOV, MOV_DESCR), FLD(LF_MOV, MOV_DESCR),
(const char *)_reg_anno); _ae);
else else
set_row(r,"Registrazione n. @7,lpn del @d documento n. @7s del @d @56g@s Anno di competenza %s", set_row(r,"Registrazione n. @7,lpn del @d documento n. @7s del @d @56g@s Anno di competenza %04d",
FLD(LF_MOV, MOV_NUMREG, "#######"), FLD(LF_MOV, MOV_NUMREG, "#######"),
FLD(LF_MOV, MOV_DATAREG), FLD(LF_MOV, MOV_DATAREG),
FLD(LF_MOV, MOV_NUMDOC), FLD(LF_MOV, MOV_NUMDOC),
FLD(LF_MOV, MOV_DATADOC), FLD(LF_MOV, MOV_DATADOC),
FLD(LF_MOV, MOV_DESCR), FLD(LF_MOV, MOV_DESCR),
(const char *)_reg_anno); _ae);
} }
else else
@ -857,7 +860,7 @@ print_action CG3400_application::postprocess_page(int file, int counter)
int r=0; int r=0;
bool nuovo_mese = FALSE; bool nuovo_mese = FALSE;
set_auto_ff (FALSE); // set_auto_ff (FALSE);
if (counter) if (counter)
{ {
if (nuovo_mese) if (nuovo_mese)
@ -901,7 +904,7 @@ print_action CG3400_application::postprocess_page(int file, int counter)
case LF_RMOVIVA: case LF_RMOVIVA:
default: default:
set_auto_ff(FALSE); // ff gia' fatto prima // set_auto_ff(FALSE); // ff gia' fatto prima
break; break;
} }
return NEXT_PAGE; return NEXT_PAGE;
@ -930,11 +933,11 @@ bool CG3400_application::preprocess_page(int file, int counter)
switch (file) switch (file)
{ {
case LF_MOV: case LF_MOV:
_num_rig=0; _num_rig=0;
_iva_array.destroy(); _iva_array.destroy();
if (!current_cursor()->is_first_match(LF_RMOV)) if (!current_cursor()->is_first_match(LF_RMOV)) return FALSE;
return FALSE;
gia_stampato = current_cursor()->file(LF_MOV)->get_bool(MOV_STAMPATO); gia_stampato = current_cursor()->file(LF_MOV)->get_bool(MOV_STAMPATO);
if (gia_stampato) if (gia_stampato)
@ -943,16 +946,18 @@ bool CG3400_application::preprocess_page(int file, int counter)
else else
set_row (1, "@131g*"); // stampo un * se mov. gia stampato set_row (1, "@131g*"); // stampo un * se mov. gia stampato
if (_libro_giornale_iva_unico) if (_libro_giornale_iva_unico) _nprog_mov++;
_nprog_mov++;
_data_corr = _cur->file(LF_MOV)->get_date(MOV_DATAREG); _data_corr = _cur->file(LF_MOV)->get_date(MOV_DATAREG);
_mese_corr = _data_corr.month(); _mese_corr = _data_corr.month();
_anno_es = _cur->file(LF_MOV)->get(MOV_ANNOES); _annoEsMov = _cur->file(LF_MOV)->get_int(MOV_ANNOES);
caus = _cur->file(LF_MOV)->get(MOV_CODCAUS); caus = _cur->file(LF_MOV)->get(MOV_CODCAUS);
break; break;
case LF_RMOV: case LF_RMOV:
set_auto_ff(FALSE);
// set_auto_ff(FALSE);
_num_rig++; _num_rig++;
reset_print(); reset_print();
set_rows(file, counter); set_rows(file, counter);
@ -978,9 +983,11 @@ bool CG3400_application::preprocess_page(int file, int counter)
*_descr_operazione = (const char *)rmv_descr; *_descr_operazione = (const char *)rmv_descr;
_descr_operazione->set_width(198); _descr_operazione->set_width(198);
} }
setta_righe_descr(_descr_operazione, operazione); setta_righe_descr(_descr_operazione, operazione);
if (!_libro_giornale_iva_unico)
_nprog_mov++; if (!_libro_giornale_iva_unico) _nprog_mov++;
g = current_cursor()->curr(LF_RMOV).get_int(RMV_GRUPPO); g = current_cursor()->curr(LF_RMOV).get_int(RMV_GRUPPO);
c = current_cursor()->curr(LF_RMOV).get_int(RMV_CONTO); c = current_cursor()->curr(LF_RMOV).get_int(RMV_CONTO);
s = current_cursor()->curr(LF_RMOV).get_long(RMV_SOTTOCONTO); s = current_cursor()->curr(LF_RMOV).get_long(RMV_SOTTOCONTO);
@ -1021,6 +1028,7 @@ bool CG3400_application::preprocess_page(int file, int counter)
setta_righe_indirizzo(); setta_righe_indirizzo();
} }
} }
sezione = _cur->file(LF_RMOV)->get (RMV_SEZIONE); sezione = _cur->file(LF_RMOV)->get (RMV_SEZIONE);
importo = _cur->file(LF_RMOV)->get_real (RMV_IMPORTO); importo = _cur->file(LF_RMOV)->get_real (RMV_IMPORTO);
@ -1028,7 +1036,7 @@ bool CG3400_application::preprocess_page(int file, int counter)
if (sezione == "D") if (sezione == "D")
{ {
_tot_dare_progr += importo; // prog. generali _tot_dare_progr += importo; // prog. generali
if (_anno_es != _reg_anno) if (_annoEsMov != _ae)
_tot_dare_ac += importo; // prog. anno precedente _tot_dare_ac += importo; // prog. anno precedente
else else
_tot_dare_gg += importo; // prog. giornalieri _tot_dare_gg += importo; // prog. giornalieri
@ -1041,7 +1049,7 @@ bool CG3400_application::preprocess_page(int file, int counter)
else else
{ {
_tot_avere_progr += importo; _tot_avere_progr += importo;
if (_anno_es != _reg_anno) if (_annoEsMov != _ae)
_tot_avere_ac += importo; _tot_avere_ac += importo;
else else
_tot_avere_gg += importo; _tot_avere_gg += importo;
@ -1050,17 +1058,21 @@ bool CG3400_application::preprocess_page(int file, int counter)
else else
set_row (1, "@164g%r", &importo); set_row (1, "@164g%r", &importo);
} }
break; break;
case LF_RMOVIVA: case LF_RMOVIVA:
set_auto_ff(FALSE);
// set_auto_ff(FALSE);
if (_libro_giornale_iva_unico) if (_libro_giornale_iva_unico)
{ {
calcola_iva (); calcola_iva ();
setta_righe_valuta(); setta_righe_valuta();
} }
break; break;
default: default:
set_auto_ff(FALSE); // set_auto_ff(FALSE);
break; break;
} }
return TRUE; return TRUE;
@ -1193,13 +1205,6 @@ void CG3400_application::setta_righe_indirizzo()
_civcf = occ->get (OCC_CIV); _civcf = occ->get (OCC_CIV);
_capcf = occ->get (OCC_CAP); _capcf = occ->get (OCC_CAP);
_comcf = occ->get (OCC_COM); _comcf = occ->get (OCC_COM);
/******
_viacf = cur->file(LF_MOV)->get (MOV_OCINDIR);
_civcf = cur->file(LF_MOV)->get (MOV_OCCIV);
_capcf = cur->file(LF_MOV)->get (MOV_OCCAP);
_comcf = cur->file(LF_MOV)->get (MOV_OCCOM);
********/
} }
TRectype dep = look_com (_comcf, _com); TRectype dep = look_com (_comcf, _com);
@ -1226,8 +1231,7 @@ void CG3400_application::aggiorna_tabreg(int partito_da, int stampate)
{ {
TString16 codtab; TString16 codtab;
codtab.format ("%4s%-3s", (const char*) _reg_anno, codtab.format ("%04d%-3s", _ae, (const char*) _reg_cod);
(const char*) _reg_cod);
_tabreg->zero(); _tabreg->zero();
_tabreg->put("CODTAB", codtab); _tabreg->put("CODTAB", codtab);
@ -1246,11 +1250,11 @@ void CG3400_application::aggiorna_tabreg(int partito_da, int stampate)
} }
bool CG3400_application::leggi_tabreg(const char * reg_cod, bool CG3400_application::leggi_tabreg(const char * reg_cod,
const char * reg_anno) int reg_anno)
{ {
TString16 codtab; TString16 codtab;
codtab.format ("%4s%-3s", reg_anno, reg_cod); codtab.format ("%04d%-3s", reg_anno, reg_cod);
_tabreg->zero(); _tabreg->zero();
_tabreg->put("CODTAB", codtab); _tabreg->put("CODTAB", codtab);
@ -1305,10 +1309,12 @@ bool CG3400_application::mask_a_data (TMask_field& f, KEY k)
const TDate data_a(f.get()); const TDate data_a(f.get());
const TString16 codreg(m.get(CODREG)); const TString16 codreg(m.get(CODREG));
const int ae = date2esc(data_a); // Anno esercizio const int ae = date2esc(data_a); // Anno esercizio
const bool definitiva = m.get_bool(STAMPA_DEF);
if (ae == 0) if (ae == 0)
return f.error_box("La data specificata non appartiene a nessun esercizio"); return f.error_box("La data specificata non appartiene a nessun esercizio");
TRegistro reg(codreg, ae); TRegistro reg(codreg, ae);
if (!reg.ok()) if (!reg.ok())
return f.warning_box("Non trovo il registro %s per l'esercizio %d", return f.warning_box("Non trovo il registro %s per l'esercizio %d",
(const char *) codreg, ae); (const char *) codreg, ae);
@ -1316,14 +1322,16 @@ bool CG3400_application::mask_a_data (TMask_field& f, KEY k)
return f.warning_box("Il registro %s non e' di tipo libro giornale", return f.warning_box("Il registro %s non e' di tipo libro giornale",
(const char *) codreg); (const char *) codreg);
if (!app()->_stampa_definitiva) if (definitiva)
{ {
const TDate data_da(m.get(DATA_DA)); const TDate data_da(m.get(DATA_DA));
const TString16 ie(app()->_inizioEs.string());
const TString16 fe(app()->_fineEs.string()); // se la stampa e' di prova DALLA_DATA e' obbligatoria
if (!data_da.ok())
return f.warning_box("Manca la data di partenza");
if (data_da < app()->_inizioEs || data_a > app()->_fineEs); if (data_da < app()->_inizioEs || data_a > app()->_fineEs);
return f.warning_box("Le date devono essere comprese tra %s e %s", return f.warning_box("Le date specificate non appartengono allo stesso esercizio");
(const char*)ie, (const char*)fe);
} }
} }
return TRUE; return TRUE;
@ -1341,27 +1349,25 @@ bool CG3400_application::mask_a_data (TMask_field& f, KEY k)
// //
bool CG3400_application::mask_a_cod_reg (TMask_field& f, KEY k) bool CG3400_application::mask_a_cod_reg (TMask_field& f, KEY k)
{ {
TString reg_cod(""),reg_anno("");
if (k == K_TAB) if (k == K_TAB)
{ {
TMask& m = f.mask();
CG3400_application * a = (CG3400_application*) MainApp(); CG3400_application * a = (CG3400_application*) MainApp();
const bool definitiva = m.get_bool(STAMPA_DEF);
reg_cod = f.mask().field(CODREG).get(); TString16 reg_cod(f.get());
reg_anno = f.mask().field(ANNO_ESER).get();
a->leggi_tabreg(reg_cod, reg_anno); a->leggi_tabreg(reg_cod, a->_ae);
TString pag(8), stok(8); TString pag(8), stok(8);
pag << (a->_pagine_stampate+1); pag << (a->_pagine_stampate+1);
stok << a->_stampa_ok; stok << a->_stampa_ok;
if (a->_stampa_ok == -1) // stampa precedente andata bene
f.mask().field(PAGINA_DA).set(pag); if (definitiva)
else if (a->_stampa_ok == -1) // stampa precedente andata bene
f.mask().field(PAGINA_DA).set(stok); m.field(PAGINA_DA).set(pag);
else
f.mask().field(DATA_DA).set (a->_last_data.string()); m.field(PAGINA_DA).set(stok);
} }
return TRUE; return TRUE;
} }
@ -1404,7 +1410,6 @@ bool CG3400_application::set_print(int)
if (tasto == K_ENTER) if (tasto == K_ENTER)
{ {
_reg_cod = ma.get(CODREG); _reg_cod = ma.get(CODREG);
_reg_anno = ma.get(ANNO_ESER);
_stampa_definitiva = (bool) (ma.get(STAMPA_DEF) == "X"); _stampa_definitiva = (bool) (ma.get(STAMPA_DEF) == "X");
_data_da = ma.get(DATA_DA); _data_da = ma.get(DATA_DA);
_data_a = ma.get(DATA_A); _data_a = ma.get(DATA_A);
@ -1412,6 +1417,11 @@ bool CG3400_application::set_print(int)
_stampa_width = (int)ma.get_long(STAMPA_WIDTH); _stampa_width = (int)ma.get_long(STAMPA_WIDTH);
_stampa_len = (int)ma.get_long(STAMPA_LEN); _stampa_len = (int)ma.get_long(STAMPA_LEN);
// Se stampa definita DALLA_DATA e' l'ultima data di stampa del
// registro, se indicata, oppure la data di inizio esercizio
if (_stampa_definitiva)
if (!_last_data.ok()) _data_da = _inizioEs;
if (_stampa_len) printer().formlen(_stampa_len); if (_stampa_len) printer().formlen(_stampa_len);
if (_stampa_width == 1) _stampa_width = 132; if (_stampa_width == 1) _stampa_width = 132;
else _stampa_width = 198; else _stampa_width = 198;
@ -1426,14 +1436,14 @@ bool CG3400_application::set_print(int)
_cur->setregion(da, a); _cur->setregion(da, a);
mb.set (PROGR_DARE, _tot_dare.string()); if (_stampa_definitiva)
mb.set (N_RIGA_STAMPATO, _nprog_da); {
mb.set (ULTIMA_DATA, _last_data.string()); mb.set (PROGR_DARE, _tot_dare.string());
tasto = mb.run(); mb.set (N_RIGA_STAMPATO, _nprog_da);
if (tasto == K_ENTER) mb.set (ULTIMA_DATA, _last_data.string());
return TRUE; tasto = mb.run();
else return (tasto == K_ENTER);
return FALSE; }
} }
return FALSE; return FALSE;
} }

View File

@ -2,24 +2,24 @@
PAGE "" -1 -1 70 15 PAGE "" -1 -1 70 15
STRING REG_COD 3 STRING CODREG 3
BEGIN BEGIN
PROMPT 1 1 "Codice registro " PROMPT 1 1 "Codice registro "
FLAGS "U"
USE REG SELECT (I0 = 5) || (I0 = 4) USE REG SELECT (I0 = 5) || (I0 = 4)
INPUT CODTAB[1,4] ANNO_ESER INPUT CODTAB[1,4] ANNO_ESER
INPUT CODTAB[5,7] REG_COD INPUT CODTAB[5,7] CODREG
DISPLAY "Anno" CODTAB[1,4] DISPLAY "Anno" CODTAB[1,4]
DISPLAY "Codice" CODTAB[5,7] DISPLAY "Codice" CODTAB[5,7]
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Tipo" I0 DISPLAY "Tipo" I0
OUTPUT ANNO_ESER CODTAB[1,4] // OUTPUT ANNO_ESER CODTAB[1,4]
OUTPUT REG_COD CODTAB[5,7] OUTPUT CODREG CODTAB[5,7]
OUTPUT REG_DESC S0 OUTPUT REG_DESC S0
OUTPUT PAGINA_DA I1 OUTPUT PAGINA_DA I1
// OUTPUT DATA_DA D0 // OUTPUT DATA_DA D0
OUTPUT DATA_A D1 // OUTPUT DATA_A D1
CHECKTYPE NORMAL // CHECKTYPE NORMAL
FLAGS "R"
END END
NUMBER ANNO_ESER 4 NUMBER ANNO_ESER 4
@ -32,8 +32,8 @@ BEGIN
DISPLAY "Data fine " D1 DISPLAY "Data fine " D1
DISPLAY "Data scarico" D2 DISPLAY "Data scarico" D2
OUTPUT ANNO_ESER CODTAB OUTPUT ANNO_ESER CODTAB
CHECKTYPE REQUIRED // CHECKTYPE REQUIRED
FLAGS "H" FLAGS "HRZ"
END END
STRING REG_DESC 50 STRING REG_DESC 50
@ -92,7 +92,7 @@ END
BOOLEAN STAMPA_DEF BOOLEAN STAMPA_DEF
BEGIN BEGIN
PROMPT 34 10 "Stampa definitiva" PROMPT 34 10 "Stampa definitiva"
MESSAGE TRUE DISABLE,DATA_DA MESSAGE TRUE DISABLE,DATA_DA | CLEAR, DATA_DA
MESSAGE FALSE ENABLE,DATA_DA MESSAGE FALSE ENABLE,DATA_DA
END END

View File

@ -28,20 +28,38 @@ public:
TRectype& clifo(int i)const { return(TRectype&)this->operator[](i); } TRectype& clifo(int i)const { return(TRectype&)this->operator[](i); }
}; };
typedef enum {scalare = 1, verifica} bilancio;
class Saldo class Saldo
{ {
real _saldo, _saldo_iniziale, _prg_dare, _prg_avere; real _saldo, _saldo_iniziale, _prg_dare, _prg_avere;
int _indbil; int _indbil;
TLocalisamfile * _saldi, *_rmov, *_clifo, *_mov; TRectype* _rec;
TRectype* _rec; bilancio _bilancio;
int _annoes;
TDate _inizioEs, _fineEs;
TString16 _codcaus;
TDate _datareg;
TDate _datacomp;
char _provv;
public: protected:
void InFinEs(int);
public:
int annoes () const { return _annoes; }
bilancio bil () const { return _bilancio; }
void set_annoes (int anno) { _annoes = anno; }
void set_bil (bilancio bil) { _bilancio = bil; }
void leggi_mov(long);
bool causale_mov(long, const TDate&, const TDate&, TString&); bool causale_mov(long, const TDate&, const TDate&, TString&);
const char* causale_chiusura_es(); const char* causale_chiusura_es();
const char* causale_apertura_es(); const char* causale_apertura_es();
bool calcola_data_limite(int,int,int,long,const TDate&,const TDate&,int,bool, bool calcola_data_limite(int,int,int,long,const TDate&,const TDate&,int,bool,
const TDate&,const TDate&,const TDate&,bool); const TDate&,const TDate&,const TDate&,bool);
bool calcola_ultima_immissione(int, int, int, int, long, int); bool calcola_ultima_immissione(int, int, int, int, long, int);
real ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil);
real data_limite_bilancio(int,int,long,const TDate&,const TDate&,int,bool);
real calcola_saldo_iniziale(int, int, int, long, int); real calcola_saldo_iniziale(int, int, int, long, int);
bool calcola_clifo(int, int, int, int, int); bool calcola_clifo(int, int, int, int, int);
TRectype& ricerca_progr_prec(int, int, int, long); TRectype& ricerca_progr_prec(int, int, int, long);
@ -79,7 +97,7 @@ class TSaldo_agg : public TObject
int _anno_es; // anno esercizio int _anno_es; // anno esercizio
TDate _data_ulmov; // data ultimo movimento TDate _data_ulmov; // data ultimo movimento
long _num_ulmov; // numero ultimo movimento long _num_ulmov; // numero ultimo movimento
TRectype * _rec; // record corrente sui saldi
TConto& tconti() { return *(TConto*)_tab_conti.get(); } TConto& tconti() { return *(TConto*)_tab_conti.get(); }
public: public:
@ -91,19 +109,19 @@ public:
char sezione, bool somma=TRUE); char sezione, bool somma=TRUE);
void set_anno_es(int anno) { _anno_es = anno; } void set_anno_es(int anno) { _anno_es = anno; }
int anno_es() const { return _anno_es; } int anno_es() { return _anno_es; }
void set_movap (bool movap) { _movap = movap; } void set_movap (bool movap) { _movap = movap; }
bool movap() const { return _movap; } bool movap() { return _movap; }
void set_movprovv (bool p) { _provv = p; } void set_movprovv (bool p) { _provv = p; }
bool movprovv() { return _provv; } bool movprovv() { return _provv; }
void set_data_ulmov (const TDate& data) { _data_ulmov = data; } void set_data_ulmov (TDate& data) { _data_ulmov = data; }
const TDate& data_ulmov() const { return _data_ulmov; } TDate& data_ulmov() { return _data_ulmov; }
void set_num_ulmov (long num) { _num_ulmov = num; } void set_num_ulmov (long num) { _num_ulmov = num; }
long num_ulmov() const { return _num_ulmov; } long num_ulmov() { return _num_ulmov; }
void reset(); // pulisce l'array dei conti void reset(); // pulisce l'array dei conti
TSaldo_agg(); TSaldo_agg();

View File

@ -45,30 +45,20 @@ Saldo::Saldo()
_prg_dare = ZERO; _prg_dare = ZERO;
_prg_avere = ZERO; _prg_avere = ZERO;
_saldo = ZERO; _saldo = ZERO;
_annoes = 0;
_indbil = 0; _indbil = 0;
_saldi = new TLocalisamfile(LF_SALDI);
_mov = new TLocalisamfile(LF_MOV);
_rmov = new TLocalisamfile(LF_RMOV);
_clifo = new TLocalisamfile(LF_CLIFO);
_rec = new TRectype(LF_SALDI); _rec = new TRectype(LF_SALDI);
} }
Saldo::~Saldo() Saldo::~Saldo()
{ {
delete _saldi;
delete _mov;
delete _rmov;
delete _clifo;
delete _rec;
} }
real Saldo::saldofin_esprec(int annoes, int g, int c, long s) real Saldo::saldofin_esprec(int annoes, int g, int c, long s)
{ {
real saldo,pdare,pavere,pdaresca,paveresca; real saldo,pdare,pavere,pdaresca,paveresca;
char flag; char flag;
TLocalisamfile& saldi = *_saldi; TRectype app = ricerca_progr_prec(annoes-1, g, c, s);
TRecnotype numrec = saldi.recno();
TRectype app = ricerca_progr_prec(annoes-1, g, c, s);
flag = app.get(SLD_FLAGSALINI)[0]; flag = app.get(SLD_FLAGSALINI)[0];
saldo = app.get_real(SLD_SALDO); saldo = app.get_real(SLD_SALDO);
@ -77,8 +67,6 @@ real Saldo::saldofin_esprec(int annoes, int g, int c, long s)
pdaresca = app.get_real(SLD_PDARESCA); pdaresca = app.get_real(SLD_PDARESCA);
paveresca = app.get_real(SLD_PAVERESCA); paveresca = app.get_real(SLD_PAVERESCA);
saldi.readat(numrec);
if (flag == 'D') if (flag == 'D')
return saldo+pdaresca-paveresca+pdare-pavere; return saldo+pdaresca-paveresca+pdare-pavere;
else else
@ -89,7 +77,7 @@ real Saldo::calcola_saldo_iniziale(int annoes,int g,int c,long s,int indbil)
{ {
real saldoini, pdaresca, paveresca; real saldoini, pdaresca, paveresca;
char flag; char flag;
TLocalisamfile& saldi = *_saldi; TLocalisamfile saldi(LF_SALDI, FALSE);
saldi.zero(); saldi.zero();
saldi.put(SLD_GRUPPO,g); saldi.put(SLD_GRUPPO,g);
@ -101,16 +89,15 @@ real Saldo::calcola_saldo_iniziale(int annoes,int g,int c,long s,int indbil)
saldi.read(); saldi.read();
if (saldi.bad()) if (saldi.bad()) saldi.zero();
saldi.zero();
flag = saldi.get(SLD_FLAGSALINI)[0]; flag = saldi.get(SLD_FLAGSALINI)[0];
saldoini = saldi.get_real(SLD_SALDO); saldoini = saldi.get_real(SLD_SALDO);
pdaresca = saldi.get_real(SLD_PDARESCA); pdaresca = saldi.get_real(SLD_PDARESCA);
paveresca = saldi.get_real(SLD_PAVERESCA); paveresca = saldi.get_real(SLD_PAVERESCA);
if (saldoini == 0.00) //e il conto e' patrimoniale o d'ordine if (saldoini == ZERO) //e il conto e' patrimoniale o d'ordine
if ( (indbil == 1)||(indbil == 2)||(indbil == 5) ) if ( indbil == 1 || indbil == 2 || indbil == 5 )
saldoini = saldofin_esprec(annoes, g, c, s); saldoini = saldofin_esprec(annoes, g, c, s);
if (flag == 'D') if (flag == 'D')
@ -119,9 +106,8 @@ real Saldo::calcola_saldo_iniziale(int annoes,int g,int c,long s,int indbil)
return pdaresca-saldoini-paveresca; return pdaresca-saldoini-paveresca;
} }
// La funzione seguente calcola il saldo per data limite o all'ultima immissione es.in / /*
// corso o precedente, a seconda del valore dei suoi parametri al momento della chiamata bool Saldo::calcola(int annoes, int annoesprec,int g, int c, long s,
bool Saldo::calcola(int annoes, int annoesprec, int g, int c, long s,
const TDate& data_inf, const TDate& data_sup, const TDate& data_inf, const TDate& data_sup,
int indbil, bool controllo_competenza, const TDate& inizio_es, int indbil, bool controllo_competenza, const TDate& inizio_es,
const TDate& fine_es, const TDate& fine_es_prec,bool stp_prov) const TDate& fine_es, const TDate& fine_es_prec,bool stp_prov)
@ -133,11 +119,12 @@ bool Saldo::calcola(int annoes, int annoesprec, int g, int c, long s,
return FALSE; return FALSE;
} }
else else
if (!calcola_ultima_immissione(annoes, annoesprec, g, c, s, indbil)) if (!calcola_ultima_immissione(annoes,annoesprec, g, c, s, indbil))
return FALSE; return FALSE;
return TRUE; return TRUE;
} }
*/
const char* Saldo::causale_chiusura_es() const char* Saldo::causale_chiusura_es()
{ {
@ -155,37 +142,29 @@ const char* Saldo::causale_apertura_es()
return __tmp; return __tmp;
} }
bool Saldo::causale_mov(long nr, const TDate& inizio_es, const TDate& data_sup, TString& provv) void Saldo::leggi_mov(long nr)
{ {
TString codcaus; TLocalisamfile mov(LF_MOV, FALSE);
TDate datareg;
TLocalisamfile& mov = *_mov;
mov.zero(); mov.zero();
mov.put (MOV_NUMREG,nr); mov.put (MOV_NUMREG,nr);
if (mov.read() == NOERR) if (mov.read() == NOERR)
{ {
codcaus = mov.get(MOV_CODCAUS); _codcaus = mov.get(MOV_CODCAUS);
datareg = mov.get_date(MOV_DATAREG); _datareg = mov.get_date(MOV_DATAREG);
provv = mov.get(MOV_PROVVIS); _provv = mov.get_char(MOV_PROVVIS);
if (codcaus == causale_chiusura_es()) _datacomp = mov.get_date(MOV_DATACOMP);
return TRUE; }
if (codcaus == causale_apertura_es())
if ( (datareg < inizio_es) || (datareg > data_sup) )
return TRUE;
}
return FALSE;
} }
bool Saldo::calcola_data_limite(int annoes, int g, int c, long s, const TDate& data_inf, const TDate& data_sup, int indbil, bool controllo_competenza, const TDate& inizio_es, const TDate& fine_es, const TDate& fine_es_prec,bool stp_prov) bool Saldo::calcola_data_limite(int annoes, int g, int c, long s, const TDate& data_inf, const TDate& data_sup, int indbil, bool controllo_competenza, const TDate& inizio_es, const TDate& fine_es, const TDate& fine_es_prec,bool stp_prov)
{ {
TString sezione, gcs_corr, gcs_prec="", provv = ""; TString sezione, gcs_corr, gcs_prec="", provv = "";
real importo, dep = 0.00; real importo, dep = ZERO;
int gruppo, conto, annoe; int gruppo, conto, annoe;
long sottoconto, num_reg; long sottoconto, num_reg;
TLocalisamfile& rmov = *_rmov; TLocalisamfile rmov(LF_RMOV, FALSE);
TDate data_rmv; TDate data_rmv;
bool esito = FALSE; bool esito = FALSE;
@ -212,8 +191,8 @@ bool Saldo::calcola_data_limite(int annoes, int g, int c, long s, const TDate& d
num_reg = rmov.get_long(RMV_NUMREG); num_reg = rmov.get_long(RMV_NUMREG);
//se la causale del movimento e' uguale a quella di chiusura, il movimento non va considerato //se la causale del movimento e' uguale a quella di chiusura, il movimento non va considerato
if (causale_mov(num_reg,inizio_es,data_sup,provv)) //if (causale_mov(num_reg,inizio_es,data_sup,provv))
break; // break;
if ((!stp_prov) && (provv.trim().not_empty())) //se non e' richiesta stampa if ((!stp_prov) && (provv.trim().not_empty())) //se non e' richiesta stampa
continue; //mov. provvisori li scarto continue; //mov. provvisori li scarto
@ -258,6 +237,97 @@ bool Saldo::calcola_data_limite(int annoes, int g, int c, long s, const TDate& d
return esito; return esito;
} }
/*
void Saldo::InFinEs(int ae)
{
TTable TabEs ("ESC");
TString16 codtab;
TabEs.zero();
codtab.format ("%04d", ae);
TabEs.put ("CODTAB", codtab);
TabEs.read();
if (TabEs.good())
{
_inizioEs = TabEs.get_date ("D0");
_fineEs = TabEs.get_date ("D1");
}
}
*/
real Saldo::data_limite_bilancio(int g, int c, long s, const TDate& data_inf,
const TDate& data_sup, int indbil, bool stp_prov)
{
TString16 gcs_corr, gcs_prec;
real importo, dep = ZERO;
int gruppo, conto, annoe;
long sottoconto, num_reg;
TDate data_mov;
char sezione;
TLocalisamfile rmov(LF_RMOV, FALSE);
rmov.setkey(2);
rmov.zero();
rmov.put(RMV_GRUPPO,g);
rmov.put(RMV_CONTO,c);
rmov.put(RMV_SOTTOCONTO,s);
TRectype rec(rmov.curr());
rmov.read(_isgteq);
for ( ; !rmov.eof(); rmov.next())
{
if (rmov.curr() != rec) break;
annoe = rmov.get_int(RMV_ANNOES);
gruppo = rmov.get_int(RMV_GRUPPO);
conto = rmov.get_int(RMV_CONTO);
sottoconto = rmov.get_long(RMV_SOTTOCONTO);
num_reg = rmov.get_long(RMV_NUMREG);
leggi_mov(num_reg);
if (_bilancio == scalare)
data_mov = _datacomp;
else
{
if (_annoes == 0)
data_mov = _datareg;
else
data_mov = _datacomp;
}
if (data_mov < data_inf || data_mov > data_sup)
continue;
// se la causale del movimento e' uguale a quella di chiusura,
// il movimento non va considerato
if (_codcaus == causale_chiusura_es()) continue;
if (!stp_prov && _provv != ' ') //se non e' richiesta stampa
continue; //mov. provvisori li scarto
gcs_corr = format ("%3d%3d%6ld", gruppo, conto, sottoconto);
if (gcs_corr != gcs_prec)
{
gcs_prec = gcs_corr;
dep += calcola_saldo_iniziale(_annoes,gruppo,conto,sottoconto,indbil);
}
sezione = rmov.get_char(RMV_SEZIONE);
importo = rmov.get_real(RMV_IMPORTO);
if (importo == ZERO)
continue;
if (sezione == 'D') dep += importo;
else dep -= importo;
}
_saldo = dep;
return _saldo;
}
bool Saldo::calcola_ultima_immissione(int annoes, int annoesprec, int g, int c, bool Saldo::calcola_ultima_immissione(int annoes, int annoesprec, int g, int c,
long s, int indbil) long s, int indbil)
{ {
@ -265,7 +335,7 @@ long s, int indbil)
char sezione; char sezione;
int gruppo, conto, annoe; int gruppo, conto, annoe;
long sottoconto; long sottoconto;
TLocalisamfile& saldi = *_saldi; TLocalisamfile saldi(LF_SALDI, FALSE);
bool esito = TRUE; bool esito = TRUE;
_saldo_iniziale = ZERO; _saldo_iniziale = ZERO;
@ -326,22 +396,70 @@ long s, int indbil)
return esito; return esito;
} }
TRectype& Saldo::ricerca_progr_prec (int annoesprec, int g, int c, long s) real Saldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil)
{ {
TLocalisamfile& saldi = *_saldi; //Si considerano i saldi e non piu' i movimenti
char sezione;
int gruppo, conto, annoe;
long sottoconto;
TLocalisamfile saldi(LF_SALDI, FALSE);
_saldo_iniziale = ZERO;
_prg_dare = ZERO;
_prg_avere = ZERO;
_saldo = ZERO;
saldi.zero(); saldi.zero();
// static TRectype rec(saldi.curr());
saldi.put(SLD_ANNOES,annoes);
saldi.put(SLD_GRUPPO,g);
saldi.put(SLD_CONTO,c);
saldi.put(SLD_SOTTOCONTO,s);
if (saldi.read() == NOERR)
{
annoe = saldi.get_int(SLD_ANNOES);
gruppo = saldi.get_int(SLD_GRUPPO);
conto = saldi.get_int(SLD_CONTO);
sottoconto = saldi.get_long(SLD_SOTTOCONTO);
_saldo_iniziale = saldi.get_real(SLD_SALDO);
_prg_dare = saldi.get_real(SLD_PDARE);
_prg_avere = saldi.get_real(SLD_PAVERE);
sezione = saldi.get_char(SLD_FLAGSALINI);
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale;
// if (indbil == 3 || indbil == 4)
// return esito;
if (indbil == 1 || indbil == 2 || indbil == 5)
if (_saldo_iniziale == ZERO)
_saldo_iniziale += saldofin_esprec(annoes,gruppo,conto,sottoconto);
// i tre valori precedenti vengono utilizzati per la stampa bilancio
// di verifica
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
}
return _saldo;
}
TRectype& Saldo::ricerca_progr_prec (int annoesprec, int g, int c, long s)
{
TLocalisamfile saldi(LF_SALDI, FALSE);
// TRectype rec(LF_SALDI);
saldi.setkey(1);
saldi.zero();
if (annoesprec != 0) saldi.put(SLD_ANNOES,annoesprec); if (annoesprec != 0) saldi.put(SLD_ANNOES,annoesprec);
if (g != 0) saldi.put(SLD_GRUPPO,g); if (g != 0) saldi.put(SLD_GRUPPO,g);
if (c != 0) saldi.put(SLD_CONTO,c); if (c != 0) saldi.put(SLD_CONTO,c);
if (s != 0) saldi.put(SLD_SOTTOCONTO,s); if (s != 0) saldi.put(SLD_SOTTOCONTO,s);
saldi.read(); if (saldi.read() != NOERR) saldi.zero();
if (saldi.bad()) saldi.zero();
*_rec = saldi.curr(); *_rec = saldi.curr();
return *_rec; return *_rec;
} }
@ -353,7 +471,7 @@ bool Saldo::prg_attuali(int annoes,TConto& conto,int indbil,real& prgdare,real&
int g = conto.gruppo(); int g = conto.gruppo();
int c = conto.conto(); int c = conto.conto();
long s = conto.sottoconto(); long s = conto.sottoconto();
TLocalisamfile& saldi = *_saldi; TLocalisamfile saldi(LF_SALDI, FALSE);
saldi.zero(); saldi.zero();
saldi.put(SLD_GRUPPO,g); saldi.put(SLD_GRUPPO,g);
@ -398,7 +516,7 @@ bool Saldo::prg_mov_eliminati(int annoes,TConto& conto,int indbil,real& prgdare,
{ {
real saldoini, pdaresca, paveresca; real saldoini, pdaresca, paveresca;
char flagsalini; char flagsalini;
TLocalisamfile& saldi = *_saldi; TLocalisamfile saldi(LF_SALDI, FALSE);
saldi.zero(); saldi.zero();
saldi.put(SLD_GRUPPO,conto.gruppo()); saldi.put(SLD_GRUPPO,conto.gruppo());
@ -414,10 +532,10 @@ bool Saldo::prg_mov_eliminati(int annoes,TConto& conto,int indbil,real& prgdare,
saldoini = saldi.get_real(SLD_SALDO); saldoini = saldi.get_real(SLD_SALDO);
if ( (indbil == 1) || (indbil == 2) || (indbil == 5) ) if ( (indbil == 1) || (indbil == 2) || (indbil == 5) )
if (saldoini == 0) if (saldoini == ZERO)
{ {
saldoini = saldofin_esprec(annoes,conto.gruppo(),conto.conto(),conto.sottoconto()); saldoini = saldofin_esprec(annoes,conto.gruppo(),conto.conto(),conto.sottoconto());
if (saldoini > 0.00) if (saldoini > ZERO)
flagsalini = 'D'; flagsalini = 'D';
else flagsalini = 'A'; else flagsalini = 'A';
} }

View File

@ -41,10 +41,9 @@ $(O)/cg0300.o: cg0300.cpp $(I15) $(I31) $(I53) cg0300.h cg0.h
$(O)/cg0400.o: cg0400.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(I43) cg0400.h cg0.h $(O)/cg0400.o: cg0400.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(I43) cg0400.h cg0.h
$(O)/cg0500.o: cg0500.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(I43) cg0500.h $(O)/cg0500.o: cg0500.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(I43) cg0500.h
$(O)/cg0501.o: cg0501.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(I43) cg0500.h cg0501.h
$(EP)cg0: $(O)/cg0.o $(O)/cg0100.o $(O)/cg0200.o $(O)/cg0201.o $(O)/cg0300.o $(O)/cg0400.o $(O)/cg0500.o $(O)/cg0501.o $(O)/conto.o $(LIBD1) $(EP)cg0.frl $(EP)cg0: $(O)/cg0.o $(O)/cg0100.o $(O)/cg0200.o $(O)/cg0201.o $(O)/cg0300.o $(O)/cg0400.o $(O)/cg0500.o $(O)/cg2103.o $(O)/conto.o $(LIBD1) $(EP)cg0.frl
$(LINK) $(LFLAGSD1) $@ $(O)/cg0.o $(O)/cg0100.o $(O)/cg0200.o $(O)/cg0201.o $(O)/cg0300.o $(O)/cg0400.o $(O)/cg0500.o $(O)/cg0501.o $(O)/conto.o $(LINK) $(LFLAGSD1) $@ $(O)/cg0.o $(O)/cg0100.o $(O)/cg0200.o $(O)/cg0201.o $(O)/cg0300.o $(O)/cg0400.o $(O)/cg0500.o $(O)/cg2103.o $(O)/conto.o
$(EP)cg0.frl: cg0.url $(U1) $(EP)cg0.frl: cg0.url $(U1)
$(RCOMP) cg0 -l $(EP)cg0 $(RCOMP) cg0 -l $(EP)cg0
@ -101,11 +100,11 @@ $(O)/cg3300.o: cg3300.cpp cg3300.h $(I6) $(I10) $(I24) $(I27) $(I33)
$(O)/cg3301.o: cg3301.cpp cg3300.h $(I6) $(I10) $(I24) $(I27) $(I33) $(O)/cg3301.o: cg3301.cpp cg3300.h $(I6) $(I10) $(I24) $(I27) $(I33)
(O)/cg3100.o: cg3401.h cg3100.cpp $(I6) $(I10) $(I24) $(I27) $(I33) (O)/cg3100.o: cglib03.h cg3100.cpp $(I6) $(I10) $(I24) $(I27) $(I33)
$(O)/cg3200.o: cg3401.h cg3200.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(I47) $(I48) $(O)/cg3200.o: cglib03.h cg3200.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(I47) $(I48)
$(O)/cg3400.o: cg3401.h cg3400.cpp $(I6) $(I10) $(I24) $(I27) $(I33) $(O)/cg3400.o: cglib03.h cg3400.cpp $(I6) $(I10) $(I24) $(I27) $(I33)
$(O)/cg3500.o: cg3500.cpp cg3500.h $(I6) $(I10) $(I24) $(I27) $(I33) $(O)/cg3500.o: cg3500.cpp cg3500.h $(I6) $(I10) $(I24) $(I27) $(I33)
@ -115,8 +114,8 @@ $(O)/cglib03.o: cglib03.cpp $(I24) $(I31) $(I33) $(I40) $(I42) $(I51) cglib.h
$(O)/conto.o: conto.cpp conto.h $(O)/conto.o: conto.cpp conto.h
$(EP)cg3: $(O)/cg3.o $(LIBD1) $(O)/cg3300.o $(O)/cg3301.o $(O)/cg3200.o $(O)/cg3100.o $(O)/cg3400.o $(O)/cg3500.o $(O)/conto.o $(O)/cglib01.o $(O)/cglib03.o $(EP)cg3.frl $(EP)cg3: $(O)/cg3.o $(LIBD1) $(O)/cg3300.o $(O)/cg3301.o $(O)/cg3200.o $(O)/cg3100.o $(O)/cg3400.o $(O)/cg3500.o $(O)/cg2103.o $(O)/conto.o $(O)/cglib01.o $(O)/cglib03.o $(EP)cg3.frl
$(LINK) $(LFLAGSD1) $@ $(O)/cg3.o $(O)/cg3300.o $(O)/cg3301.o $(O)/cg3200.o $(O)/cg3100.o $(O)/cg3400.o $(O)/cg3500.o $(O)/conto.o $(O)/cglib01.o $(O)/cglib03.o $(LINK) $(LFLAGSD1) $@ $(O)/cg3.o $(O)/cg3300.o $(O)/cg3301.o $(O)/cg3200.o $(O)/cg3100.o $(O)/cg3400.o $(O)/cg3500.o $(O)/conto.o $(O)/cglib01.o $(O)/cglib03.o $(O)/cg2103.o
$(EP)cg3.frl: cg3.url $(U1) $(EP)cg3.frl: cg3.url $(U1)
$(RCOMP) cg3 -l $(EP)cg3 $(RCOMP) cg3 -l $(EP)cg3