Patch level : 10.0

Files correlati     : cg4.exe
Ricompilazione Demo : [ ]
Commento            :
0001001: Stampa libro iva provvisorio - ripilogo
Stampando l'iva acquisti della soc. Sailog (presente nella cartella Ilaria del FTP) per il mese di gennaio, il riepilogo provvisorio (quello definitivo va bene) espone come riepilogo del n.d. 9 2 volte il codice 24. Il totale quadra con la lista fatture con iva indetraibile, dove sono dettagliate 11 fatture con tale aliquota, la 12° ha iva diversa e come numerazione iva è superiore alle altre. Da nessuna delle due stampe riesco a capire la motivazione della spezzettatura del totale.


git-svn-id: svn://10.65.10.50/trunk@17793 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2008-12-03 14:53:51 +00:00
parent b9cd6aeb64
commit 1736b4644e
8 changed files with 93 additions and 118 deletions

View File

@ -129,8 +129,8 @@ public:
TPrintrow * get_fornitori () ;
TPrintrow * get_record_fine_volume (bool) ;
long cerca_codice_all(char tipo, long codcf) ;
bool corrispettivo (const char * tipodoc);
long cerca_codice_all(char tipo, long codcf) const;
bool corrispettivo (const char * tipodoc) const;
TStampa_allegati () {}
virtual ~TStampa_allegati () {}
@ -143,14 +143,14 @@ public:
//
// ----------------------------------------------------------------
const char* segno (const real& val)
static const char* segno (const real& val)
{
if (val < ZERO)
return SEGNO_MENO;
return SEGNO_MENO;
return " ";
}
const char* filler (int size)
static const char* filler (int size)
{
static TString_array _fill;
@ -158,37 +158,24 @@ const char* filler (int size)
if (dep == NULL)
{
dep = new TToken_string(size);
dep->fill (' ');
dep->fill(' ', size);
_fill.add(dep, size);
}
return *dep;
}
long TStampa_allegati::cerca_codice_all(char tipo, long codcf)
long TStampa_allegati::cerca_codice_all(char tipo, long codcf) const
{
TString16 key;
key.format("%c|%ld", tipo, codcf);
const TRectype & clifo = cache().get(LF_CLIFO, key);
if (!clifo.empty())
return clifo.get_long (CLI_CODALLEG);
return 0L;
TString8 key; key.format("%c|%ld", tipo, codcf);
return atol(cache().get(LF_CLIFO, key, CLI_CODALLEG));
}
bool TStampa_allegati::corrispettivo (const char * tipodoc)
bool TStampa_allegati::corrispettivo (const char* tipodoc) const
{
TString natura_doc;
bool corrisp;
const TRectype & tpd = cache().get("%TPD", tipodoc);
natura_doc = tpd.get("I0");
corrisp = tpd.get_bool ("B0");
return corrisp && (natura_doc == "1" || natura_doc == "9");
const TRectype& tpd = cache().get("%TPD", tipodoc);
const int natura_doc = tpd.get_int("I0");
const bool corrisp = tpd.get_bool ("B0");
return corrisp && (natura_doc == 1 || natura_doc == 9);
}
// --------------------------------------------------------------------

View File

@ -6,31 +6,19 @@
int main(int argc,char** argv)
{
const int n = argc > 1 ? argv[1][1]-'0' : 0;
switch (n)
{
case 1:
cg4200(argc,argv); break; // Copia archivi
case 2:
cg4300(argc,argv); break; // Calcolo liquidazione
case 3:
cg4400(argc,argv); break; // Stampa Registri IVA
case 4:
cg4500(argc,argv); break; // Apertura nuovo esercizio
case 5:
cg4600(argc,argv); break; // Chiusura /Apertura
case 6:
cg4700(argc,argv); break; // Gestione acconti
case 7:
cg4800(argc,argv); break; // Creazione versamenti per acconto
case 8:
cg4900(argc,argv); break; // Visualizzazione liquidazione acconti
case 9:
cg4a00(argc,argv); break; // Gestione Autotrasportatori
default:
cg4100(argc,argv); break; // Ricalcolo saldi
case 1: cg4200(argc,argv); break; // Copia archivi
case 2: cg4300(argc,argv); break; // Calcolo liquidazione
case 3: cg4400(argc,argv); break; // Stampa Registri IVA
case 4: cg4500(argc,argv); break; // Apertura nuovo esercizio
case 5: cg4600(argc,argv); break; // Chiusura /Apertura
case 6: cg4700(argc,argv); break; // Gestione acconti
case 7: cg4800(argc,argv); break; // Creazione versamenti per acconto
case 8: cg4900(argc,argv); break; // Visualizzazione liquidazione acconti
case 9: cg4a00(argc,argv); break; // Gestione Autotrasportatori
default: cg4100(argc,argv); break; // Ricalcolo saldi
}
exit(0);
return 0;
}

View File

@ -3,7 +3,6 @@
// Part 1: interfaccia
// fv 21-1-94
// ------------------------------------------------------------
#include "cg4300.h"
#include "cg4300a.h"
@ -16,7 +15,6 @@
#include <mov.h>
// Methods of _Iva11Array
bool _Iva11Array::add(const real& val, const char* fld_name, int num_file)
{
@ -25,8 +23,10 @@ bool _Iva11Array::add(const real& val, const char* fld_name, int num_file)
TAssoc_array::add(fld_name,(_Iva11Item*)new _Iva11Item,is_key);
_Iva11Item& bi = (_Iva11Item&)find(fld_name);
bi.value() += val;
if (num_file != LF_TAB1100A) bi.file() = num_file;
return TRUE;
if (num_file != LF_TAB1100A)
bi.file() = num_file;
return true;
}
bool _Iva11Array::sub(const real& val, const char* fld_name, int num_file)
@ -42,7 +42,7 @@ void _Iva11Array::zero(const char* fld_name)
if (!is_key)
TAssoc_array::add(fld_name,(_Iva11Item*) new _Iva11Item,is_key);
_Iva11Item& bi = (_Iva11Item&)find(fld_name);
bi.value() = 0.0;
bi.value() = ZERO;
}
// Methods of _ProrataItem
@ -52,7 +52,7 @@ void _Iva11Array::zero(const char* fld_name)
real _ProrataItem::calc_prorata(const real& acq, const char * year)
{
real perc = _percentuali.objptr(year) ? (real&) *_percentuali.objptr(year) : ZERO;
real prorata = (acq * perc) / 100.0;
real prorata = (acq * perc) / CENTO;
prorata.round(TCurrency::get_firm_dec());
return prorata;
}
@ -67,9 +67,6 @@ real _ProrataItem::percentuale(const char * year)
return perc;
}
// Methods of application!
real TLiquidazione_app::CENTO(100.0);
inline TLiquidazione_app& app()
{ return (TLiquidazione_app&)main_app(); }

View File

@ -303,17 +303,13 @@ class TLiquidazione_app : public TPrint_application
// La cui chiave e' a sua volta sul nome campo
// totali vari per attivita'
real _p8, _p8b, _p9; // totali plafond
_ProrataItem
_prorata; // Mini cazzetto per calcoli prorata
real _p8, _p8b, _p9; // totali plafond
_ProrataItem _prorata; // Mini cazzetto per calcoli prorata
long __firm; // ditta selezionata all'inizio
bool _is_interactive; // lanciata da menu o da altro prog
bool _is_visliq; // lanciata da visualizzazione liquidazione
int _monthinatt; // mese inizio attivita' (serve per differita)
static real CENTO;
// main cursor
TRelation* _rel;
TCursor* _cur;

View File

@ -2424,7 +2424,7 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt)
// e' perche' alcune operazioni di calcolo (scorporo corrispettivi, ventilazione...) vengono effettuate
// dopo la recalc_att(), punto in cui viene chiamata la phase_1.
{
TString16 codiva, reg, tiva;
TString4 codiva, reg, tiva;
TString16 tpla, tvia;
TString16 v11, a11;
TToken_string tt("",'!');

View File

@ -22,7 +22,6 @@
bool TLiquidazione_app::set_deleghe()
{
TMask m("cg4300b.msk");
m.field(FLD_CGB_YEAR).set_handler(ch_year_handler);
m.field(FLD_CGB_YEAR).set(_year);

View File

@ -36,14 +36,15 @@ static enum tipo_sospensione { nessuna, normale, vol_affari, liquidazione };
inline TStampa_registri_app& app() { return (TStampa_registri_app&)main_app(); }
#define RIGHE_FOOTER 3 // Righe da saltare nel footer per evitare di scrivere sulla perforazione
// Righe da saltare nel footer per evitare di scrivere sulla perforazione
#define RIGHE_FOOTER 3
bool TStampa_registri_app::filter_func (const TRelation * r)
{
const TRectype& mov = r->curr(LF_MOV);
const TString4 codreg = mov.get(MOV_REG);
const int annoiva = mov.get_int(MOV_ANNOIVA);
const TString& codreg = mov.get(MOV_REG);
if (codreg != (app()._codreg) || annoiva != (app()._annoes))
return FALSE;
@ -77,15 +78,8 @@ HIDDEN int compare_righeiva(const TObject** o1, const TObject** o2)
{
const TRigaiva& r1 = *(const TRigaiva*)*o1;
const TRigaiva& r2 = *(const TRigaiva*)*o2;
/*
TString8 campo1;
TString8 campo2;
campo1.format("%d%4s", r1->_tipodet, (const char*)r1->_codiva);
campo2.format("%d%4s", r2->_tipodet, (const char*)r2->_codiva);
return strcmp(campo1, campo2);
*/
int diff = r1._tipodet - r2._tipodet; // Confronto il tipo indetraibilita'
int diff = r1._tipodet - r2._tipodet; // Confronto il tipo indetraibilita'
if (diff == 0) // Se ho un uguale indetraibilita' ...
diff = r1._codiva.compare(r2._codiva); // ... confronto il codice IVA
@ -1114,20 +1108,44 @@ int TStampa_registri_app::riga_rmoviva()
}
int TStampa_registri_app::setta_riga(int r, const TRigaiva& riga, real& tot1,
real& tot2, real& tot3, real& tot4)
real& tot2, real& tot3, real& tot4)
{
set_row(r, "%-4s", (const char*)riga._codiva);
const TString& descr = descr_iva(riga._codiva);
set_row(r, "@5g%-.23s",(const char*)descr);
if (riga._imponibile != ZERO)
set_row(r, riga._codiva);
TString descrizione = descr_iva(riga._codiva);
if (riga._tipocr > 0)
{
const char* cr = NULL;
switch (riga._tipocr)
{
case 1: cr = TR("Beni per rivendita"); break;
case 2: cr = TR("Beni ammortizzabili"); break;
case 3: cr = TR("Beni ammortizzabili con detr. 6%"); break;
case 4: cr = TR("Beni strumentali art. 17"); break;
case 5: cr = TR("Beni per rivendita da non ventilare"); break;
case 8: cr = TR("Altri beni strumentali in leasing"); break;
case 9: cr = TR("Spese generali"); break;
default: break;
}
if (cr && *cr)
descrizione << " (" << cr << ')';
}
if (descrizione.full())
{
TParagraph_string descr(descrizione, 23);
--r;
FOR_EACH_TOKEN(descr, d)
set_row(++r, "@5g%-.23s", d);
}
if (!riga._imponibile.is_zero())
set_row(r, "@29g%r", &riga._imponibile);
if (riga._imposta != ZERO)
if (!riga._imposta.is_zero())
set_row(r, "@45g%r", &riga._imposta);
if (_tipo_stampa != prova)
{
if (riga._imponibilep != ZERO)
if (!riga._imponibilep.is_zero())
set_row(r, "@81g%r", &riga._imponibilep);
if (riga._impostap != ZERO)
if (!riga._impostap.is_zero())
set_row(r, "@98g%r", &riga._impostap);
}
r++; // Incrementa sempre: cazzone!
@ -1136,20 +1154,19 @@ int TStampa_registri_app::setta_riga(int r, const TRigaiva& riga, real& tot1,
tot2 += riga._imposta;
tot3 += riga._imponibilep;
tot4 += riga._impostap;
return r;
}
messaggio TStampa_registri_app::controlla_liquidazione()
{
TTable lim ("LIM");
TString mesi_cal = "";
TString16 chiave = "";
TString16 ditta = "";
int i, mese;
bool continua;
TTable lim("LIM");
TString mesi_cal;
TString8 chiave, ditta;
bool continua = false;
ditta << get_firm();
int mese = 0;
if (_tipo_stampa == prova) //stampa di prova
mese = _data_a.month();
else
@ -1159,26 +1176,22 @@ messaggio TStampa_registri_app::controlla_liquidazione()
{
if (_frequiva == 'T') //la LIM esiste solo per i mesi 3, 6, 9, 12
{
for (i=3; i<=mese; i+=3)
for (int i=3; i<=mese; i+=3)
{
chiave = "";
TString16 m; m.format("%02d", i);
chiave << _annoes << m;
chiave.format("%04d%02d", _annoes, i);
lim.put("CODTAB", chiave);
if (lim.read() != NOERR || !lim.get_bool("B0"))
mesi_cal << itom(i) << "\n";
mesi_cal << itom(i) << '\n';
}
}
} else
if (_frequiva == 'M')
{
for (i=1 ; i<=mese; i++)
for (int i=1; i<=mese; i++)
{
chiave = "";
TString16 m; m.format("%02d", i);
chiave << _annoes << m;
chiave.format("%04d%02d", _annoes, i);
lim.put("CODTAB", chiave);
if (lim.read() != NOERR || !lim.get_bool("B0"))
mesi_cal << itom(i) << "\n";
mesi_cal << itom(i) << '\n';
}
}
if (mesi_cal.not_empty())
@ -1193,8 +1206,7 @@ messaggio TStampa_registri_app::controlla_liquidazione()
}
else if (_tipo_riepilogativo == 'A')
{
chiave = "";
chiave << _annoes << 13;
chiave.format("%04d%02d", _annoes, 13);
lim.put("CODTAB", chiave);
if (lim.read() != NOERR || !lim.get_bool("B0"))
{
@ -1211,9 +1223,7 @@ messaggio TStampa_registri_app::controlla_liquidazione()
if (_frequiva == 'M' ||
(m==3 || m==6 || m==9 || m==12))
{
chiave = "";
TString16 m; m.format("%02d", m);
chiave << _annoes << m;
chiave.format("%04d%02d", _annoes, m);
lim.put("CODTAB", chiave);
if (lim.read() != NOERR || !lim.get_bool("B0"))
{
@ -3697,7 +3707,7 @@ bool TStampa_registri_app::stampa_riepilogo(int m)
void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TString& codreg, const TString& codatt, const bool print_prec)
{
TString80 desc(desc_attivita(codatt));
const TString80 desc(desc_attivita(codatt));
TPrinter& pr = printer();
TPrintrow row;
@ -3706,18 +3716,16 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin
if (!print_prec)
{
row.put(TR("Registro iva:"), 0);
row.put(TR("Registro IVA:"), 0);
row.put(codreg, 14);
row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18);
row.put(TR("Attivita\'"), 60);
if (_annoes > 2007)
{
TString key;
key.format("%ld|%s", _ditta, (const char *)codatt);
const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO);
TString16 key;
key.format("%ld|%s", _ditta, (const char*)codatt);
const TString& codateco = cache().get(LF_ATTIV, key, ATT_CODATECO);
row.put(codateco, 70);
}
else
@ -3765,7 +3773,8 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin
row.put(TR("V E N D I T E"), 94);
row.put(TR("CORRISPETTIVI"), 118);
}
else row.put(TR("V E N D I T E"), 95);
else
row.put(TR("V E N D I T E"), 95);
}
}
pr.print(row);

View File

@ -194,13 +194,12 @@ END
GROUPBOX DLG_NULL 52 6
BEGIN
PROMPT 2 13 "Parametri addizionali"
PROMPT 2 13 "@bParametri addizionali"
END
NUMBER ULTIMA_PAGINA 4
BEGIN
PROMPT 3 14 "Ultimo nr. di pagina stampata libro unico "
FLAGS "R"
PROMPT 3 14 "Ultimo nr. di pagina stampata libro unico"
GROUP 5
END