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 "cglib.h"
#include "cg0501.h"
#include "cg2103.h"
#include "cg0500.h"
#define SS_TIPOCF 102
@ -171,6 +171,7 @@ typedef enum { acquisto, vendita, incasso_pagamento,
// 1 vendite senza corrisp
// 2 vendite con corrisp
// 3 acquisti
// 4 sia acquisti che vendite
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 sottoconto_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);
TRelation * _rel;
@ -218,6 +220,7 @@ protected:
// int cancella(long items);
public:
bool _forcedCopy;
TRighe_rcaus _righe_rcaus; // Array delle descrizioni delle righe
tipo_descr _tipo_des; // Il tipo di causale corrente
int _riga; // Riga corrente dello sheet (set_notify)
@ -295,76 +298,125 @@ bool filtra_reg(const TRelation * r)
////////////////////////////////////////////////////////////////////////////
// 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)
{
// if (k == K_TAB && f.focusdirty())
// Testo K_TAB perche' il controllo deve scattare anche all'inizio
// per vedere, per es., se il registro scritto nella causale
// esiste ancora
// per vedere, per es., se il registro scritto nella causale esiste ancora
if (k == K_TAB)
{
const TString16 val(f.get());
TEdit_field& field_reg = (TEdit_field&)f.mask().field(F_COD_REG);
if (val.not_empty() && val != "IN" && val != "PG" && val != "AN")
{
if (salda_conto())
{
f.mask().hide(F_TIPO_MOV_2);
f.mask().show(F_TIPO_MOV_1);
}
{
// if (f.to_check(k)) {
f.mask().hide(F_TIPO_MOV_2);
if (salda_conto()) f.mask().show(F_TIPO_MOV_1);
// }
f.mask().enable(F_COD_REG);
field_reg.check_type(CHECK_REQUIRED);
// 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;
TipoIVA i = nessuna_iva;
TTable tabtpd("%TPD");
tabtpd.put("CODTAB", val);
if (tabtpd.read() == NOERR)
{
i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
bool corrisp = tabtpd.get_bool("B0");
if (i == 1) // vendite
{
if (corrisp) { // vendite con corrispettivi
app()->_filtro = 2;
field_reg.browse()->cursor()->set_filterfunction(filtra_reg);
} else
// con tipo=2
if (val == "FA" || val == "BD") {
app()->_filtro = 3;
}
else { // vendite senza corrispettivi
app()->_filtro = 1;
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);
}
// 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
{
// Devo poter rivedere tutti i registri se ho cancellato il campo TIPODOC
field_reg.check_type(CHECK_NORMAL);
f.mask().set(F_COD_REG,"");
f.mask().disable(F_COD_REG);
if (salda_conto()) {
f.mask().hide(F_TIPO_MOV_1);
f.mask().show(F_TIPO_MOV_2);
}
// if (f.to_check(k)) {
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()->MostraCampi(f); // show-hide di diversi campi pilotati da codreg
}
}
return TRUE;
}
@ -373,7 +425,7 @@ bool CG0500_application::tipomov_hndl (TMask_field& f, KEY k)
{
if (k == K_SPACE) {
app()->MostraCampi(f);
app()->fill_sheet(f.mask());
if (f.focusdirty()) app()->fill_sheet(f.mask());
}
return TRUE;
}
@ -402,95 +454,126 @@ bool CG0500_application::codcausim_hndl (TMask_field& f, KEY k)
bool CG0500_application::MostraCampi(TMask_field& f)
{
const int tpm = f.mask().get_int(F_TIPO_MOV);
TString16 codreg = f.mask().get(F_COD_REG);
TMask& m = f.mask();
const int tpm = m.get_int(F_TIPO_MOV);
TString16 codreg = m.get(F_COD_REG);
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) {
case 0:
f.mask().show(F_OP_FINE_ANNO);
f.mask().hide(F_MOV_VALU);
f.mask().hide(F_MOV_SEZ);
m.show(F_OP_FINE_ANNO);
m.show(F_COLL_CESP);
m.show(F_M_770);
m.hide(F_MOV_VALU);
m.hide(F_MOV_SEZ);
break;
case 3:
case 5:
case 6:
f.mask().hide(F_OP_FINE_ANNO);
f.mask().show(F_MOV_VALU);
f.mask().show(F_MOV_SEZ);
f.mask().hide(F_COLL_CESP);
if (gestione_valuta()) m.show(F_MOV_VALU);
if (salda_conto()) m.show(F_MOV_SEZ);
m.show(F_M_770);
m.hide(F_OP_FINE_ANNO);
m.hide(F_COLL_CESP);
break;
default:
f.mask().show(F_COLL_CESP);
break;
}
}
else { // codreg non vuoto
f.mask().hide(F_OP_FINE_ANNO);
f.mask().hide(F_MOV_SEZ);
if (gestione_valuta())
f.mask().show(F_MOV_VALU);
m.hide(F_OP_FINE_ANNO);
m.hide(F_MOV_SEZ);
if (gestione_valuta()) m.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;
}
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);
if (f.focusdirty()) app()->fill_sheet(f.mask());
return TRUE;
}
// controllo di consistenza tra codice (tipo) registro e tipo documento
// if (k == K_ENTER && f.dirty())
if (k == K_ENTER)
{
bool ok = TRUE;
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);
// bool ok = TRUE;
const TString16 tpd = f.mask().get(F_TIPO_DOC);
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())
return f.warning_box("Manca il codice del registro");
}
else
{
// con tipo=1
if (tpd == "FV" || tpd == "FS" || tpd == "FS")
TipoIVA i = nessuna_iva;
TRegistro grog(codreg, anno_iva());
TTable tabtpd("%TPD");
tabtpd.put("CODTAB", tpd);
if (tabtpd.read() == NOERR)
{
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;
}
i = (TipoIVA)tabtpd.get_int("I0"); // IVA acquisti, vendite, generica
const TipoIVA ri = grog.iva();
if (i == iva_generica) i = ri;
if (i != ri) {
return f.warning_box("Tipo documento incompatibile con tipo registro");
i = iva_errata;
}
}
}
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;
}
@ -677,23 +760,40 @@ void TRighe_rcaus::CausaleIncassoPagamento()
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 ( tpm == 3 || tpm == 5 || tpm == 6 )
_righe_rcaus.CausaleIncassoPagamento();
else
if (salda_conto())
{
if ( !salda_conto() || tpm == 0 )
if (m770 == 6)
{
switch (tpm) {
case 3:
case 5:
case 6:
_righe_rcaus.CausaleIncassoPagamento();
break;
case 0:
if (m770 == 6)
_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.CaricaRigheLibere();
_righe_rcaus.CaricaRigheLibere();
}
}
else
else // C'e' il tipodoc.
{
if (tpr == 1)
_righe_rcaus.CausaleVendite();
@ -702,6 +802,7 @@ void CG0500_application::compilaarray(const TString& tpd, int tpm, int tpr, int
_righe_rcaus.CausaleAcquisti();
else
{
_forcedCopy = TRUE;
_righe_rcaus.ClearDescr();
_righe_rcaus.CaricaRigheLibere();
}
@ -781,20 +882,28 @@ void CG0500_application::array2sheet()
char _dfi [30];
TFixed_string dfi(_dfi,30);
_items = _righe_rcaus.items();
// ss().reset();
bool update = FALSE;
for (int i = 0; i < _items; i++)
{
TToken_string & riga = ss().row(i);
TToken_string * r = (TToken_string*)_righe_rcaus.objptr(i);
if (r != NULL)
{
dfi = r->get(0);
riga.add(dfi,0);
}
else
riga.cut(0);
TToken_string& riga = ss().row(i);
TToken_string* r = (TToken_string*)_righe_rcaus.objptr(i);
dfi = r->get(0);
// Ricopio la descrizione solo se non vuota
if (_forcedCopy) {
update = TRUE;
riga.add(dfi,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)
@ -803,15 +912,19 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler)
TString16 tpd, codreg;
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");
tpd = caus.get("TIPODOC");
tpm = caus.get_int("TIPOMOV");
m770 = caus.get_int("M770");
}
else
{
}
else { // sono in inserimento e prima di entrare negli handler
codreg = m.field(F_COD_REG).get();
tpd = m.field(F_TIPO_DOC).get();
tpm = m.get_int(F_TIPO_MOV);
@ -820,8 +933,7 @@ bool CG0500_application::descr2array(TMask& m, bool fromHandler)
if (fromHandler)
tpr = m.get_int(F_TIPO_REG);
else
{
else {
TString16 chiave; chiave << anno_iva() << codreg;
TTable reg("REG");
reg.put("CODTAB", chiave);
@ -894,7 +1006,6 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
desc = riga.get();
coddesc = riga.get();
// NB spostato TIPOCF da terzultimo a secondo
if (g > 0 || c > 0 || s > 0L)
{
rcaus->zero();
@ -923,7 +1034,6 @@ int CG0500_application::re_write(const TMask& m,bool rewrite)
if (rewrite)
{
togli_dal_file(cau); // Elimina dal file le righe rimaste nel bitarray
// return _rel->rewrite();
return caus->rewrite();
}
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()
{
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)
{
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
// preso dai par.ditta
const int anno = anno_iva();
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->set_handler(F_TIPO_DOC, tipodoc_hndl);
_msk->set_handler(F_TIPO_MOV_1, tipomov_hndl);
_msk->set_handler(F_TIPO_MOV_2, tipomov_hndl);
if (salda_conto()) {
_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_CAUS_IM, codcausim_hndl);
_msk->set_handler(F_M_770, m770_hndl);
TSheet_field& cs = ss();
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(104, conto_hndl);
_forcedCopy = FALSE;
return TRUE;
}

View File

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

View File

@ -14,10 +14,13 @@ BEGIN
PROMPT 33 1 "C/F "
ITEM " |Conto"
MESSAGE SHOW,105|HIDE,205|HIDE,305
MESSAGE SHOW,107|HIDE,207|HIDE,307
ITEM "C|Cliente"
MESSAGE SHOW,205|HIDE,105|HIDE,305
MESSAGE SHOW,207|HIDE,107|HIDE,307
ITEM "F|Fornitore"
MESSAGE SHOW,305|HIDE,105|HIDE,205
MESSAGE SHOW,307|HIDE,107|HIDE,207
FLAGS "DG"
GROUP 1
// FLAGS "U"
@ -104,6 +107,7 @@ BEGIN
OUTPUT 107 RAGSOC
CHECKTYPE NORMAL
FLAGS "H"
MESSAGE CLEAR,105
MESSAGE COPY,105
ADD RUN CG0 -1
GROUP 1
@ -126,6 +130,7 @@ BEGIN
OUTPUT 107 RAGSOC
CHECKTYPE NORMAL
FLAGS "H"
MESSAGE CLEAR,105
MESSAGE COPY,105
ADD RUN CG0 -1
GROUP 1
@ -145,16 +150,40 @@ END
STRING 107 50
BEGIN
PROMPT 1 5 "Descrizione "
USE LF_PCON KEY 2
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
END
// Descrizione CLIENTE
STRING 207 50
BEGIN
PROMPT 1 5 "Descrizione "
PROMPT 1 5 "Rag.sociale "
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
FLAGS "H"
END
@ -162,8 +191,20 @@ END
// Descrizione FORNITORE
STRING 307 50
BEGIN
PROMPT 1 5 "Descrizione "
PROMPT 1 5 "Rag.sociale "
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
FLAGS "H"
END

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -51,7 +51,8 @@ public:
TCursor * _cur;
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;
real _tot_dare, _tot_avere; // valori di partenza
real _tot_dare_progr, _tot_avere_progr; // progressivi
@ -74,11 +75,12 @@ public:
bool _gia_settata_riga_mov; // per la stampa no iva
TString _viacf, _civcf, _comcf, _capcf, _statocf; // dati C/F
TString _ragsoc, _paiva, _comunefis, _provfis, _viafis; // dati ditta
TString _cofi, _cap, _anno_es;
TString _cofi, _cap;
TLocalisamfile * _com, *_clifo,*_pconti,*_nditte,*_anag, *_caus;
TTable *_tabreg, *_tabval, *_tabes;
public:
int _annoEsMov;
bool _stampa_definitiva;
TDate _inizioEs, _fineEs; // date inizio e fine esercizio
TString256 _riporto; // riga di stampa per i riporti
@ -110,7 +112,7 @@ public:
int set_header_132();
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_mov();
void scrivi_numgio(long);
@ -122,7 +124,7 @@ public:
const char * SimboloValuta (const char * cod);
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("") {};
virtual ~CG3400_application() {};
};
@ -431,8 +433,9 @@ void CG3400_application::stampa_totali_giorno(TDate data, bool ff)
else
set_row (2, ""); // Lascio una riga vuota dopo il totale
if (ff) set_auto_ff (TRUE);
else set_auto_ff (FALSE);
if (ff) printer().formfeed();
// 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 (_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,
FLD(LF_MOV, MOV_DATAREG),
FLD(LF_MOV, MOV_NUMDOC),
FLD(LF_MOV, MOV_DATADOC),
FLD(LF_MOV, MOV_DESCR),
(const char *)_reg_anno);
_ae);
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_DATAREG),
FLD(LF_MOV, MOV_NUMDOC),
FLD(LF_MOV, MOV_DATADOC),
FLD(LF_MOV, MOV_DESCR),
(const char *)_reg_anno);
_ae);
}
else
@ -857,7 +860,7 @@ print_action CG3400_application::postprocess_page(int file, int counter)
int r=0;
bool nuovo_mese = FALSE;
set_auto_ff (FALSE);
// set_auto_ff (FALSE);
if (counter)
{
if (nuovo_mese)
@ -901,7 +904,7 @@ print_action CG3400_application::postprocess_page(int file, int counter)
case LF_RMOVIVA:
default:
set_auto_ff(FALSE); // ff gia' fatto prima
// set_auto_ff(FALSE); // ff gia' fatto prima
break;
}
return NEXT_PAGE;
@ -930,11 +933,11 @@ bool CG3400_application::preprocess_page(int file, int counter)
switch (file)
{
case LF_MOV:
_num_rig=0;
_iva_array.destroy();
if (!current_cursor()->is_first_match(LF_RMOV))
return FALSE;
if (!current_cursor()->is_first_match(LF_RMOV)) return FALSE;
gia_stampato = current_cursor()->file(LF_MOV)->get_bool(MOV_STAMPATO);
if (gia_stampato)
@ -943,16 +946,18 @@ bool CG3400_application::preprocess_page(int file, int counter)
else
set_row (1, "@131g*"); // stampo un * se mov. gia stampato
if (_libro_giornale_iva_unico)
_nprog_mov++;
if (_libro_giornale_iva_unico) _nprog_mov++;
_data_corr = _cur->file(LF_MOV)->get_date(MOV_DATAREG);
_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);
break;
case LF_RMOV:
set_auto_ff(FALSE);
// set_auto_ff(FALSE);
_num_rig++;
reset_print();
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->set_width(198);
}
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);
c = current_cursor()->curr(LF_RMOV).get_int(RMV_CONTO);
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();
}
}
sezione = _cur->file(LF_RMOV)->get (RMV_SEZIONE);
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")
{
_tot_dare_progr += importo; // prog. generali
if (_anno_es != _reg_anno)
if (_annoEsMov != _ae)
_tot_dare_ac += importo; // prog. anno precedente
else
_tot_dare_gg += importo; // prog. giornalieri
@ -1041,7 +1049,7 @@ bool CG3400_application::preprocess_page(int file, int counter)
else
{
_tot_avere_progr += importo;
if (_anno_es != _reg_anno)
if (_annoEsMov != _ae)
_tot_avere_ac += importo;
else
_tot_avere_gg += importo;
@ -1050,17 +1058,21 @@ bool CG3400_application::preprocess_page(int file, int counter)
else
set_row (1, "@164g%r", &importo);
}
break;
case LF_RMOVIVA:
set_auto_ff(FALSE);
// set_auto_ff(FALSE);
if (_libro_giornale_iva_unico)
{
calcola_iva ();
setta_righe_valuta();
}
break;
default:
set_auto_ff(FALSE);
// set_auto_ff(FALSE);
break;
}
return TRUE;
@ -1193,13 +1205,6 @@ void CG3400_application::setta_righe_indirizzo()
_civcf = occ->get (OCC_CIV);
_capcf = occ->get (OCC_CAP);
_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);
@ -1226,8 +1231,7 @@ void CG3400_application::aggiorna_tabreg(int partito_da, int stampate)
{
TString16 codtab;
codtab.format ("%4s%-3s", (const char*) _reg_anno,
(const char*) _reg_cod);
codtab.format ("%04d%-3s", _ae, (const char*) _reg_cod);
_tabreg->zero();
_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,
const char * reg_anno)
int reg_anno)
{
TString16 codtab;
codtab.format ("%4s%-3s", reg_anno, reg_cod);
codtab.format ("%04d%-3s", reg_anno, reg_cod);
_tabreg->zero();
_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 TString16 codreg(m.get(CODREG));
const int ae = date2esc(data_a); // Anno esercizio
const bool definitiva = m.get_bool(STAMPA_DEF);
if (ae == 0)
return f.error_box("La data specificata non appartiene a nessun esercizio");
TRegistro reg(codreg, ae);
if (!reg.ok())
return f.warning_box("Non trovo il registro %s per l'esercizio %d",
(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",
(const char *) codreg);
if (!app()->_stampa_definitiva)
if (definitiva)
{
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);
return f.warning_box("Le date devono essere comprese tra %s e %s",
(const char*)ie, (const char*)fe);
return f.warning_box("Le date specificate non appartengono allo stesso esercizio");
}
}
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)
{
TString reg_cod(""),reg_anno("");
if (k == K_TAB)
{
TMask& m = f.mask();
CG3400_application * a = (CG3400_application*) MainApp();
const bool definitiva = m.get_bool(STAMPA_DEF);
reg_cod = f.mask().field(CODREG).get();
reg_anno = f.mask().field(ANNO_ESER).get();
TString16 reg_cod(f.get());
a->leggi_tabreg(reg_cod, reg_anno);
a->leggi_tabreg(reg_cod, a->_ae);
TString pag(8), stok(8);
pag << (a->_pagine_stampate+1);
stok << a->_stampa_ok;
if (a->_stampa_ok == -1) // stampa precedente andata bene
f.mask().field(PAGINA_DA).set(pag);
else
f.mask().field(PAGINA_DA).set(stok);
f.mask().field(DATA_DA).set (a->_last_data.string());
if (definitiva)
if (a->_stampa_ok == -1) // stampa precedente andata bene
m.field(PAGINA_DA).set(pag);
else
m.field(PAGINA_DA).set(stok);
}
return TRUE;
}
@ -1404,7 +1410,6 @@ bool CG3400_application::set_print(int)
if (tasto == K_ENTER)
{
_reg_cod = ma.get(CODREG);
_reg_anno = ma.get(ANNO_ESER);
_stampa_definitiva = (bool) (ma.get(STAMPA_DEF) == "X");
_data_da = ma.get(DATA_DA);
_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_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_width == 1) _stampa_width = 132;
else _stampa_width = 198;
@ -1426,14 +1436,14 @@ bool CG3400_application::set_print(int)
_cur->setregion(da, a);
mb.set (PROGR_DARE, _tot_dare.string());
mb.set (N_RIGA_STAMPATO, _nprog_da);
mb.set (ULTIMA_DATA, _last_data.string());
tasto = mb.run();
if (tasto == K_ENTER)
return TRUE;
else
return FALSE;
if (_stampa_definitiva)
{
mb.set (PROGR_DARE, _tot_dare.string());
mb.set (N_RIGA_STAMPATO, _nprog_da);
mb.set (ULTIMA_DATA, _last_data.string());
tasto = mb.run();
return (tasto == K_ENTER);
}
}
return FALSE;
}

View File

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

View File

@ -28,20 +28,38 @@ public:
TRectype& clifo(int i)const { return(TRectype&)this->operator[](i); }
};
typedef enum {scalare = 1, verifica} bilancio;
class Saldo
{
real _saldo, _saldo_iniziale, _prg_dare, _prg_avere;
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&);
const char* causale_chiusura_es();
const char* causale_apertura_es();
bool calcola_data_limite(int,int,int,long,const TDate&,const TDate&,int,bool,
const TDate&,const TDate&,const TDate&,bool);
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);
bool calcola_clifo(int, int, int, int, int);
TRectype& ricerca_progr_prec(int, int, int, long);
@ -79,7 +97,7 @@ class TSaldo_agg : public TObject
int _anno_es; // anno esercizio
TDate _data_ulmov; // data ultimo movimento
long _num_ulmov; // numero ultimo movimento
TRectype * _rec; // record corrente sui saldi
TConto& tconti() { return *(TConto*)_tab_conti.get(); }
public:
@ -91,19 +109,19 @@ public:
char sezione, bool somma=TRUE);
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; }
bool movap() const { return _movap; }
bool movap() { return _movap; }
void set_movprovv (bool p) { _provv = p; }
bool movprovv() { return _provv; }
void set_data_ulmov (const TDate& data) { _data_ulmov = data; }
const TDate& data_ulmov() const { return _data_ulmov; }
void set_data_ulmov (TDate& data) { _data_ulmov = data; }
TDate& data_ulmov() { return _data_ulmov; }
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
TSaldo_agg();

View File

@ -45,30 +45,20 @@ Saldo::Saldo()
_prg_dare = ZERO;
_prg_avere = ZERO;
_saldo = ZERO;
_annoes = 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);
}
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,pdare,pavere,pdaresca,paveresca;
char flag;
TLocalisamfile& saldi = *_saldi;
TRecnotype numrec = saldi.recno();
TRectype app = ricerca_progr_prec(annoes-1, g, c, s);
TRectype app = ricerca_progr_prec(annoes-1, g, c, s);
flag = app.get(SLD_FLAGSALINI)[0];
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);
paveresca = app.get_real(SLD_PAVERESCA);
saldi.readat(numrec);
if (flag == 'D')
return saldo+pdaresca-paveresca+pdare-pavere;
else
@ -89,7 +77,7 @@ real Saldo::calcola_saldo_iniziale(int annoes,int g,int c,long s,int indbil)
{
real saldoini, pdaresca, paveresca;
char flag;
TLocalisamfile& saldi = *_saldi;
TLocalisamfile saldi(LF_SALDI, FALSE);
saldi.zero();
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();
if (saldi.bad())
saldi.zero();
if (saldi.bad()) saldi.zero();
flag = saldi.get(SLD_FLAGSALINI)[0];
saldoini = saldi.get_real(SLD_SALDO);
pdaresca = saldi.get_real(SLD_PDARESCA);
paveresca = saldi.get_real(SLD_PAVERESCA);
if (saldoini == 0.00) //e il conto e' patrimoniale o d'ordine
if ( (indbil == 1)||(indbil == 2)||(indbil == 5) )
if (saldoini == ZERO) //e il conto e' patrimoniale o d'ordine
if ( indbil == 1 || indbil == 2 || indbil == 5 )
saldoini = saldofin_esprec(annoes, g, c, s);
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;
}
// 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,
int indbil, bool controllo_competenza, const TDate& inizio_es,
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;
}
else
if (!calcola_ultima_immissione(annoes, annoesprec, g, c, s, indbil))
if (!calcola_ultima_immissione(annoes,annoesprec, g, c, s, indbil))
return FALSE;
return TRUE;
}
*/
const char* Saldo::causale_chiusura_es()
{
@ -155,37 +142,29 @@ const char* Saldo::causale_apertura_es()
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;
TDate datareg;
TLocalisamfile& mov = *_mov;
TLocalisamfile mov(LF_MOV, FALSE);
mov.zero();
mov.put (MOV_NUMREG,nr);
if (mov.read() == NOERR)
{
codcaus = mov.get(MOV_CODCAUS);
datareg = mov.get_date(MOV_DATAREG);
provv = mov.get(MOV_PROVVIS);
if (codcaus == causale_chiusura_es())
return TRUE;
if (codcaus == causale_apertura_es())
if ( (datareg < inizio_es) || (datareg > data_sup) )
return TRUE;
}
return FALSE;
_codcaus = mov.get(MOV_CODCAUS);
_datareg = mov.get_date(MOV_DATAREG);
_provv = mov.get_char(MOV_PROVVIS);
_datacomp = mov.get_date(MOV_DATACOMP);
}
}
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 = "";
real importo, dep = 0.00;
real importo, dep = ZERO;
int gruppo, conto, annoe;
long sottoconto, num_reg;
TLocalisamfile& rmov = *_rmov;
TLocalisamfile rmov(LF_RMOV, FALSE);
TDate data_rmv;
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);
//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))
break;
//if (causale_mov(num_reg,inizio_es,data_sup,provv))
// break;
if ((!stp_prov) && (provv.trim().not_empty())) //se non e' richiesta stampa
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;
}
/*
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,
long s, int indbil)
{
@ -265,7 +335,7 @@ long s, int indbil)
char sezione;
int gruppo, conto, annoe;
long sottoconto;
TLocalisamfile& saldi = *_saldi;
TLocalisamfile saldi(LF_SALDI, FALSE);
bool esito = TRUE;
_saldo_iniziale = ZERO;
@ -326,22 +396,70 @@ long s, int indbil)
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();
// 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 (g != 0) saldi.put(SLD_GRUPPO,g);
if (c != 0) saldi.put(SLD_CONTO,c);
if (s != 0) saldi.put(SLD_SOTTOCONTO,s);
saldi.read();
if (saldi.bad()) saldi.zero();
if (saldi.read() != NOERR) saldi.zero();
*_rec = saldi.curr();
return *_rec;
}
@ -353,7 +471,7 @@ bool Saldo::prg_attuali(int annoes,TConto& conto,int indbil,real& prgdare,real&
int g = conto.gruppo();
int c = conto.conto();
long s = conto.sottoconto();
TLocalisamfile& saldi = *_saldi;
TLocalisamfile saldi(LF_SALDI, FALSE);
saldi.zero();
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;
char flagsalini;
TLocalisamfile& saldi = *_saldi;
TLocalisamfile saldi(LF_SALDI, FALSE);
saldi.zero();
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);
if ( (indbil == 1) || (indbil == 2) || (indbil == 5) )
if (saldoini == 0)
if (saldoini == ZERO)
{
saldoini = saldofin_esprec(annoes,conto.gruppo(),conto.conto(),conto.sottoconto());
if (saldoini > 0.00)
if (saldoini > ZERO)
flagsalini = 'D';
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)/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
$(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
$(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)/cg2103.o $(O)/conto.o
$(EP)cg0.frl: cg0.url $(U1)
$(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)/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)
@ -115,8 +114,8 @@ $(O)/cglib03.o: cglib03.cpp $(I24) $(I31) $(I33) $(I40) $(I42) $(I51) cglib.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
$(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
$(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 $(O)/cg2103.o
$(EP)cg3.frl: cg3.url $(U1)
$(RCOMP) cg3 -l $(EP)cg3