Aggiunta selezione per partita IVA in stampa e visualizzazione mastrini
Migliorata stampa liquidazione IVA differita git-svn-id: svn://10.65.10.50/branches/R_10_00@22719 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6b39ab9e24
commit
f498fdfba2
@ -1021,8 +1021,7 @@ void TPrimanota_application::write_scadenze(const TMask& m)
|
||||
|
||||
for (int i = 0; i < new_rate; i++)
|
||||
{
|
||||
real * r = new real;
|
||||
|
||||
real* r = new real;
|
||||
ant.add(r);
|
||||
if (i < nrate)
|
||||
*r = partita.rata(i + 1).get_real(SCAD_IMPORTOANT);
|
||||
|
151
cg/cg3200.cpp
151
cg/cg3200.cpp
@ -155,7 +155,7 @@ public:
|
||||
int ricerca_clifo(int riga);
|
||||
int ricerca_gruppo(int riga);
|
||||
|
||||
void calcola_progressivi(bool finali = FALSE);
|
||||
void calcola_progressivi(bool finali = false);
|
||||
void calcola_progressivi_al(const TDate& data);
|
||||
int stampa_progressivi(int start_riga);
|
||||
int stampa_progre_riporto(int start_riga);
|
||||
@ -554,7 +554,7 @@ int TMastrini_application::date2esc(const TDate& d)
|
||||
|
||||
bool TMastrini_application::almeno_un_record()
|
||||
{
|
||||
bool trovato=FALSE;
|
||||
bool trovato = false;
|
||||
|
||||
if (current_cursor()->is_first_match(LF_RMOV))
|
||||
{
|
||||
@ -564,6 +564,7 @@ bool TMastrini_application::almeno_un_record()
|
||||
TRelation rel(LF_RMOV);
|
||||
rel.add(LF_MOV, "NUMREG==NUMREG");
|
||||
TRectype& rmov = rel.curr();
|
||||
const TRectype& mov = rel.curr(LF_MOV);
|
||||
|
||||
rmov.zero();
|
||||
rmov.put(RMV_GRUPPO, _gruppo);
|
||||
@ -575,28 +576,17 @@ bool TMastrini_application::almeno_un_record()
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
const int annoes = rmov.get_int (RMV_ANNOES);
|
||||
const long numreg = rmov.get_long(RMV_NUMREG);
|
||||
|
||||
const TRectype & mov = cache().get(LF_MOV, numreg);
|
||||
|
||||
const TDate datacomp = (mov.get_date(MOV_DATACOMP));
|
||||
const TString16 provvis (mov.get(MOV_PROVVIS));
|
||||
|
||||
|
||||
TDate datareg;
|
||||
if (_annomsk == 0)
|
||||
datareg = rmov.get_date(RMV_DATAREG);
|
||||
else
|
||||
datareg = datacomp;
|
||||
|
||||
const TString4 provvis (mov.get(MOV_PROVVIS));
|
||||
const TDate datareg = _annomsk ? mov.get_date(MOV_DATACOMP) : rmov.get_date(RMV_DATAREG);
|
||||
if ( ((annoes==_annomsk) || (_annomsk==0)) && ((datareg>=_data_ini) && (datareg<=_data_fine)) && (_stampa_mov_prov || provvis.blank()))
|
||||
{
|
||||
trovato = TRUE;
|
||||
trovato = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
rmov_file.readat(record);
|
||||
}
|
||||
|
||||
return trovato;
|
||||
}
|
||||
|
||||
@ -2186,24 +2176,28 @@ void TMastrini_application::descrizione_causale()
|
||||
|
||||
void TMastrini_application::documenti_iva()
|
||||
{
|
||||
TString dep;
|
||||
|
||||
_tabtpd->curr().zero();
|
||||
dep << format ("%2s",(const char*) _tipodoc);
|
||||
_tabtpd->curr().put("CODTAB", (const char*) dep);
|
||||
_tabtpd->read();
|
||||
_descrdociva = _tabtpd->curr().get("S0");
|
||||
_natdoc = atoi(_tabtpd->curr().get("I0"));
|
||||
_tabtpd->zero();
|
||||
if (_tipodoc.full())
|
||||
{
|
||||
TString4 dep;
|
||||
dep.format("%2s",(const char*) _tipodoc);
|
||||
_tabtpd->put("CODTAB", dep);
|
||||
_tabtpd->read();
|
||||
}
|
||||
_descrdociva = _tabtpd->get("S0");
|
||||
_natdoc = atoi(_tabtpd->get("I0"));
|
||||
}
|
||||
|
||||
void TMastrini_application::ricerca_regiva()
|
||||
{
|
||||
TString16 dep;
|
||||
_tabreg->curr().zero();
|
||||
dep << format("%04d", _annoiva);
|
||||
dep << format("%3s" , (const char*) _regiva);
|
||||
_tabreg->curr().put("CODTAB", (const char*) dep);
|
||||
_tabreg->read();
|
||||
_tabreg->zero();
|
||||
if (_annoiva > 0 && _regiva.full())
|
||||
{
|
||||
TString8 dep;
|
||||
dep.format("%04d%3s", _annoiva, (const char*)_regiva);
|
||||
_tabreg->put("CODTAB", dep);
|
||||
_tabreg->read();
|
||||
}
|
||||
_tipo = _tabreg->get_int("I0");
|
||||
}
|
||||
|
||||
@ -2501,11 +2495,9 @@ void TMastrini_application::conto(int gruppo, int conto, bool no_contropartita)
|
||||
|
||||
void TMastrini_application::ricerca_dati_ditta()
|
||||
{
|
||||
long app;
|
||||
|
||||
const TRectype & nditte = cache().get(LF_NDITTE, _codice_ditta);
|
||||
|
||||
app = nditte.get_long(NDT_CODDITTA);
|
||||
const long app = nditte.get_long(NDT_CODDITTA);
|
||||
_ragsoc = nditte.get(NDT_RAGSOC);
|
||||
|
||||
TString16 key;
|
||||
@ -2923,20 +2915,35 @@ int TMastrini_application::stampa_progre_riporto(int start_riga)
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void TMastrini_application::calcola_progressivi_al(const TDate& data_fin)
|
||||
{
|
||||
static TBill _last_bill;
|
||||
static TDate _last_date, _last_inizio;
|
||||
static int _last_year;
|
||||
static bool _last_provv;
|
||||
static real _last_dare, _last_avere;
|
||||
|
||||
const TDate data_inizio = _annomsk ? _data_inizioese : _inizioes;
|
||||
|
||||
if (_annomsk == _last_year && data_inizio == _last_inizio && data_fin == _last_date &&
|
||||
_last_provv == _stampa_mov_prov && _last_bill == TBill(_gruppo, _conto, _sottoc))
|
||||
{
|
||||
_totale_prima_dare = _last_dare;
|
||||
_totale_prima_avere = _last_avere;
|
||||
return;
|
||||
}
|
||||
|
||||
TLocalisamfile& rmov_file = current_cursor()->file(LF_RMOV);
|
||||
const TRecnotype record = rmov_file.recno();
|
||||
|
||||
_totale_prima_dare = ZERO;
|
||||
_totale_prima_avere = ZERO;
|
||||
|
||||
TRelation rel(LF_RMOV);
|
||||
rel.add(LF_MOV, "NUMREG==NUMREG");
|
||||
TRectype& rmov = rel.curr();
|
||||
// const TRectype& mov = rel.curr(LF_MOV);
|
||||
const TRectype& mov = rel.curr(LF_MOV);
|
||||
|
||||
TRectype& rmov = rel.curr();
|
||||
|
||||
rmov.zero();
|
||||
rmov.put(RMV_GRUPPO, _gruppo);
|
||||
rmov.put(RMV_CONTO, _conto);
|
||||
@ -2944,52 +2951,40 @@ void TMastrini_application::calcola_progressivi_al(const TDate& data_fin)
|
||||
TCursor cur(&rel, "", 2, &rmov, &rmov);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
_totale_prima_dare = ZERO;
|
||||
_totale_prima_avere = ZERO;
|
||||
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
const int annoes = rmov.get_int (RMV_ANNOES);
|
||||
TDate datareg = rmov.get_date(RMV_DATAREG);
|
||||
const char sezione = rmov.get_char(RMV_SEZIONE);
|
||||
const real importo = rmov.get_real(RMV_IMPORTO);
|
||||
long numreg = rmov.get_long(RMV_NUMREG);
|
||||
|
||||
const TRectype & mov = cache().get(LF_MOV, numreg);
|
||||
const TDate datacomp = (mov.get_date(MOV_DATACOMP));
|
||||
TDate data;
|
||||
const TString16 provvis (mov.get(MOV_PROVVIS));
|
||||
|
||||
|
||||
if (_stampa_mov_prov || (!_stampa_mov_prov && provvis.blank()))
|
||||
if (_stampa_mov_prov || mov.get(MOV_PROVVIS).blank())
|
||||
{
|
||||
if (_annomsk == 0)
|
||||
const int annoes = rmov.get_int (RMV_ANNOES);
|
||||
const TDate datareg = mov.get_date(_annomsk ? MOV_DATACOMP : RMV_DATAREG);
|
||||
|
||||
//Legge movimenti con data > inizio esercizio e < data_fin
|
||||
if (((annoes==_annomsk)||(_annomsk == 0))&&(datareg >= data_inizio)&&(datareg <= data_fin))
|
||||
{
|
||||
datareg = rmov.get_date(RMV_DATAREG);
|
||||
data = _inizioes;
|
||||
const char sezione = rmov.get_char(RMV_SEZIONE);
|
||||
const real importo = rmov.get_real(RMV_IMPORTO);
|
||||
if (sezione == 'D')
|
||||
_totale_prima_dare += importo;
|
||||
else
|
||||
_totale_prima_avere += importo;
|
||||
}
|
||||
else
|
||||
{
|
||||
datareg = datacomp;
|
||||
data = _data_inizioese;
|
||||
}
|
||||
|
||||
const int gruppo = rmov.get_int(RMV_GRUPPO);
|
||||
const int conto = rmov.get_int(RMV_CONTO);
|
||||
const long sottoc = rmov.get_long(RMV_SOTTOCONTO);
|
||||
if ((gruppo != _gruppo)||(conto != _conto)||(sottoc != _sottoc))
|
||||
break;
|
||||
else
|
||||
{
|
||||
//Legge movimenti con data > inizio esercizio e < data_fin
|
||||
if (((annoes==_annomsk)||(_annomsk == 0))&&(datareg >= data)&&(datareg <= data_fin))
|
||||
if (sezione == 'D')
|
||||
_totale_prima_dare += importo;
|
||||
else
|
||||
_totale_prima_avere += importo;
|
||||
}
|
||||
} // if ((_stampa_mov_prov) || ((!_stampa_mov_prov) && (provvis.trim().empty())))
|
||||
}
|
||||
}
|
||||
|
||||
// Riposiziona rmov
|
||||
rmov_file.readat(record);
|
||||
|
||||
_last_year = _annomsk;
|
||||
_last_date = data_fin;
|
||||
_last_inizio = data_inizio;
|
||||
_last_bill.set(_gruppo, _conto, _sottoc);
|
||||
_last_provv = _stampa_mov_prov;
|
||||
_last_dare = _totale_prima_dare;
|
||||
_last_avere = _totale_prima_avere;
|
||||
}
|
||||
|
||||
void TMastrini_application::calcola_progressivi(bool finali)
|
||||
@ -3022,7 +3017,7 @@ void TMastrini_application::calcola_progressivi(bool finali)
|
||||
{
|
||||
const int annoes_saldi = saldi.curr().get_int(SLD_ANNOES);
|
||||
|
||||
//Calcola i progressivi dell'esercizio attuale
|
||||
//Calcola i progressivi dell'esercizio attuale
|
||||
if (annoes_saldi == _anno_corrente)
|
||||
{
|
||||
progdare_attuale = saldi.get_real(SLD_PDARE);
|
||||
|
@ -15,6 +15,9 @@
|
||||
#define F_SOTTOCINI_CONTO 105
|
||||
#define F_SOTTOCINI_CLIENTE 205
|
||||
#define F_SOTTOCINI_FORN 305
|
||||
#define F_PAIVINI_CLIENTE 206
|
||||
#define F_PAIVINI_FORN 306
|
||||
|
||||
#define F_TIPOCF_FINE 106
|
||||
#define F_GRUPPOFINE 107
|
||||
#define F_CONTOFINE_CONTO 108
|
||||
@ -23,6 +26,9 @@
|
||||
#define F_SOTTOCFINE_CONTO 109
|
||||
#define F_SOTTOCFINE_CLIENTE 209
|
||||
#define F_SOTTOCFINE_FORN 309
|
||||
#define F_PAIVFINE_CLIENTE 210
|
||||
#define F_PAIVFINE_FORN 310
|
||||
|
||||
#define F_DESCRINI_CONTO 125
|
||||
#define F_DESCRINI_CLIENTE 135
|
||||
#define F_DESCRINI_FORN 145
|
||||
|
137
cg/cg3200a.uml
137
cg/cg3200a.uml
@ -29,24 +29,13 @@ END
|
||||
|
||||
DATE F_DATASTAMPA
|
||||
BEGIN
|
||||
PROMPT 1 2 "Data di stampa "
|
||||
PROMPT 1 2 "Data di stampa "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
LIST F_TIPOCF_INI 25
|
||||
BEGIN
|
||||
PROMPT 1 3 "Ricerca "
|
||||
ITEM " |Gruppo/conto/sottoconto"
|
||||
MESSAGE HIDE,2@|HIDE,3@|SHOW,1@
|
||||
ITEM "C|Clienti"
|
||||
MESSAGE HIDE,1@|HIDE,3@|SHOW,2@
|
||||
ITEM "F|Fornitori"
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 55 3 "Esercizio "
|
||||
PROMPT 51 2 "Esercizio "
|
||||
USE ESC
|
||||
INPUT CODTAB F_ANNO
|
||||
DISPLAY "Codice Esercizio" CODTAB
|
||||
@ -60,15 +49,26 @@ BEGIN
|
||||
ADD NONE
|
||||
END
|
||||
|
||||
LIST F_TIPOCF_INI 25
|
||||
BEGIN
|
||||
PROMPT 1 3 "Ricerca "
|
||||
ITEM " |Gruppo/conto/sottoconto"
|
||||
MESSAGE HIDE,2@|HIDE,3@|SHOW,1@
|
||||
ITEM "C|Clienti"
|
||||
MESSAGE HIDE,1@|HIDE,3@|SHOW,2@
|
||||
ITEM "F|Fornitori"
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPOINI 3
|
||||
BEGIN
|
||||
PROMPT 1 4 "Da Gruppo - Conto - Sottoconto "
|
||||
PROMPT 1 4 "Dal Conto "
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
NUMBER F_CONTOINI_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 39 4 ""
|
||||
PROMPT 22 4 ""
|
||||
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")
|
||||
INPUT GRUPPO F_GRUPPOINI
|
||||
INPUT CONTO F_CONTOINI_CONTO
|
||||
@ -87,7 +87,7 @@ END
|
||||
|
||||
NUMBER F_SOTTOCINI_CONTO 6
|
||||
BEGIN
|
||||
PROMPT 48 4 ""
|
||||
PROMPT 29 4 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GRUPPOINI
|
||||
INPUT CONTO F_CONTOINI_CONTO
|
||||
@ -106,7 +106,7 @@ END
|
||||
|
||||
STRING F_DESCRINI_CONTO 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Descrizione "
|
||||
PROMPT 1 5 "Descrizione "
|
||||
USE LF_PCON KEY 2
|
||||
CHECKTYPE NORMAL
|
||||
INPUT DESCR F_DESCRINI_CONTO
|
||||
@ -120,7 +120,7 @@ END
|
||||
|
||||
NUMBER F_SOTTOCINI_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 48 4 ""
|
||||
PROMPT 29 4 ""
|
||||
USE LF_CLIFO
|
||||
CHECKTYPE NORMAL
|
||||
INPUT TIPOCF "C"
|
||||
@ -129,15 +129,34 @@ BEGIN
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
OUTPUT F_SOTTOCINI_CLIENTE CODCF
|
||||
OUTPUT F_DESCRINI_CLIENTE RAGSOC
|
||||
OUTPUT F_PAIVINI_CLIENTE PAIV
|
||||
MESSAGE COPY,F_SOTTOCINI_CONTO
|
||||
GROUP 2 9
|
||||
END
|
||||
|
||||
STRING F_PAIVINI_CLIENTE 12
|
||||
BEGIN
|
||||
PROMPT 43 4 "Partita IVA "
|
||||
USE LF_CLIFO KEY 5
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente o mancante"
|
||||
INPUT TIPOCF "C"
|
||||
INPUT PAIV F_PAIVINI_CLIENTE
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_SOTTOCINI_CLIENTE
|
||||
GROUP 2 9
|
||||
END
|
||||
|
||||
STRING F_DESCRINI_CLIENTE 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Ragione sociale "
|
||||
PROMPT 1 5 "Ragione sociale "
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
@ -153,7 +172,7 @@ END
|
||||
|
||||
NUMBER F_SOTTOCINI_FORN 6
|
||||
BEGIN
|
||||
PROMPT 48 4 ""
|
||||
PROMPT 29 4 ""
|
||||
USE LF_CLIFO
|
||||
CHECKTYPE NORMAL
|
||||
INPUT TIPOCF "F"
|
||||
@ -162,16 +181,34 @@ BEGIN
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
OUTPUT F_SOTTOCINI_FORN CODCF
|
||||
OUTPUT F_DESCRINI_FORN RAGSOC
|
||||
FLAGS "R"
|
||||
OUTPUT F_PAIVINI_FORN PAIV
|
||||
GROUP 3 9
|
||||
MESSAGE COPY,F_SOTTOCINI_CONTO
|
||||
END
|
||||
|
||||
STRING F_PAIVINI_FORN 12
|
||||
BEGIN
|
||||
PROMPT 43 4 "Partita IVA "
|
||||
USE LF_CLIFO KEY 5
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore inesistente o mancante"
|
||||
INPUT TIPOCF "F"
|
||||
INPUT PAIV F_PAIVINI_FORN
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_SOTTOCINI_FORN
|
||||
GROUP 3 9
|
||||
END
|
||||
|
||||
STRING F_DESCRINI_FORN 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Ragione Sociale "
|
||||
PROMPT 1 5 "Ragione Sociale "
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC F_DESCRINI_FORN
|
||||
@ -186,7 +223,7 @@ END
|
||||
|
||||
LIST F_TIPOCF_FINE 25
|
||||
BEGIN
|
||||
PROMPT 1 6 "Ricerca "
|
||||
PROMPT 1 6 "Ricerca "
|
||||
ITEM " |Gruppo/conto/sottoconto"
|
||||
MESSAGE HIDE,5@|HIDE,6@|SHOW,4@
|
||||
ITEM "C|Clienti"
|
||||
@ -197,13 +234,13 @@ END
|
||||
|
||||
NUMBER F_GRUPPOFINE 3
|
||||
BEGIN
|
||||
PROMPT 1 7 "A Gruppo - Conto - Sottoconto "
|
||||
PROMPT 1 7 "Al Conto "
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
NUMBER F_CONTOFINE_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 39 7 ""
|
||||
PROMPT 22 7 ""
|
||||
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="") /* &&(TMCF="") */
|
||||
INPUT GRUPPO F_GRUPPOFINE
|
||||
INPUT CONTO F_CONTOFINE_CONTO
|
||||
@ -223,7 +260,7 @@ END
|
||||
|
||||
NUMBER F_SOTTOCFINE_CONTO 6
|
||||
BEGIN
|
||||
PROMPT 48 7 ""
|
||||
PROMPT 29 7 ""
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
INPUT GRUPPO F_GRUPPOFINE
|
||||
INPUT CONTO F_CONTOFINE_CONTO
|
||||
@ -243,7 +280,7 @@ END
|
||||
|
||||
STRING F_DESCRFINE_CONTO 50
|
||||
BEGIN
|
||||
PROMPT 1 8 "Descrizione "
|
||||
PROMPT 1 8 "Descrizione "
|
||||
USE LF_PCON KEY 2
|
||||
CHECKTYPE NORMAL
|
||||
INPUT DESCR F_DESCRFINE_CONTO
|
||||
@ -257,7 +294,7 @@ END
|
||||
|
||||
NUMBER F_SOTTOCFINE_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 48 7 ""
|
||||
PROMPT 29 7 ""
|
||||
USE LF_CLIFO
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente o mancante"
|
||||
@ -265,17 +302,36 @@ BEGIN
|
||||
INPUT CODCF F_SOTTOCFINE_CLIENTE
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
OUTPUT F_SOTTOCFINE_CLIENTE CODCF
|
||||
OUTPUT F_DESCRFINE_CLIENTE RAGSOC
|
||||
OUTPUT F_PAIVFINE_CLIENTE PAIV
|
||||
MESSAGE COPY,F_SOTTOCFINE_CONTO
|
||||
GROUP 5 9
|
||||
END
|
||||
|
||||
STRING F_PAIVFINE_CLIENTE 12
|
||||
BEGIN
|
||||
PROMPT 43 7 "Partita IVA "
|
||||
USE LF_CLIFO KEY 5
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente o mancante"
|
||||
INPUT TIPOCF "C"
|
||||
INPUT PAIV F_PAIVFINE_CLIENTE
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_SOTTOCFINE_CLIENTE
|
||||
GROUP 5 9
|
||||
END
|
||||
|
||||
STRING F_DESCRFINE_CLIENTE 50
|
||||
BEGIN
|
||||
PROMPT 1 8 "Ragione sociale "
|
||||
PROMPT 1 8 "Ragione sociale "
|
||||
FIELD LF_CLIFO->RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
USE LF_CLIFO KEY 2
|
||||
@ -292,7 +348,7 @@ END
|
||||
|
||||
NUMBER F_SOTTOCFINE_FORN 6
|
||||
BEGIN
|
||||
PROMPT 48 7 ""
|
||||
PROMPT 29 7 ""
|
||||
USE LF_CLIFO
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore inesistente o mancante"
|
||||
@ -300,17 +356,36 @@ BEGIN
|
||||
INPUT CODCF F_SOTTOCFINE_FORN
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
OUTPUT F_SOTTOCFINE_FORN CODCF
|
||||
OUTPUT F_DESCRFINE_FORN RAGSOC
|
||||
OUTPUT F_PAIVFINE_FORN PAIV
|
||||
MESSAGE COPY,F_SOTTOCFINE_CONTO
|
||||
GROUP 6 9
|
||||
END
|
||||
|
||||
STRING F_PAIVFINE_FORN 12
|
||||
BEGIN
|
||||
PROMPT 43 7 "Partita IVA "
|
||||
USE LF_CLIFO KEY 5
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Cliente inesistente o mancante"
|
||||
INPUT TIPOCF "F"
|
||||
INPUT PAIV F_PAIVFINE_CLIENTE
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_SOTTOCFINE_FORN
|
||||
GROUP 6 9
|
||||
END
|
||||
|
||||
STRING F_DESCRFINE_FORN 50
|
||||
BEGIN
|
||||
PROMPT 1 8 "Ragione Sociale "
|
||||
PROMPT 1 8 "Ragione Sociale "
|
||||
USE LF_CLIFO KEY 2
|
||||
CHECKTYPE NORMAL
|
||||
INPUT TIPOCF "F"
|
||||
|
@ -7,10 +7,17 @@
|
||||
#define F_DESCONTO 107
|
||||
#define F_SOTTOCONTO 108
|
||||
#define F_DESSOTTOC 109
|
||||
|
||||
#define F_CLIENTE 206
|
||||
#define F_RAGSOCCLI 207
|
||||
#define F_PAIVCLI 208
|
||||
#define F_COFICLI 209
|
||||
|
||||
#define F_FORNITORE 306
|
||||
#define F_RAGSOCFOR 307
|
||||
#define F_PAIVFOR 308
|
||||
#define F_COFIFOR 309
|
||||
|
||||
#define F_ESERCIZIO 110
|
||||
#define F_DADATA 111
|
||||
#define F_ADATA 112
|
||||
|
@ -46,7 +46,7 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 6
|
||||
GROUPBOX DLG_NULL 76 7
|
||||
BEGIN
|
||||
PROMPT 1 4 "@bConto del mastrino"
|
||||
FLAGS "R"
|
||||
@ -122,6 +122,8 @@ BEGIN
|
||||
DISPLAY "Codice Fiscale" COFI
|
||||
OUTPUT F_CLIENTE CODCF
|
||||
OUTPUT F_RAGSOCCLI RAGSOC
|
||||
OUTPUT F_PAIVCLI PAIV
|
||||
OUTPUT F_COFICLI COFI
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Cliente assente"
|
||||
GROUP 2 4
|
||||
@ -136,6 +138,8 @@ BEGIN
|
||||
COPY DISPLAY F_CLIENTE
|
||||
OUTPUT F_FORNITORE CODCF
|
||||
OUTPUT F_RAGSOCFOR RAGSOC
|
||||
OUTPUT F_PAIVFOR PAIV
|
||||
OUTPUT F_COFIFOR COFI
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Fornitore assente"
|
||||
GROUP 3 4
|
||||
@ -208,15 +212,75 @@ BEGIN
|
||||
GROUP 3 4
|
||||
END
|
||||
|
||||
STRING F_COFICLI 16
|
||||
BEGIN
|
||||
PROMPT 2 9 "Codice Fiscale "
|
||||
USE LF_CLIFO KEY 4
|
||||
INPUT TIPOCF "C"
|
||||
INPUT COFI F_COFICLI
|
||||
DISPLAY "Codice Fiscale" COFI
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 2 4
|
||||
END
|
||||
|
||||
STRING F_PAIVCLI 12
|
||||
BEGIN
|
||||
PROMPT 49 9 "Partita IVA "
|
||||
USE LF_CLIFO KEY 5
|
||||
INPUT TIPOCF "C"
|
||||
INPUT PAIV F_PAIVCLI
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Codice Fiscale" COFI
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 2 4
|
||||
END
|
||||
|
||||
STRING F_COFIFOR 16
|
||||
BEGIN
|
||||
PROMPT 2 9 "Codice Fiscale "
|
||||
USE LF_CLIFO KEY 4
|
||||
INPUT TIPOCF "F"
|
||||
INPUT COFI F_COFIFOR
|
||||
DISPLAY "Codice Fiscale" COFI
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
COPY OUTPUT F_FORNITORE
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 3 4
|
||||
END
|
||||
|
||||
STRING F_PAIVFOR 12
|
||||
BEGIN
|
||||
PROMPT 49 9 "Partita IVA "
|
||||
USE LF_CLIFO KEY 5
|
||||
INPUT TIPOCF "F"
|
||||
INPUT PAIV F_PAIVFOR
|
||||
DISPLAY "Partita IVA" PAIV
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Codice Fiscale" COFI
|
||||
COPY OUTPUT F_FORNITORE
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 3 4
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "@bPeriodo"
|
||||
PROMPT 1 11 "@bPeriodo"
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 2 11 "Cod. esercizio "
|
||||
PROMPT 2 12 "Cod. esercizio "
|
||||
FLAGS "Z"
|
||||
USE ESC
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
@ -230,35 +294,35 @@ END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 26 11 "Dalla data "
|
||||
PROMPT 26 12 "Dalla data "
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 52 11 "Alla data "
|
||||
PROMPT 52 12 "Alla data "
|
||||
VALIDATE DATE_CMP_FUNC >= F_DADATA
|
||||
WARNING "La data finale deve essere maggiore di quella iniziale"
|
||||
END
|
||||
|
||||
BOOLEAN F_PROVVIS
|
||||
BEGIN
|
||||
PROMPT 2 12 "Includi movimenti provvisori"
|
||||
PROMPT 2 13 "Includi movimenti provvisori"
|
||||
END
|
||||
|
||||
BOOLEAN F_END
|
||||
BEGIN
|
||||
PROMPT 40 12 "Posizionamento in fondo al mastrino"
|
||||
PROMPT 40 13 "Posizionamento in fondo al mastrino"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 14 "@bCausali"
|
||||
PROMPT 1 15 "@bCausali"
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
STRING F_DACAUSALE 3
|
||||
BEGIN
|
||||
PROMPT 2 15 "Da causale "
|
||||
PROMPT 2 16 "Da causale "
|
||||
FLAGS "UZ"
|
||||
USE LF_CAUSALI
|
||||
INPUT CODCAUS F_DACAUSALE
|
||||
@ -274,7 +338,7 @@ END
|
||||
|
||||
STRING F_DADESCAUS 50
|
||||
BEGIN
|
||||
PROMPT 23 15 ""
|
||||
PROMPT 23 16 ""
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DADESCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
@ -286,7 +350,7 @@ END
|
||||
|
||||
STRING F_ACAUSALE 3
|
||||
BEGIN
|
||||
PROMPT 2 16 "A causale "
|
||||
PROMPT 2 17 "A causale "
|
||||
FLAGS "UZ"
|
||||
COPY USE F_DACAUSALE
|
||||
INPUT CODCAUS F_ACAUSALE
|
||||
@ -301,7 +365,7 @@ END
|
||||
|
||||
STRING F_ADESCAUS 50
|
||||
BEGIN
|
||||
PROMPT 23 16 ""
|
||||
PROMPT 23 17 ""
|
||||
COPY USE F_DADESCAUS
|
||||
INPUT DESCR F_ADESCAUS
|
||||
COPY DISPLAY F_DADESCAUS
|
||||
@ -312,7 +376,7 @@ END
|
||||
|
||||
BOOLEAN F_ST_CONTSEP
|
||||
BEGIN
|
||||
PROMPT 2 17 "Visualizzare contabilità separata"
|
||||
PROMPT 2 18 "Visualizzare contabilità separata"
|
||||
MODULE NP
|
||||
END
|
||||
|
||||
|
@ -24,7 +24,8 @@
|
||||
|
||||
#include "cglib02.h"
|
||||
|
||||
struct therec {
|
||||
struct therec
|
||||
{
|
||||
char DATAREG[9];
|
||||
char REG[4];
|
||||
char DATADOC[9];
|
||||
@ -44,9 +45,6 @@ public:
|
||||
|
||||
void sort_all();
|
||||
bool sort_sal();
|
||||
|
||||
CG4100_App() {}
|
||||
virtual ~CG4100_App() {}
|
||||
};
|
||||
|
||||
bool CG4100_App::set_parms()
|
||||
@ -58,10 +56,8 @@ bool CG4100_App::set_parms()
|
||||
|
||||
void CG4100_App::main_loop()
|
||||
{
|
||||
|
||||
if (fexist("__sal__.sav"))
|
||||
warning_box(TR("Un'operazione di riordino saldi si e' conclusa"
|
||||
" impropriamente. Si raccomanda di rieseguirla"));
|
||||
warning_box(TR("Un'operazione di riordino saldi si e' conclusa impropriamente. Si raccomanda di rieseguirla"));
|
||||
|
||||
_msk = new TMask("cg4100b");
|
||||
|
||||
|
@ -31,7 +31,7 @@ bool _Iva11Array::add(const real& val, const char* fld_name, int num_file)
|
||||
|
||||
bool _Iva11Array::sub(const real& val, const char* fld_name, int num_file)
|
||||
{
|
||||
const real v1 = val * (-1.0);
|
||||
const real v1 = -val;
|
||||
return add(v1,fld_name, num_file);
|
||||
}
|
||||
|
||||
@ -51,21 +51,26 @@ void _Iva11Array::zero(const char* fld_name)
|
||||
// se la % prorata relativa all'anno indicato non esiste, ritorna 0
|
||||
real _ProrataItem::calc_prorata(const real& acq, const char* year)
|
||||
{
|
||||
const real* perc = (const real*)_percentuali.objptr(year);
|
||||
if (perc)
|
||||
real prorata;
|
||||
const real& perc = percentuale(year);
|
||||
if (perc != INVALID_PRORATA && perc > ZERO)
|
||||
{
|
||||
real prorata = acq * (*perc) / CENTO;
|
||||
prorata.round(TCurrency::get_firm_dec());
|
||||
return prorata;
|
||||
if (perc < CENTO)
|
||||
{
|
||||
prorata = acq * perc / CENTO;
|
||||
prorata.round(TCurrency::get_firm_dec());
|
||||
}
|
||||
else
|
||||
prorata = acq;
|
||||
}
|
||||
return ZERO;
|
||||
return prorata;
|
||||
}
|
||||
|
||||
// Ritorna la % prorata relativa all'anno indicato. Se non esiste internamente
|
||||
// viene ritornato INVALID_PRORATA
|
||||
const real& _ProrataItem::percentuale(const char * year) const
|
||||
const real& _ProrataItem::percentuale(const char* year) const
|
||||
{
|
||||
const real* p = (real*)_percentuali.objptr(year);
|
||||
const real* p = (const real*)_percentuali.objptr(year);
|
||||
if (p && !p->is_zero())
|
||||
return *p;
|
||||
return INVALID_PRORATA;
|
||||
@ -616,9 +621,10 @@ void TLiquidazione_app::build_nomiditte(TProgind* pnd)
|
||||
if (!look_lia(dt.get_long("CODDITTA")))
|
||||
good = FALSE;
|
||||
}
|
||||
else continue;
|
||||
else
|
||||
continue;
|
||||
|
||||
TToken_string* d = new TToken_string(64);
|
||||
TToken_string* d = new TToken_string(63);
|
||||
|
||||
// add record
|
||||
d->add(dt.get("CODDITTA"));
|
||||
@ -635,7 +641,8 @@ void TLiquidazione_app::build_nomiditte(TProgind* pnd)
|
||||
}
|
||||
_nomiditte.add(d);
|
||||
}
|
||||
if (pnd) pnd->addstatus(1);
|
||||
if (pnd)
|
||||
pnd->addstatus(1);
|
||||
}
|
||||
|
||||
bool TLiquidazione_app::to_ditt_handler(TMask_field& f, KEY key)
|
||||
|
@ -450,7 +450,8 @@ protected:
|
||||
static bool chk_final_handler(TMask_field& f, KEY key);
|
||||
|
||||
static TLiquidazione_app& app() { return (TLiquidazione_app&)main_app(); }
|
||||
|
||||
bool print_diff_log(int& rw);
|
||||
|
||||
public:
|
||||
|
||||
virtual bool user_create();
|
||||
|
252
cg/cg4301.cpp
252
cg/cg4301.cpp
@ -160,6 +160,12 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
||||
TConfig c(CONFIG_DITTA);
|
||||
|
||||
_isdiff = c.get_bool("GesLiqDiff");
|
||||
if (_isdiff)
|
||||
{
|
||||
TFilename tmp; tmp.tempdir();
|
||||
tmp.add("liqdiff.txt");
|
||||
ofstream log(tmp);
|
||||
}
|
||||
|
||||
if (month == 13 && recalc)
|
||||
{
|
||||
@ -546,7 +552,7 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
||||
for (_pia->first(); !_pia->eof(); _pia->next())
|
||||
{
|
||||
const int m = atoi(*_pia_mese);
|
||||
const TString16 att = (const char*)*_pia_codatt;
|
||||
const TString8 att = (const char*)*_pia_codatt;
|
||||
if (m == month && att == codatt && (_year == *_pia_anno))
|
||||
{
|
||||
_pia->put("R0",""); // Imponibile
|
||||
@ -561,9 +567,9 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
||||
}
|
||||
|
||||
void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
// il codatt passato e' codice att + tipo att ( IN {1|2} )
|
||||
// occhecasino. Se _comp_acconto e' TRUE, i movimenti considerati
|
||||
// saranno solo quelli di dicembre per data <= 20/12;
|
||||
// il codatt passato e' codice att + tipo att ( IN {1|2} )
|
||||
// occhecasino. Se _comp_acconto e' TRUE, i movimenti considerati
|
||||
// saranno solo quelli di dicembre per data <= 20/12;
|
||||
{
|
||||
const bool has_sc = has_module(SCAUT, CHK_DONGLE);
|
||||
real totintra = ZERO;
|
||||
@ -709,8 +715,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
TString8 fromreg("~"), toreg("0");
|
||||
|
||||
{
|
||||
TRelation * regrel = new TRelation("REG");
|
||||
TCursor reg(regrel);
|
||||
TRelation regrel("REG");
|
||||
TCursor reg(®rel);
|
||||
TString4 codreg;
|
||||
const int items = reg.items();
|
||||
|
||||
@ -723,8 +729,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
if (codreg > toreg)
|
||||
toreg = codreg;
|
||||
}
|
||||
|
||||
delete regrel;
|
||||
}
|
||||
|
||||
//TDate f(1, month == 13 ? 1 : month, year_int);
|
||||
@ -813,17 +817,20 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
const bool fattrit = rcs.get_bool("RITFATT");
|
||||
const bool cau_intra = rcs.get_bool("INTRACOM");
|
||||
const bool cau_valintra = rcs.get_bool("VALINTRA");
|
||||
|
||||
// Inizio gestione IVA differita
|
||||
const bool movdiff = _isdiff && _mov->get_bool(MOV_LIQDIFF);
|
||||
|
||||
// Se c'è data incasso, normalmente vuol dire che: NO saldaconto e pagamento completo
|
||||
TDate datainc = _mov->get_date(MOV_DATAINC);
|
||||
|
||||
if (movdiff && !datainc.ok())
|
||||
{
|
||||
const long codcf = _mov->get_long(MOV_CODCF);
|
||||
TString8 key(_mov->get(MOV_TIPO)); key << "|" << codcf;
|
||||
const TRectype & clifo = cache().get(LF_CLIFO, key);
|
||||
|
||||
if (clifo.get_int(CLI_ALLEG) < 7) // non e' un ente pubblico
|
||||
// se non e' un ente pubblico forzo data incasso un anno dopo il documento
|
||||
if (clifo.get_int(CLI_ALLEG) < 7)
|
||||
{
|
||||
datainc = _mov->get_date(MOV_DATADOC);
|
||||
if (datainc.ok())
|
||||
@ -831,70 +838,67 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
}
|
||||
}
|
||||
|
||||
// datainc_ok significa che la data incasso è compresa nel periodo di liquidazione in corso di calcolo
|
||||
bool datainc_ok = is_date_ok(datainc, month, liqmonth, year_int);
|
||||
const bool diffpayed = movdiff && datainc_ok;
|
||||
const bool difftopay = movdiff && !diffpayed;
|
||||
|
||||
// Se ho fatto un pagamento differito porto la data di registrazione alla data incasso
|
||||
if (diffpayed)
|
||||
date = datainc;
|
||||
|
||||
real pagatt;
|
||||
real ncatt;
|
||||
real totfat;
|
||||
TImporto pagprec;
|
||||
TImporto pag;
|
||||
TImporto ncprec;
|
||||
TImporto nc;
|
||||
real totfat, pagatt, ncatt;
|
||||
bool dok = is_date_ok(date, month, liqmonth, year_int);
|
||||
TPartite_array arrpart;
|
||||
const long numreg = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
TPartite_array arrpart; // Partite interessate
|
||||
TPointer_array pagscatt; // Righe di pagsca interessate
|
||||
|
||||
const long numreg = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
// In presenza di saldaconto determino meglio la data incasso in base alle righe di pagamento
|
||||
if (has_sc && movdiff && (!datainc.ok() || datainc > inizio))
|
||||
{
|
||||
arrpart.add_numreg(numreg);
|
||||
if (arrpart.utilizzata(numreg, 1))
|
||||
//arrpart.add_numreg(numreg);
|
||||
//if (arrpart.utilizzata(numreg, 1))
|
||||
if (arrpart.add_numreg(numreg)) // Ovviamente più efficiente di quanto sopra
|
||||
{
|
||||
const int items = arrpart.items();
|
||||
const char sez = (tipomov == vendita ? 'A' : 'D');
|
||||
|
||||
// Sezione preferita per fatture decisa in base a vendita->'A' o acquisto->'D'
|
||||
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
||||
const char sezpag = tipomov == vendita ? 'A' : 'D';
|
||||
for (TPartita * p = arrpart.first(); p != NULL; p = arrpart.next())
|
||||
{
|
||||
int row = p->mov2rig(numreg, 1);
|
||||
|
||||
if (row >= 0)
|
||||
const int row = p->mov2rig(numreg, 0);
|
||||
if (row > 0)
|
||||
{
|
||||
const TRiga_partite& rp = p->riga(row);
|
||||
TImporto importo(rp.get_char(PART_SEZ), rp.get_real(PART_IMPORTO)); importo.normalize(); importo.swap_section();
|
||||
|
||||
totfat += importo.valore();
|
||||
pagprec += rp.calcola_pagato_al(false, inizio, inizio, inizio); pagprec.normalize(sez);
|
||||
pag += rp.calcola_pagato_al(false, fine, fine, fine); pag.normalize(sez);
|
||||
|
||||
// Inizio aggiunte di Bonazzi del 16/02/2012
|
||||
ncprec += rp.calcola_pagato_al(false, inizio, inizio, inizio, 0x1F); ncprec.normalize(sez);
|
||||
nc += rp.calcola_pagato_al(false, fine, fine, fine, 0x1F); nc.normalize(sez);
|
||||
// Fine aggiunte di Bonazzi del 16/02/2012
|
||||
TImporto pg, nc;
|
||||
TDate lastpg, lastnc;
|
||||
const int flag = rp.calcola_pagato_periodo(inizio+1L, fine, pg, nc, &pagscatt);
|
||||
if (flag)
|
||||
{
|
||||
TImporto importo = rp.importo(false, 0x1);
|
||||
importo.normalize(sezfat);
|
||||
totfat = importo.valore();
|
||||
CHECK(totfat >= ZERO, "Fattura negativa inattesa qui");
|
||||
if (flag & 1)
|
||||
{
|
||||
pg.normalize(sezpag);
|
||||
pagatt += pg.valore();
|
||||
}
|
||||
if (flag & 2)
|
||||
{
|
||||
nc.normalize(sezpag);
|
||||
ncatt += nc.valore();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((diffpayed && dok) || (pag.valore() > totfat))
|
||||
pag.set(sez, totfat);
|
||||
pagatt = pag.valore() - pagprec.valore();
|
||||
|
||||
// Spostato sotto 26/03/2012
|
||||
//if (pagatt > ZERO)
|
||||
// dok = true;
|
||||
|
||||
// Inizio aggiunte di Bonazzi del 16/02/2012
|
||||
ncatt = nc.valore() - ncprec.valore();
|
||||
pagatt -= ncatt;
|
||||
// Fine aggiunte di Bonazzi del 16/02/2012
|
||||
|
||||
if ((diffpayed && dok) || (pagatt > totfat))
|
||||
pagatt = totfat;
|
||||
if (pagatt > ZERO)
|
||||
dok = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
/*
|
||||
* check register present, rmoviva present and date OK
|
||||
*
|
||||
@ -907,10 +911,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
const bool sreg = !isreg;
|
||||
const bool rs8 = _reg->get("S8") != trueatt;
|
||||
const bool cmt = !_cur->is_first_match(LF_RMOVIVA);
|
||||
// const bool dok1 = dok || diffpayed;
|
||||
|
||||
if (!dok || sreg || rs8 || cmt)
|
||||
|
||||
continue;
|
||||
|
||||
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||
@ -964,20 +966,20 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
real nin_iva = ZERO; // imposta non incassati
|
||||
|
||||
look_iva(_rmoviva->get(RMI_CODIVA));
|
||||
TString4 codiva = _iva->get("CODTAB");
|
||||
TString4 tipoiva = _iva->get("S1");
|
||||
TString8 tipoes_v = _iva->get("S2");
|
||||
TString8 tipoes_a = _iva->get("S9");
|
||||
const int tipoagr = _iva->get_int("S4");
|
||||
const int tipoag = _iva->get_int("S5");
|
||||
const int tipopla = _iva->get_int("S3");
|
||||
int isrimbinfr = _iva->get_bool("B3"); // vale per calcolo rimborso se ES o NI
|
||||
const real perciva = _iva->get_real("R0") / CENTO;
|
||||
int ivarimb = !_iva->get_bool("B4"); // non escluso calcolo rimb. per al. media
|
||||
const TString4 codiva = _iva->get("CODTAB");
|
||||
const TString4 tipoiva = _iva->get("S1");
|
||||
const TString8 tipoes_v = _iva->get("S2");
|
||||
const TString8 tipoes_a = _iva->get("S9");
|
||||
const int tipoagr = _iva->get_int("S4");
|
||||
const int tipoag = _iva->get_int("S5");
|
||||
const int tipopla = _iva->get_int("S3");
|
||||
int isrimbinfr = _iva->get_bool("B3"); // vale per calcolo rimborso se ES o NI
|
||||
const real perciva = _iva->get_real("R0") / CENTO;
|
||||
int ivarimb = !_iva->get_bool("B4"); // non escluso calcolo rimb. per al. media
|
||||
|
||||
const TString8 tipocr_s = _rmoviva->get(RMI_TIPOCR);
|
||||
const int tipocr = atoi(tipocr_s);
|
||||
const bool intra = _rmoviva->get_bool(RMI_INTRA);
|
||||
const TString4 tipocr_s = _rmoviva->get(RMI_TIPOCR);
|
||||
const int tipocr = atoi(tipocr_s);
|
||||
const bool intra = _rmoviva->get_bool(RMI_INTRA);
|
||||
|
||||
// autofatture art. 17 per non residenti, con trattamento
|
||||
// speciale in liquidazione annuale
|
||||
@ -991,11 +993,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
const bool was_riv = (tipoiva != "NS") && (tipocr == 1 || tipocr ==5);
|
||||
real percind;
|
||||
const int tipoind = get_tipodet_from_rmi(_rmoviva->curr(), _mov->curr(), percind, true);
|
||||
const int decimals = TCurrency::get_firm_dec();
|
||||
|
||||
const real imponibile_orig = _rmoviva->get_real(RMI_IMPONIBILE);
|
||||
const real imposta_orig = _rmoviva->get_real(RMI_IMPOSTA);
|
||||
|
||||
const int decimals = TCurrency::get_firm_dec();
|
||||
const real imposta_orig = _rmoviva->get_real(RMI_IMPOSTA);
|
||||
|
||||
real diff_imp; // Liquidazione differita imponibile
|
||||
real diff_iva; // Liquidazione differita imposta
|
||||
@ -1007,15 +1008,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
real impos_det; // Imposta detraibile
|
||||
|
||||
if (pagatt > ZERO || ncatt > ZERO)
|
||||
{
|
||||
if (pag.valore() >= totfat)
|
||||
{
|
||||
// Il totale dei pagamenti chiude la fattura?
|
||||
if (pagatt >= totfat) // Calcolo del cavolo: dovrebbe guardare il saldo fattura, no?
|
||||
{
|
||||
TDate from(_mov->get(MOV_DATAREG));
|
||||
real impprec;
|
||||
real ivaprec;
|
||||
real ncprec;
|
||||
real val;
|
||||
|
||||
real impprec, ivaprec, ncprec;
|
||||
if (month < 13)
|
||||
{
|
||||
TDate to(inizio);
|
||||
@ -1040,32 +1038,22 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
TImporto nctmp;
|
||||
// Fine aggiunte di Bonazzi del 16/02/2012
|
||||
|
||||
for (TPartita * p = arrpart.first(); p != NULL; p = arrpart.next())
|
||||
for (TPartita* p = arrpart.first(); p != NULL; p = arrpart.next())
|
||||
{
|
||||
int row = p->mov2rig(numreg, 1);
|
||||
|
||||
if (row >= 0)
|
||||
const int row = p->mov2rig(numreg, 1);
|
||||
if (row > 0)
|
||||
{
|
||||
TRiga_partite rp = p->riga(row);
|
||||
|
||||
pagtmp += rp.calcola_pagato_al(false, endp, endp, endp, 9);
|
||||
pagtmp -= rp.calcola_pagato_al(false, from, from, from, 9);
|
||||
pagtmp.normalize(sez);
|
||||
|
||||
// Inizio aggiunte di Bonazzi del 16/02/2012
|
||||
nctmp += rp.calcola_pagato_al(false, endp, endp, endp, 0x19);
|
||||
nctmp -= rp.calcola_pagato_al(false, from, from, from, 0x19);
|
||||
nctmp.normalize(sez);
|
||||
pagtmp -= nctmp;
|
||||
// Fine aggiunte di Bonazzi del 16/02/2012
|
||||
|
||||
const TRiga_partite& rp = p->riga(row);
|
||||
rp.calcola_pagato_periodo(from+1L, endp, pagtmp, nctmp);
|
||||
}
|
||||
}
|
||||
pagtmp.normalize(sez);
|
||||
|
||||
if (!pagtmp.is_zero())
|
||||
{
|
||||
const real perc = pagtmp.valore() / totfat;
|
||||
|
||||
val = imponibile_orig * perc;
|
||||
real val = imponibile_orig * perc;
|
||||
val.round(TCurrency::get_firm_dec());
|
||||
impprec += val;
|
||||
val = imposta_orig * perc;
|
||||
@ -1089,22 +1077,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
TDate to(31,12, from.year());
|
||||
const int items = arrpart.items();
|
||||
const char sez = (tipomov == vendita ? 'A' : 'D');
|
||||
TImporto pagtmp;
|
||||
TImporto nctmp;
|
||||
|
||||
TImporto pagtmp, nctmp;
|
||||
for (TPartita * p = arrpart.first(); p != NULL; p = arrpart.next())
|
||||
{
|
||||
int row = p->mov2rig(numreg, 1);
|
||||
|
||||
const int row = p->mov2rig(numreg, 1);
|
||||
if (row >= 0)
|
||||
{
|
||||
TRiga_partite rp = p->riga(row);
|
||||
|
||||
pagtmp += rp.calcola_pagato_al(false, to, to, to, 9);
|
||||
pagtmp.normalize(sez);
|
||||
nctmp += rp.calcola_pagato_al(false, to, to, to, 0x19);
|
||||
nctmp.normalize(sez);
|
||||
pagtmp -= nctmp;
|
||||
const TRiga_partite& rp = p->riga(row);
|
||||
rp.calcola_pagato_periodo(botime, to, pagtmp, nctmp);
|
||||
}
|
||||
}
|
||||
if (!pagtmp.is_zero())
|
||||
@ -1112,10 +1092,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
const real perc = pagtmp.valore() / totfat;
|
||||
real val = imponibile_orig * perc;
|
||||
|
||||
val.round(TCurrency::get_firm_dec());
|
||||
val.round(decimals);
|
||||
impprec = val;
|
||||
val = imposta_orig * perc;
|
||||
val.round(TCurrency::get_firm_dec());
|
||||
val.round(decimals);
|
||||
ivaprec = val;
|
||||
}
|
||||
if (!nctmp.is_zero())
|
||||
@ -1129,30 +1109,33 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
|
||||
const real ncperc = ncatt / totfat;
|
||||
|
||||
val = imponibile_orig * ncperc;
|
||||
val.round(TCurrency::get_firm_dec());
|
||||
real val = imponibile_orig * ncperc;
|
||||
val.round(decimals);
|
||||
diff_imp = -val;
|
||||
incdiff_imp -= val;
|
||||
val = imposta_orig * ncperc;
|
||||
val.round(TCurrency::get_firm_dec());
|
||||
val.round(decimals);
|
||||
diff_iva = -val;
|
||||
incdiff_iva -= val;
|
||||
}
|
||||
else
|
||||
{
|
||||
real perc = pagatt / totfat;
|
||||
{ // La fattura è ancora aperta
|
||||
// Calcolo rapporto tra pagamento e totale fattura
|
||||
const real perc = pagatt / totfat;
|
||||
|
||||
incdiff_imp = imponibile_orig * perc;
|
||||
incdiff_imp.round(TCurrency::get_firm_dec());
|
||||
incdiff_imp.round(decimals);
|
||||
incdiff_iva = imposta_orig * perc;
|
||||
incdiff_iva.round(TCurrency::get_firm_dec());
|
||||
incdiff_iva.round(decimals);
|
||||
if (month == 13)
|
||||
{
|
||||
diff_imp = imponibile_orig - incdiff_imp;
|
||||
diff_iva = imposta_orig - incdiff_iva;
|
||||
}
|
||||
|
||||
/* Guy 08-08-2012: Mi pare una cosa inutile
|
||||
// Calcolo rapporto tra nota credito e totale fattura
|
||||
const real ncperc = ncatt / totfat;
|
||||
|
||||
real val = imponibile_orig * ncperc;
|
||||
val.round(TCurrency::get_firm_dec());
|
||||
diff_imp = -val;
|
||||
@ -1161,16 +1144,34 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
val.round(TCurrency::get_firm_dec());
|
||||
diff_iva = -val;
|
||||
incdiff_iva -= val;
|
||||
}
|
||||
*/
|
||||
|
||||
if (pagatt > ZERO && !pagscatt.empty())
|
||||
{
|
||||
TFilename tmp; tmp.tempdir();
|
||||
tmp.add("liqdiff.txt");
|
||||
ofstream log(tmp, ios_base::app);
|
||||
|
||||
const TRectype& rec = (TRectype&)pagscatt[pagscatt.last()];
|
||||
const TPartita& par = arrpart.partita(rec);
|
||||
const TRiga_partite& sum = par.riga(rec.get_int(PAGSCA_NRIGP));
|
||||
|
||||
log << codiva << '\t' << pagatt.string() << '\t'
|
||||
<< incdiff_imp.string() << '\t' << incdiff_iva.string() << '\t'
|
||||
<< sum.get(PART_NREG) << '\t' << sum.get_date(PART_DATAPAG) << '\t'
|
||||
<< numreg << '\t' << date.string() << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (difftopay)
|
||||
{
|
||||
diff_imp = imponibile_orig;
|
||||
diff_iva = imposta_orig;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (diffpayed)
|
||||
{
|
||||
incdiff_imp = imponibile_orig;
|
||||
@ -1179,9 +1180,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
else
|
||||
analizza_IVA(imponibile_orig, imposta_orig, percind, corrisp, false, codiva,
|
||||
impon_det, impos_det, impon_ind, impos_ind);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// qui
|
||||
// qui
|
||||
for (int is_detraibile = 0; is_detraibile < 2; is_detraibile++)
|
||||
{
|
||||
const int tipodet = is_detraibile ? 0 : tipoind;
|
||||
@ -2025,10 +2027,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
// fatture a liquidazione differita
|
||||
tab->put("R26", tab->get_real("R26") + diff_imp);
|
||||
tab->put("R27", tab->get_real("R27") + diff_iva);
|
||||
tab->put("R28", tab->get_real("R28") + incdiff_imp);
|
||||
tab->put("R29", tab->get_real("R29") + incdiff_iva);
|
||||
tab->curr().add("R26", diff_imp);
|
||||
tab->curr().add("R27", diff_iva);
|
||||
tab->curr().add("R28", incdiff_imp);
|
||||
tab->curr().add("R29", incdiff_iva);
|
||||
fdiff_imp += diff_imp;
|
||||
fdiff_iva += diff_iva;
|
||||
fdiffinc_imp += incdiff_imp;
|
||||
|
@ -259,7 +259,7 @@ bool TLiquidazione_app::look_pim(int month, const char* codatt, const char* codr
|
||||
(*_pim_tipodet) = tipodet;
|
||||
|
||||
const TString80 s = _pim_r->get("CODTAB");
|
||||
bool ok = _pim->read() == NOERR;
|
||||
const bool ok = _pim->read() == NOERR;
|
||||
if (!ok && create)
|
||||
{
|
||||
_pim_r->zero();
|
||||
|
@ -141,7 +141,7 @@ void TLiquidazione_app::describe_att(int month, const char* codatt,
|
||||
if (atts.items() == 1 && _isviaggio)
|
||||
describe_viaggio(month, codatt);
|
||||
describe_pims(month,codatt,FALSE);
|
||||
if (atoi(_year) > 1997) // Descrive anche i PIS se esistono
|
||||
// if (atoi(_year) > 1997) // Descrive anche i PIS se esistono
|
||||
describe_pims(month,codatt,TRUE);
|
||||
if (atts.items() == 1)
|
||||
describe_consistence(codatt);
|
||||
@ -499,8 +499,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
||||
// L'ultimo parametro serve per calcolare i PIS (progressivi del periodo successivo)
|
||||
{
|
||||
TToken_string atts(codatt);
|
||||
TString ref(atts.items() == 1 ? codatt : "ALL");
|
||||
const char* tmpatt;
|
||||
const TString8 ref(atts.items() == 1 ? codatt : "ALL");
|
||||
int last = _descr_arr.last();
|
||||
bool issosp = false;
|
||||
real t0, t1, t2, t3, t4, t5, t26, t27, t28, t29, t30, t31, t32, t33;
|
||||
@ -516,7 +515,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
||||
_DescrItem* iads = NULL;
|
||||
|
||||
// Seleziona la tabella corretta: PIM o PIS e l'identificatore
|
||||
TTable * tab = describe_pis ? _pis : _pim;
|
||||
TTable* tab = describe_pis ? _pis : _pim;
|
||||
const word PIM_PIS = describe_pis ? PIS_ROW : PIM_ROW;
|
||||
|
||||
// questa cazzata serve per far apparire l'intestazione delle colonne
|
||||
@ -538,12 +537,14 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
||||
bool is_key;
|
||||
|
||||
// Never mind the bollox
|
||||
TString codtab, codreg, codiva, activity, anno;
|
||||
TString80 codtab;
|
||||
TString8 activity;
|
||||
TString4 codreg, codiva, anno;
|
||||
int mese;
|
||||
|
||||
while ((tmpatt = atts.get()) != NULL)
|
||||
FOR_EACH_TOKEN(atts, tmpatt)
|
||||
{
|
||||
TString att(tmpatt);
|
||||
const TString8 att(tmpatt);
|
||||
|
||||
for (tab->first(); !tab->eof(); tab->next())
|
||||
{
|
||||
@ -569,17 +570,15 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
||||
real rit_imp(s1.get(0));
|
||||
real rit_iva(s1.get(1));
|
||||
|
||||
// if (tipomov == vendita)
|
||||
// {
|
||||
diffimp = _pim->get_real("R26");
|
||||
diffiva = _pim->get_real("R27");
|
||||
diffincimp = _pim->get_real("R28");
|
||||
diffinciva = _pim->get_real("R29");
|
||||
diffimp_acq = _pim->get_real("R30");
|
||||
diffiva_acq = _pim->get_real("R31");
|
||||
diffincimp_acq = _pim->get_real("R32");
|
||||
diffinciva_acq = _pim->get_real("R33");
|
||||
// }
|
||||
diffimp = _pim->get_real("R26");
|
||||
diffiva = _pim->get_real("R27");
|
||||
diffincimp = _pim->get_real("R28");
|
||||
diffinciva = _pim->get_real("R29");
|
||||
|
||||
diffimp_acq = _pim->get_real("R30");
|
||||
diffiva_acq = _pim->get_real("R31");
|
||||
diffincimp_acq = _pim->get_real("R32");
|
||||
diffinciva_acq = _pim->get_real("R33");
|
||||
|
||||
const bool is_rit= tipodet != 0 && month == 13 && rit_imp != 0.0; //Se fattura in ritardo con tipo detr. != 0 e si sta calcolando l'annuale
|
||||
const tipo_sospensione sosp_imp = _reg->get_bool("B1") ? (tipo_sospensione) _reg->get_int("I9") : nessuna;
|
||||
@ -594,11 +593,13 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
||||
}
|
||||
// se e' corrispettivo da ventilare non
|
||||
// scrivo un cannolo ripieno visto che e' stato ventilato
|
||||
if (tipomov == vendita && tipoiva == "VE" && !describe_pis) continue;
|
||||
if (tipomov == vendita && tipoiva == "VE" && !describe_pis)
|
||||
continue;
|
||||
|
||||
// se e' il dettaglio di una attivita' mista non stampa
|
||||
// gli acquisti, il perche' losalamadonna
|
||||
if (tipomov == acquisto && skip_acq) continue;
|
||||
if (tipomov == acquisto && skip_acq)
|
||||
continue;
|
||||
|
||||
// questi non vanno in liquidazione, i totali sono
|
||||
// gia' calcolati altrove
|
||||
@ -1005,12 +1006,12 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
||||
int m = annual ? month : 1;
|
||||
for (; m <= limit; m++)
|
||||
{
|
||||
if (!is_month_ok(m,month)) continue;
|
||||
if (!is_month_ok(m,month))
|
||||
continue;
|
||||
|
||||
atts.restart();
|
||||
while ((tmpatt = atts.get()) != NULL)
|
||||
FOR_EACH_TOKEN (atts, tmpatt)
|
||||
{
|
||||
TString att(tmpatt);
|
||||
const TString8 att(tmpatt);
|
||||
look_plm(m, att);
|
||||
real ad1, ad2;
|
||||
|
||||
@ -1479,12 +1480,12 @@ void TLiquidazione_app::set_att(_DescrItem& d)
|
||||
|
||||
if (d._s3.empty())
|
||||
{
|
||||
att_title = flags == 'M' ? TR("Riepilogo attivita' mista") :
|
||||
att_title = flags == 'M' ? TR("Riepilogo attività mista") :
|
||||
TR("Riepilogo quater");
|
||||
// att_title << d._s2;
|
||||
}
|
||||
else
|
||||
att_title = format(FR("Attivita' %s %s %s"),
|
||||
att_title = format(FR("Attività %s %s %s"),
|
||||
(const char*)(d._s2),
|
||||
(const char*)(d._s3),
|
||||
(const char*)tipatt);
|
||||
@ -1696,6 +1697,46 @@ void TLiquidazione_app::set_liqacc_2000(_DescrItem& d)
|
||||
set_auto_ff();
|
||||
}
|
||||
|
||||
bool TLiquidazione_app::print_diff_log(int& rw)
|
||||
{
|
||||
if (_isregis || _isfinal)
|
||||
return false;
|
||||
|
||||
TFilename tmp; tmp.tempdir();
|
||||
tmp.add("liqdiff.txt");
|
||||
ifstream f(tmp);
|
||||
TToken_string str(256, '\t');
|
||||
|
||||
bool header = false;
|
||||
|
||||
while (f.good())
|
||||
{
|
||||
f.getline(str.get_buffer(), str.size()); str.trim();
|
||||
if (str.full())
|
||||
{
|
||||
if (!header)
|
||||
{
|
||||
header = true;
|
||||
set_row(rw++, "IVA@17gImporto@30gImponibile@49gImposta@64gPagamento@96gFattura");
|
||||
}
|
||||
|
||||
const TString4 codiva = str.get(0);
|
||||
const real importo = str.get();
|
||||
const real imponibile = str.get();
|
||||
const real imposta = str.get();
|
||||
const TString16 numpag = str.get();
|
||||
const TString16 datapag = str.get();
|
||||
const TString16 numfat = str.get();
|
||||
const TString16 datafat = str.get();
|
||||
set_row(rw++, "%s@9g%r@25g%r@41g%r@64g%s@80g%s@96g%s@112g%s",
|
||||
(const char*)codiva, &importo, &imponibile, &imposta,
|
||||
(const char*)numpag, (const char*)datapag, (const char*)numfat, (const char*)datafat);
|
||||
str.cut(0);
|
||||
}
|
||||
}
|
||||
|
||||
return header;
|
||||
}
|
||||
|
||||
void TLiquidazione_app::set_pim_head(_DescrItem& d)
|
||||
{
|
||||
@ -1716,6 +1757,7 @@ void TLiquidazione_app::set_pim_head(_DescrItem& d)
|
||||
{
|
||||
set_row(r++, TR("Fatture a liquidazione differita incassate"));
|
||||
set_bookmark(TR("Riepilogo progressivi a liquidazione differita incassati"), _att_bookmark);
|
||||
print_diff_log(r);
|
||||
}
|
||||
else // PIS_HEAD
|
||||
{
|
||||
@ -1735,7 +1777,8 @@ void TLiquidazione_app::set_pim_head(_DescrItem& d)
|
||||
if (d._flags == PIS_HEAD_DI)
|
||||
{
|
||||
set_row(r++, TR("Fatture a liquidazione differita incassate"));
|
||||
set_bookmark(TR("Riepilogo progressivi successivi a liquidazione differita incassati"), _att_bookmark);
|
||||
set_bookmark(TR("Riepilogo progressivi successivi a liquidazione differita incassati"), _att_bookmark);
|
||||
print_diff_log(r);
|
||||
}
|
||||
}
|
||||
set_row(r++,"");
|
||||
|
@ -1,27 +1,8 @@
|
||||
#include <applicat.h>
|
||||
|
||||
#include "../ba/ba8500.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TBruceWayne_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TBruceWayne_app : public TKlarkKent_app
|
||||
{
|
||||
protected:
|
||||
virtual TReport* create_report(const char* name) const;
|
||||
};
|
||||
|
||||
TReport* TBruceWayne_app::create_report(const char* name) const
|
||||
{
|
||||
TReport* rep = new TReport;
|
||||
rep->load(name);
|
||||
return rep;
|
||||
}
|
||||
|
||||
int cg7100(int argc, char* argv[])
|
||||
{
|
||||
TBruceWayne_app app;
|
||||
app.run(argc, argv, TR("Stampa Report Contabilita'"));
|
||||
TKlarkKent_app app;
|
||||
app.run(argc, argv, TR("Stampa Report Contabilità"));
|
||||
return 0;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ BEGIN
|
||||
FIELD #DATASTAMPA
|
||||
END
|
||||
|
||||
LIST F_TIPOELENCO 9
|
||||
LIST F_P_TIPOELENCO 9
|
||||
BEGIN
|
||||
PROMPT 1 3 "Tipo elenco "
|
||||
HELP "Indicare cosa includere nella stampa"
|
||||
|
@ -43,7 +43,7 @@ int TEsercizio::compare(const TSortable& s) const
|
||||
int c = 0;
|
||||
if (_inizio != e._inizio)
|
||||
c = _inizio > e._inizio ? +1 : -1;
|
||||
return c;
|
||||
return c;
|
||||
}
|
||||
|
||||
const TDate& TEsercizio::chiusura() const
|
||||
@ -83,7 +83,7 @@ const TDate& TEsercizio::chiusura() const
|
||||
((TDate&)_chiusura) = datacomp; // Forzatura
|
||||
TTable esc("ESC");
|
||||
esc.put("CODTAB", codice());
|
||||
if (esc.read(_lock) == NOERR)
|
||||
if (esc.read(_isequal, _lock) == NOERR)
|
||||
{
|
||||
esc.put("D3", datacomp);
|
||||
esc.rewrite();
|
||||
|
190
cg/cgsaldac.cpp
190
cg/cgsaldac.cpp
@ -297,8 +297,63 @@ bool TRiga_scadenze::chiusa(bool update) const
|
||||
return chiusa;
|
||||
}
|
||||
|
||||
static TImporto extract_importo(const TRectype& pag, const TRiga_partite& sum, bool val, int mode)
|
||||
{
|
||||
TImporto totale;
|
||||
|
||||
// Inizio aggiunte di Bonazzi del 16/02/2012
|
||||
if (mode & 0x10) // solo le note di credito
|
||||
{
|
||||
const tipo_movimento tm = sum.tipo();
|
||||
if (tm != tm_nota_credito)
|
||||
return totale; // = ZERO
|
||||
}
|
||||
// Fine aggiunte di Bonazzi del 16/02/2012
|
||||
|
||||
const bool in_val = sum.in_valuta();
|
||||
const char* imp_field = (val && in_val) ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO;
|
||||
|
||||
const char sez = sum.sezione();
|
||||
if (mode & 0x1)
|
||||
{
|
||||
totale += TImporto(sez, pag.get_real(imp_field));
|
||||
}
|
||||
|
||||
if (!in_val && (mode & 0x8)) // Le ritenute non esistono nei pagamenti in valuta
|
||||
{
|
||||
totale += TImporto(sez, pag.get_real(PAGSCA_RITENUTE));
|
||||
totale += TImporto(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC));
|
||||
}
|
||||
|
||||
if (mode & 0x2) // Voglio anche gli abbuoni
|
||||
{
|
||||
real abb = pag.get_real(PAGSCA_ABBUONI);
|
||||
if (!abb.is_zero())
|
||||
{
|
||||
if (in_val && !val) // Gli abbuoni sono sempre in valuta e quindi
|
||||
{ // devono essere convertiti opportunamente
|
||||
const TExchange cmb(sum);
|
||||
TCurrency cur(abb, cmb);
|
||||
cur.change_to_firm_val();
|
||||
abb = cur.get_num();
|
||||
}
|
||||
totale += TImporto(sez, abb);
|
||||
}
|
||||
}
|
||||
|
||||
if (in_val && !val && (mode & 0x4)) // Voglio anche le differenze cambio
|
||||
{ // Esse esistono solo nei pagamenti in valuta
|
||||
const TImporto diffcam(sez, pag.get_real(PAGSCA_DIFFCAM));
|
||||
totale += diffcam;
|
||||
}
|
||||
|
||||
return totale;
|
||||
}
|
||||
|
||||
/* Funzione chiamata esclusivamente da altra funzione commentata
|
||||
|
||||
// Calcola il totale dei pagamenti alla data (eventualmente in valuta)
|
||||
TImporto TRiga_scadenze::importo_pagato_al(bool val, const TDate & al, int mode) const
|
||||
TImporto TRiga_scadenze::importo_pagato_al(bool val, const TDate& al, int mode) const
|
||||
{
|
||||
CHECKD(mode > 0x0 && mode <= 0xFF, "Bad importo_pagato mode ", mode);
|
||||
const TPartita& game = partita();
|
||||
@ -310,58 +365,16 @@ TImporto TRiga_scadenze::importo_pagato_al(bool val, const TDate & al, int mode)
|
||||
{
|
||||
const TRectype& pag = row(p); // Riga pagamento
|
||||
const TRiga_partite& sum = game.riga(p); // Riga partite
|
||||
const TDate & datapag = sum.get_date(PART_DATAPAG);
|
||||
|
||||
const TDate datapag = sum.get_date(PART_DATAPAG);
|
||||
if (datapag <= al)
|
||||
{
|
||||
// Inizio aggiunte di Bonazzi del 16/02/2012
|
||||
if (mode & 0x10) // solo le note di credito
|
||||
{
|
||||
const tipo_movimento tm = (tipo_movimento)sum.get_int(PART_TIPOMOV);
|
||||
if (tm != tm_nota_credito)
|
||||
continue;
|
||||
}
|
||||
// Fine aggiunte di Bonazzi del 16/02/2012
|
||||
|
||||
const char sez = sum.sezione();
|
||||
if (mode & 0x1)
|
||||
{
|
||||
totale += TImporto(sez, pag.get_real(imp_field));
|
||||
}
|
||||
|
||||
if (!in_val && (mode & 0x8)) // Le ritenute non esistono nei pagamenti in valuta
|
||||
{
|
||||
totale += TImporto(sez, pag.get_real(PAGSCA_RITENUTE));
|
||||
totale += TImporto(sum.sezione_ritsoc(), pag.get_real(PAGSCA_RITSOC));
|
||||
}
|
||||
|
||||
if (mode & 0x2) // Voglio anche gli abbuoni
|
||||
{
|
||||
real abb = pag.get_real(PAGSCA_ABBUONI);
|
||||
if (!abb.is_zero())
|
||||
{
|
||||
if (in_val && !val) // Gli abbuoni sono sempre in valuta e quindi
|
||||
{ // devono essere convertiti opportunamente
|
||||
const TExchange cmb(sum);
|
||||
TCurrency cur(abb, cmb);
|
||||
cur.change_to_firm_val();
|
||||
abb = cur.get_num();
|
||||
}
|
||||
totale += TImporto(sez, abb);
|
||||
}
|
||||
}
|
||||
|
||||
if (in_val && !val && (mode & 0x4)) // Voglio anche le differenze cambio
|
||||
{ // Esse esistono solo nei pagamenti in valuta
|
||||
const TImporto diffcam(sez, pag.get_real(PAGSCA_DIFFCAM));
|
||||
totale += diffcam;
|
||||
}
|
||||
}
|
||||
totale += extract_importo(pag, sum, val, mode);
|
||||
}
|
||||
|
||||
return totale.normalize();
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
// Calcola il totale dei pagamenti (eventualmente in valuta)
|
||||
TImporto TRiga_scadenze::importo_pagato(bool val, int mode) const
|
||||
{
|
||||
@ -1052,6 +1065,7 @@ TImporto TRiga_partite::esposto(bool valuta, const TDate & data_scad, const TDat
|
||||
return esposto;
|
||||
}
|
||||
|
||||
/*
|
||||
TImporto TRiga_partite::calcola_pagato_al(bool valuta,const TDate& al, const TDate & data_scaduto, const TDate& data_rischio, int mode) const
|
||||
{
|
||||
TImporto pagato;
|
||||
@ -1067,15 +1081,85 @@ TImporto TRiga_partite::calcola_pagato_al(bool valuta,const TDate& al, const TDa
|
||||
const TRiga_scadenze& scad = rata(r);
|
||||
const TImporto pag = scad.importo_pagato_al(valuta, al, mode);
|
||||
pagato += pag;
|
||||
if (!pag.is_zero() && rischio)
|
||||
if (rischio && !pag.is_zero())
|
||||
{
|
||||
bool sbf = false;
|
||||
pagato -= scad.esposto_al(valuta, al, data_scaduto, data_rischio, sbf);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return pagato;
|
||||
}
|
||||
*/
|
||||
|
||||
int TRiga_partite::calcola_pagato_periodo(const TDate& dal, const TDate& al, TImporto& pg, TImporto& nc, TPointer_array* pagsca) const
|
||||
{
|
||||
int flag = 0;
|
||||
if (!is_fattura())
|
||||
return flag;
|
||||
|
||||
TPointer_array pags;
|
||||
|
||||
const int lastr = rate();
|
||||
for (int r = lastr; r > 0; r--)
|
||||
{
|
||||
const TRiga_scadenze& scad = rata(r);
|
||||
for (int p = scad.last(); p > 0; p = scad.pred(p))
|
||||
{
|
||||
const TRectype& pag = scad.row(p); // Riga pagamento
|
||||
const TRiga_partite& sum = partita().riga(p); // Riga partite
|
||||
const TDate datapag = sum.get_date(PART_DATAPAG);
|
||||
if ((!dal.ok() || datapag >= dal) && (!al.ok() || datapag <= al))
|
||||
pags.add((TRectype*)&pag);
|
||||
}
|
||||
}
|
||||
|
||||
// Cerco di gestire anche i non assegnati sulla unica fattura di una partita
|
||||
const TRecord_array& unas = partita().unassigned();
|
||||
if (unas.rows() > 0)
|
||||
{
|
||||
int fatture = 0;
|
||||
for (int r = partita().last(); r > 0 && fatture < 2; r = partita().pred(r))
|
||||
{
|
||||
if (partita().riga(r).tipo() == tm_fattura)
|
||||
fatture++;
|
||||
}
|
||||
if (fatture == 1)
|
||||
{
|
||||
for(int r = unas.last_row(); r > 0; r = unas.pred_row(r))
|
||||
{
|
||||
const TRectype& pag = unas.row(r);
|
||||
const TRiga_partite& sum = partita().riga(r);
|
||||
const TDate datapag = sum.get_date(PART_DATAPAG);
|
||||
if ((!dal.ok() || datapag >= dal) && (!al.ok() || datapag <= al))
|
||||
pags.add((TRectype*)&pag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FOR_EACH_ARRAY_ITEM(pags, p, obj)
|
||||
{
|
||||
const TRectype& pag = *(TRectype*)obj;
|
||||
const TRiga_partite& sum = partita().riga(pag.get_int(PAGSCA_NRIGP));
|
||||
const tipo_movimento tm = sum.tipo();
|
||||
const TImporto imp = extract_importo(pag, sum, false, 0xF);
|
||||
if (tm == tm_nota_credito)
|
||||
{
|
||||
nc += imp;
|
||||
flag |= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
pg += imp;
|
||||
flag |= 1;
|
||||
if (pagsca != NULL && tm == tm_pagamento || tm == tm_pagamento_insoluto)
|
||||
pagsca->add(obj);
|
||||
}
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TRiga_partite_array
|
||||
@ -1750,6 +1834,9 @@ TImporto TPartita::calcola_saldo(bool valuta) const
|
||||
return saldo;
|
||||
}
|
||||
|
||||
/*
|
||||
Funzione completamente inutile e certamente NON utilizzata nei moduli cg, sc e ve
|
||||
|
||||
TImporto TPartita::calcola_pagato_al(bool valuta,const TDate& al, const TDate & data_scaduto, const TDate& data_rischio) const
|
||||
{
|
||||
TImporto pagato;
|
||||
@ -1757,15 +1844,13 @@ TImporto TPartita::calcola_pagato_al(bool valuta,const TDate& al, const TDate &
|
||||
for (int r = last(); r > 0; r = pred(r))
|
||||
{
|
||||
const TRiga_partite& row = riga(r);
|
||||
const TDate data(row.get(PART_DATAREG));
|
||||
|
||||
if (data <= al)
|
||||
const TDate data(row.get(PART_DATAREG));
|
||||
if (data <= al)
|
||||
{
|
||||
pagato += row.importo(valuta);
|
||||
if (!row.is_fattura())
|
||||
{
|
||||
const tipo_pagamento tipopag = row.tipo_pag();
|
||||
|
||||
if (tipopag >= tp_tratta && tipopag <= tp_rid)
|
||||
{
|
||||
bool sbf = false;
|
||||
@ -1776,6 +1861,7 @@ TImporto TPartita::calcola_pagato_al(bool valuta,const TDate& al, const TDate &
|
||||
}
|
||||
return pagato;
|
||||
}
|
||||
*/
|
||||
|
||||
TImporto TPartita::calcola_saldo_al(bool valuta,const TDate& al, const TDate & data_scaduto, const TDate& data_rischio) const
|
||||
{
|
||||
|
@ -135,6 +135,7 @@ protected:
|
||||
|
||||
protected: // TRecord_tree
|
||||
virtual TObject* dup() const;
|
||||
// TImporto importo_pagato_al(bool val, const TDate & al, int mode = 0xF) const;
|
||||
|
||||
public:
|
||||
bool chiusa(bool update = false) const;
|
||||
@ -145,7 +146,6 @@ public:
|
||||
TPartita& partita() const;
|
||||
TRiga_partite& riga() const { return *_riga; } // Riga partite
|
||||
|
||||
TImporto importo_pagato_al(bool val, const TDate & al, int mode = 0xF) const;
|
||||
TImporto importo_pagato(bool val, int mode = 0xF) const;
|
||||
TImporto importo(bool val) const;
|
||||
TImporto residuo(bool val, int mode = 0xF) const; // Differenza delle due funzioni precedenti
|
||||
@ -194,7 +194,8 @@ public:
|
||||
|
||||
TImporto importo(bool valuta, int mode = 0xF) const;
|
||||
TImporto esposto(bool valuta, const TDate & data_scad, const TDate & data_rischio, bool & sbf) const;
|
||||
TImporto calcola_pagato_al(bool valuta,const TDate& al, const TDate & data_scaduto, const TDate& data_rischio, int mode = 0xF) const;
|
||||
//TImporto calcola_pagato_al(bool valuta, const TDate& al, const TDate & data_scaduto, const TDate& data_rischio, int mode = 0xF) const;
|
||||
int calcola_pagato_periodo(const TDate& dal, const TDate& al, TImporto& pag, TImporto& nc, TPointer_array* pagsca = NULL) const;
|
||||
|
||||
const TString& codice_valuta() const;
|
||||
bool in_valuta() const;
|
||||
@ -300,7 +301,7 @@ public:
|
||||
void update_reg(long nreg, const TRectype& mov, TPartite_array& pa);
|
||||
void calcola_saldo(TImporto& saldo, TImporto& doc, TImporto& pag, TImporto& imp) const;
|
||||
TImporto calcola_saldo(bool valuta) const;
|
||||
TImporto calcola_pagato_al(bool valuta,const TDate& al, const TDate & data_scaduto, const TDate& data_rischio) const;
|
||||
//TImporto calcola_pagato_al(bool valuta,const TDate& al, const TDate & data_scaduto, const TDate& data_rischio) const;
|
||||
TImporto calcola_saldo_al(bool valuta, const TDate& al, const TDate& data_scaduto, const TDate& data_rischio) const;
|
||||
real calcola_scaduto_al(bool valuta, const TDate& al = botime) const;
|
||||
TImporto importo_pagato_unassigned(bool val, int mode = 0xF) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user