Patch level : 12.0 642

Files correlati     : cg1.exe cg2.exe cg4.exe cg5.exe np0.exe
Commento            :

Aggiunto il conto utile IV direttiva ai parametri ditta (se non indicato vale 9 E 22) e gestito in stampa bilancio IV direttiva.

Impostato il valore della riga di saldaconto all importo se non indicato.

Contabilità separata letto correttamente dalla maschera il codice di contabilità separata.

Non stampava il riepigolo fatture per cassa  nella stampa definitiva.
This commit is contained in:
AlexBonazzi 2018-11-26 01:50:39 +01:00
parent fc8143d9f9
commit 1ba75cc8f2
10 changed files with 1356 additions and 1288 deletions

View File

@ -173,6 +173,8 @@ class TStampa_IVdirettiva : public TPrintapp
TString _classe_stampata, _classe_da_stampare,_numr_tot,_num_tot,_numr,_num;
char _sez_da_stamp,_let_da_stamp,_sez_stamp,_let_stamp,_sez_tot,_let_tot,_let,_sez_saldo,_sez,_tot_sez_saldo;
TString _numr_da_stamp,_num_da_stamp,_numr_stamp,_num_stamp,_descr_sez;
char _sez_utile, _lett_utile;
TString _classe_utile, _num_utile;
int _tipo_bilancio, _tipo_stampa;
int _cont_let,_cont_numr,_cont_num,_cont_gcs;
int _stampa_mov_prov;
@ -381,10 +383,7 @@ bool TStampa_IVdirettiva::data_limite (TMask_field& f, KEY key)
a()._datalimite = a()._data_fine_ese;
else
if ((datalim < in)||(datalim > fin))
{
f.error_box(TR("La data limite non appartiene all'esercizio indicato"));
return false;
}
return f.error_box(TR("La data limite non appartiene all'esercizio indicato"));
else
a()._datalimite = datalim;
}
@ -392,19 +391,11 @@ bool TStampa_IVdirettiva::data_limite (TMask_field& f, KEY key)
if (annoese == 0)
{
if (datalim == botime)
{
f.error_box(TR("La data limite deve essere indicata obbligatoriamente"));
return false;
}
return f.error_box(TR("La data limite deve essere indicata obbligatoriamente"));
int anno = a().date2esc(datalim);
if (anno == 0)
{
f.error_box(TR("La data limite indicata non appartiene ad alcun esercizio attivo della ditta"));
return false;
}
return f.error_box(TR("La data limite indicata non appartiene ad alcun esercizio attivo della ditta"));
a()._data_ini_ese = a()._inizioEs;
a()._data_fine_ese = a()._fineEs;
@ -463,16 +454,10 @@ bool TStampa_IVdirettiva::data_bil_raff (TMask_field& f, KEY key)
else
anno = 1;
if (dataraf > in)
{
f.error_box(TR("La data bilancio da raffrontare non puo' essere maggiore o uguale alla data inizio esercizio in corso"));
return false;
}
return f.error_box(TR("La data bilancio da raffrontare non puo' essere maggiore o uguale alla data inizio esercizio in corso"));
if (anno == 0)
{
f.error_box(TR("La data bilancio da raffrontare indicata non appartiene ad alcun esercizio attivo della ditta"));
return false;
}
return f.error_box(TR("La data bilancio da raffrontare indicata non appartiene ad alcun esercizio attivo della ditta"));
a()._databilrafr = dataraf;
a()._data_ini_raf = in_raf;
@ -490,10 +475,7 @@ bool TStampa_IVdirettiva::data_bil_raff (TMask_field& f, KEY key)
else
if (dataraf < in_raf || dataraf > fin_raf)
{
f.error_box(TR("La data bilancio da raffrontare deve appartenere all' esercizio da raffrontare"));
return false;
}
return f.error_box(TR("La data bilancio da raffrontare deve appartenere all' esercizio da raffrontare"));
else
a()._databilrafr = dataraf;
a()._anno_esercizio_raf = annoraf;
@ -519,33 +501,28 @@ bool anno_ese_raff (TMask_field& f, KEY key)
annoese = f.mask().get_int(F_ANNOESE);
annoraf = f.mask().get_int(F_ANNORAFFR);
if (annoraf != 0)
{
if (annoese != 0)
{
if (annoraf >= annoese)
{
f.error_box(TR("L' anno esercizio da raffrontare deve essere inferiore all' anno esercizio in corso"));
return false;
}
}
else
if (annoese == 0)
{
datalim = f.mask().get(F_DATALIM);
if (annoraf != 0)
{
if (annoese != 0)
{
if (annoraf >= annoese)
return f.error_box(TR("L' anno esercizio da raffrontare deve essere inferiore all' anno esercizio in corso"));
if (datalim != botime)
{
anno = a().date2esc(datalim);
}
else
if (annoese == 0)
{
datalim = f.mask().get(F_DATALIM);
if (annoraf >= anno)
{
f.error_box(TR("L' anno esercizio da raffrontare deve essere inferiore all' anno di esercizio di appartenenza della data limite"));
return false;
}
}
}
}
if (datalim != botime)
{
anno = a().date2esc(datalim);
if (annoraf >= anno)
return f.error_box(TR("L' anno esercizio da raffrontare deve essere inferiore all' anno di esercizio di appartenenza della data limite"));
}
}
}
}
return true;
}
@ -771,31 +748,23 @@ bool TStampa_IVdirettiva::data_inizio(TMask_field& f, KEY k)
if (data == botime)
a()._dataini = in;
else
if (data < in || data > fin)
{
f.error_box(TR("La data non appartiene all' esercizio indicato"));
return false;
}
else
a()._dataini = data;
else
{
if (data < in || data > fin)
return f.error_box(TR("La data non appartiene all' esercizio indicato"));
else
a()._dataini = data;
}
}
else
{
if (data == botime)
{
f.error_box(TR("La data deve essere obbligatoriamente indicata"));
return false;
}
return f.error_box(TR("La data deve essere obbligatoriamente indicata"));
int anno = a().date2esc(data);
int anno = a().date2esc(data);
if (anno == 0)
{
f.error_box(TR("La data limite indicata non appartiene ad alcun esercizio attivo della ditta"));
return false;
}
return f.error_box(TR("La data limite indicata non appartiene ad alcun esercizio attivo della ditta"));
a()._anno_esercizio = anno;
a()._dataini = data;
a()._data_ini_ese = a()._inizioEs;
@ -842,38 +811,22 @@ bool TStampa_IVdirettiva::data_fine(TMask_field& f, KEY k)
if (data == botime)
a()._datafine = fin;
else
if (data < in || data > fin)
{
f.error_box(TR("La data non appartiene all' esercizio indicato"));
return false;
}
else
a()._datafine = data;
if (data < in || data > fin)
return f.error_box(TR("La data non appartiene all' esercizio indicato"));
else
a()._datafine = data;
}
else
{
if (data == botime)
{
f.error_box(TR("La data deve essere obbligatoriamente indicata"));
return false;
}
return f.error_box(TR("La data deve essere obbligatoriamente indicata"));
a().date2esc(data_ini);
if (data < a()._inizioEs || data > a()._fineEs)
{
f.error_box(TR("La data non appartiene all' esercizio indicato"));
return false;
}
else
a()._datafine = data;
}
if (data < data_ini)
{
f.error_box(TR("La data finale non puo' essere inferiore alla data di partenza"));
return false;
return f.error_box(TR("La data non appartiene all' esercizio indicato"));
a()._datafine = data;
}
if (data < data_ini)
return f.error_box(TR("La data finale non puo' essere inferiore alla data di partenza"));
}
return true;
@ -890,6 +843,8 @@ void TStampa_IVdirettiva::scrivi_record(const TString& sez,
//Forzo la lettera della classe a Z, per ottenere, grazie
//all'ordinamento del sort, i record dei conti d'ordine per ultimi
if (sez == "9" && let == "E")
int i = 1;
set_bil_key(_bil, sez[0], let[0], numerorom, numero, true, g, c, s, tipocf);
set_bil_val(_bil, saldo, saldorafr, sld_dare, sld_avere, mov_dare, mov_avere,conto_dettagliato);
_sort->sort ((const char*) _bil);
@ -903,7 +858,9 @@ void TStampa_IVdirettiva::riempi_record(const TString& sez,
{
if (!(_stampamov && saldo.is_zero() && saldorafr.is_zero()))
{
set_bil_key(_bil, sez[0], let[0], numerorom, numero, false, g, c, s, tipocf);
if (sez == "9" && let == "E")
int i = 1;
set_bil_key(_bil, sez[0], let[0], numerorom, numero, false, g, c, s, tipocf);
set_bil_val(_bil, saldo, saldorafr, sld_dare, sld_avere, mov_dare, mov_avere,conto_dettagliato);
_sort->sort ((const char*) _bil);
_items_sort++;
@ -2057,7 +2014,7 @@ bool TStampa_IVdirettiva::set_print(int)
_totale_passivita_gia_stampato = false;
_statopatr_no_stamp = true;
_diffprod_fatto = true;
_risimp_fatto = true;
_risimp_fatto = false;
_sbilancio_ordine = false;
_sbilancio_patr_gia_stampato = false;
_attivo_o_passivo = false;
@ -2124,24 +2081,23 @@ bool TStampa_IVdirettiva::set_print(int)
// Lo so, fa schifo: ma mi sono adeguato (Guy)
bool TStampa_IVdirettiva::devo_stampare_risultato_prima_delle_imposte() const
{
if (!_risimp_fatto)
return false;
if (_sez_da_stamp != '9')
return false;
if (_let_da_stamp != 'E')
return false;
if (atoi(_num_da_stamp) < 22)
return false;
if (_risimp_fatto)
return false;
if (_sez_da_stamp > _sez_utile)
return true;
if (_sez_da_stamp == _sez_utile && _let_da_stamp >= _lett_utile && _classe_da_stampare >= _classe_utile && atoi(_num_da_stamp) >= atoi(_num_utile))
return true;
if (_sez_da_stamp == _sez_utile && _let_da_stamp == _lett_utile && _classe_da_stampare >= _classe_utile && atoi(_num_da_stamp) >= atoi(_num_utile))
return true;
if (_sez_da_stamp == _sez_utile && _let_da_stamp == _lett_utile && _classe_da_stampare == _classe_utile && atoi(_num_da_stamp) >= atoi(_num_utile))
return true;
return false;
return true;
}
void TStampa_IVdirettiva::stampa_risultato_prima_delle_imposte()
{
if (_risimp_fatto) // Ottimo flag che significa esattamente l'opposto! Grazie PRASSI!
if (!_risimp_fatto)
{
const bool raff = _annoeserafr > 0 || _databilrafr.ok();
@ -2167,7 +2123,7 @@ void TStampa_IVdirettiva::stampa_risultato_prima_delle_imposte()
set_row (_i,"@111g%r", &te);
}
_i++;
_risimp_fatto = false;
_risimp_fatto = true;
}
}
@ -2346,9 +2302,9 @@ void TStampa_IVdirettiva::stampa_totali()
if ((_sez_stamp == '1')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,TR("TOTALE ATTIVO"));
char app = ' ';
set_row(_i++, "@0g%c", app);
set_row (_i,TR("TOTALE ATTIVO"));
set_row (_i++,"@81g%r", &_totale_sezione);
_totale_attivita = _totale_sezione;
_totale_sezione = ZERO;
@ -2357,9 +2313,9 @@ void TStampa_IVdirettiva::stampa_totali()
if ((_sez_stamp == '2')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,TR("TOTALE PASSIVO"));
char app = ' ';
set_row(_i++, "@0g%c", app);
set_row (_i,TR("TOTALE PASSIVO"));
set_row (_i++,"@81g%r", &_totale_sezione);
_totale_passivita = _totale_sezione;
_totale_sezione = ZERO;
@ -2461,8 +2417,8 @@ void TStampa_IVdirettiva::stampa_totali()
if (!_totale_passivita_gia_stampato)
if ((_sez_stamp == '2') && (_let_stamp != 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
char app = ' ';
set_row(_i++, "@0g%c", app);
set_row (_i,TR("TOTALE PASSIVO"));
set_row (_i++,"@81g%r", &_totale_sezione);
_totale_passivita = _totale_sezione;
@ -2792,8 +2748,8 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
if ((_sez_stamp == '2')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
char app = ' ';
set_row(_i++, "@0g%c", app);
set_row (_i,TR("TOTALE PASSIVO"));
set_row (_i,"@81g%r", &_totale_sezione);
set_row (_i++,"@111g%r", &_totale_sez_raf);
@ -2922,8 +2878,8 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
if (!_totale_passivita_gia_stampato)
if ((_sez_stamp == '2') && (_let_stamp != 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
char app = ' ';
set_row(_i++, "@0g%c", app);
set_row (_i,TR("TOTALE PASSIVO"));
set_row (_i,"@81g%r", &_totale_sezione);
set_row (_i++,"@111g%r", &_totale_sez_raf);
@ -3128,7 +3084,7 @@ void TStampa_IVdirettiva::stampa_totali_verifica()
classe.format("%c%c%8s%s", _sez_da_stamp,_let_da_stamp,(const char*)_numr_da_stamp,(const char*)_num_da_stamp);
if (classe > ris_imp && _risimp_fatto)
if (classe > ris_imp && !_risimp_fatto)
{
if (_num_tot == "20" || _num_tot == "21")
{
@ -3139,7 +3095,7 @@ void TStampa_IVdirettiva::stampa_totali_verifica()
set_row (_i,"@64g%r", &_tot_parz_prg_a);
set_row (_i,"@81g%r", &_tot_parz_mov_d);
set_row (_i,"@98g%r", &_tot_parz_mov_a);
_risimp_fatto = false;
_risimp_fatto = true;
if (_num.not_empty())
{
if (!_stampa_modulo)
@ -4699,6 +4655,10 @@ bool TStampa_IVdirettiva::user_create()
_msk->set_handler(F_DATAFINE, data_fine);
_msk->set_handler(F_DATABILRAF, data_bil_raff);
_msk->set_handler(F_ANNORAFFR, anno_ese_raff);
_sez_utile = ini_get_string(CONFIG_DITTA, "CG", "SezIVDUtile", "9")[0];
_lett_utile = ini_get_string(CONFIG_DITTA, "CG", "LettIVDUtile", "E")[0];
_classe_utile = ini_get_string(CONFIG_DITTA, "CG", "ClasseIVDUtile", "");
_num_utile = ini_get_string(CONFIG_DITTA, "CG", "NumIVDUtile", "22");
return true;
}

View File

@ -348,7 +348,9 @@ public:
virtual ~TPrimanota_application() { }
};
#ifndef __EXTRA__
inline TPrimanota_application& app()
{ return (TPrimanota_application&)main_app(); }
{ return (TPrimanota_application&)main_app(); }
#endif
#endif

View File

@ -1169,10 +1169,17 @@ bool TPrimanota_application::showpartite_handler(TMask_field& f, KEY k)
{
TString msg(128);
const TCurrency curr(speso.valore());
if (importo.is_zero())
{
a.set_cgs_imp(riga, speso);
a.calcola_saldo();
return true;
}
msg.format(FR("L'importo sul saldaconto della riga %d è %s"), (riga+1), (const char*)curr.string(true));
if (!speso.is_zero())
msg << (speso.sezione() == 'A' ? TR(" Avere") : TR(" Dare"));
msg << ". Si desidera correggere l'importo dela riga ?";
msg << ". Si desidera correggere l'importo della riga ?";
const bool ok = f.yesno_box(msg);
if (ok)
{

View File

@ -2014,7 +2014,7 @@ void TListaMov_application::imposta_parametri_stampa(const TMask& msk)
_provvis = msk.get_int(F_STAMPAMOVP);
_competence_only = msk.get_bool(F_COMPETENZA);
#ifdef CONT_SEP
_cont_sep = msk.get_bool(F_CONTSEP);
_cont_sep = msk.get(F_CONTSEP);
#endif
TRectype da (LF_MOV), a(LF_MOV);

View File

@ -235,7 +235,7 @@ BEGIN
DISPLAY "Codice@6" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CONTSEP CODTAB
CHECKTYPE REQUIRED
CHECKTYPE NORMAL
MODULE NP
END
#endif

View File

@ -315,7 +315,7 @@ BEGIN
DISPLAY "Codice@6" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CONTSEP CODTAB
CHECKTYPE REQUIRED
CHECKTYPE NORMAL
MODULE NP
END
#endif

View File

@ -1633,10 +1633,8 @@ void TStampa_registri_app::set_page_tot_reg()
} // for
}
if (printed)
{
flush();
fine_mese();
}
if (_stampa_plafonds)
stampa_plafonds(rr);
}

View File

@ -84,6 +84,13 @@
#define FLD_RISCO_S 378
#define FLD_RISCO_D 379
#define FLD_SEZ 380
#define FLD_LETT 381
#define FLD_CLASSE 382
#define FLD_NUM 383
#define FLD_SUB 384
#define FLD_SOTSUB 385
// gruppi
#define GROUP_SALDACONTO 1
#define GROUP_CONTABILITA 2

View File

@ -828,7 +828,7 @@ END
ENDPAGE
PAGE "Ratei/Risconti" -1 -1 77 8
PAGE "Ratei/Risconti/IV Direttiva" -1 -1 77 8
GROUPBOX DLG_NULL 78 4
BEGIN
@ -1022,6 +1022,109 @@ BEGIN
GROUP GROUP_CONTABILITA
END
GROUPBOX DLG_NULL 77 6
BEGIN
PROMPT 1 15 "@bConto Utile IV direttiva"
END
LIST FLD_SEZ 1 18
BEGIN
PROMPT 2 16 "Sezione "
ITEM "1|Attivita'"
ITEM "2|Passivita'"
ITEM "9|Conto economico"
KEY 1
FIELD SezIVDUtile
HELP "Sezione utile IV dir. CEE"
GROUP GROUP_CONTABILITA
END
STRING FLD_LETT 1
BEGIN
PROMPT 2 17 "Lettera "
FLAGS "U"
KEY 1
USE %IVD SELECT CODTAB?="??"
INPUT CODTAB[1,1] FLD_SEZ
INPUT CODTAB[2,2] FLD_LETT
DISPLAY "Sezione" CODTAB[1,1]
DISPLAY "Lettera" CODTAB[2,2]
DISPLAY "Descrizione@50" S0
OUTPUT FLD_SEZ CODTAB[1,1]
OUTPUT FLD_LETT CODTAB[2,2]
CHECKTYPE NORMAL
FIELD LettIVDUtile
HELP "Lettera utile IV dir. CEE"
GROUP GROUP_CONTABILITA
END
NUMBER FLD_CLASSE 8 4
BEGIN
PROMPT 2 18 "Classe "
FLAGS "MZ"
KEY 1
USE %IVD SELECT CODTAB[7,10]==""
COPY INPUT FLD_LETT
INPUT CODTAB[3,6] FLD_CLASSE
DISPLAY "Sezione" CODTAB[1,1]
DISPLAY "Lettera" CODTAB[2,2]
DISPLAY "Classe @M" CODTAB[3,6]
DISPLAY "Descrizione@50" S0
OUTPUT FLD_SEZ CODTAB[1,1]
OUTPUT FLD_LETT CODTAB[2,2]
OUTPUT FLD_CLASSE CODTAB[3,6]
CHECKTYPE NORMAL
FIELD ClasseIVDUtile
HELP "Classe utile IV dir. CEE (numero romano)"
GROUP GROUP_CONTABILITA
END
STRING FLD_NUM 2
BEGIN
PROMPT 2 19 "Numero "
KEY 1
USE %IVD
COPY INPUT FLD_CLASSE
INPUT CODTAB[7,8] FLD_NUM
INPUT CODTAB[9,10] FLD_SUB
DISPLAY "Sezione" CODTAB[1,1]
DISPLAY "Lettera" CODTAB[2,2]
DISPLAY "Classe @M" CODTAB[3,6]
DISPLAY "Numero" CODTAB[7,12]
DISPLAY "Descrizione@50" S0
OUTPUT FLD_SEZ CODTAB[1,1]
OUTPUT FLD_LETT CODTAB[2,2]
OUTPUT FLD_CLASSE CODTAB[3,6]
OUTPUT FLD_NUM CODTAB[7,8]
OUTPUT FLD_SUB CODTAB[9,10]
OUTPUT FLD_SOTSUB CODTAB[11,12]
MESSAGE EMPTY CLEAR,FLD_SUB
MESSAGE ENABLE,FLD_SUB
FIELD NumIVDUtile
HELP "Numero (arabo) secondo la IV dir. CEE"
GROUP GROUP_CONTABILITA
END
LIST FLD_SUB 2 9
BEGIN
PROMPT 15 19 ""
ITEM " |"
ITEM "02|Bis"
ITEM "03|Ter"
ITEM "04|Quater"
ITEM "05|Quinquies"
ITEM "06|Sexies"
FIELD SubIVDUtile
GROUP GROUP_CONTABILITA
END
STRING FLD_SOTSUB 2
BEGIN
PROMPT 30 19 ""
FIELD SotSubIVDUtile
GROUP GROUP_CONTABILITA
END
ENDPAGE
ENDMASK

File diff suppressed because it is too large Load Diff