Gestione IVA per Cassa
git-svn-id: svn://10.65.10.50/branches/R_10_00@22758 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c3d093ba1f
commit
7dbfa7b680
@ -624,6 +624,13 @@ void TPrimanota_application::init_mask(TMask& m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m.show(F_ADJUST_IVA, _quadratura);
|
m.show(F_ADJUST_IVA, _quadratura);
|
||||||
|
|
||||||
|
TMask_field* ixc = m.find_by_id(F_IVAXCASSA);
|
||||||
|
if (ixc)
|
||||||
|
{
|
||||||
|
const TDate dr = m.get(F_DATAREG);
|
||||||
|
ixc->enable(gestione_IVAxCassa(dr));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_DATACAMBIO (GROUP 3)
|
// Show/Hide campi valuta: F_VALUTA, F_CAMBIO, F_DATACAMBIO (GROUP 3)
|
||||||
|
@ -9,7 +9,7 @@ PAGE "Testata" -1 -1 77 20
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
GROUPBOX DLG_NULL 78 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 "@BMovimento di sola contabilita'"
|
PROMPT 1 0 "@BMovimento di sola contabilità"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_NUMREG 7
|
NUMBER F_NUMREG 7
|
||||||
@ -22,7 +22,7 @@ END
|
|||||||
|
|
||||||
DATE F_DATAREG
|
DATE F_DATAREG
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Data operazione "
|
PROMPT 2 1 "Data operazione "
|
||||||
FIELD DATAREG
|
FIELD DATAREG
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
MESSAGE COPY,K_DATAREG
|
MESSAGE COPY,K_DATAREG
|
||||||
@ -31,7 +31,7 @@ END
|
|||||||
|
|
||||||
DATE F_DATACOMP
|
DATE F_DATACOMP
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Data di competenza "
|
PROMPT 2 2 "Data di competenza "
|
||||||
FIELD DATACOMP
|
FIELD DATACOMP
|
||||||
MESSAGE COPY,K_DATACOMP
|
MESSAGE COPY,K_DATACOMP
|
||||||
FLAGS "G"
|
FLAGS "G"
|
||||||
|
37
cg/cg2100e.h
37
cg/cg2100e.h
@ -28,21 +28,22 @@
|
|||||||
#define S_SPUNTA 101
|
#define S_SPUNTA 101
|
||||||
#define S_IMPORTO 102
|
#define S_IMPORTO 102
|
||||||
#define S_SALDO 103
|
#define S_SALDO 103
|
||||||
#define S_VALUTA 104
|
#define S_DATAPAG 104
|
||||||
#define S_RESIDUO 105
|
#define S_VALUTA 105
|
||||||
#define S_TOTALE 106
|
#define S_RESIDUO 106
|
||||||
#define S_DATASCAD 107
|
#define S_TOTALE 107
|
||||||
#define S_NUMDOC 108
|
#define S_DATASCAD 108
|
||||||
#define S_DATADOC 109
|
#define S_NUMDOC 109
|
||||||
#define S_IMPORTO_EUR 110
|
#define S_DATADOC 110
|
||||||
#define S_RESIDUO_EUR 111
|
#define S_IMPORTO_EUR 111
|
||||||
#define S_ANNO 112
|
#define S_RESIDUO_EUR 112
|
||||||
#define S_PARTITA 113
|
#define S_ANNO 113
|
||||||
#define S_RIGAF 114
|
#define S_PARTITA 114
|
||||||
#define S_RATA 115
|
#define S_RIGAF 115
|
||||||
#define S_RIGAP 116
|
#define S_RATA 116
|
||||||
#define S_RITFIS 117
|
#define S_RIGAP 117
|
||||||
#define S_RITSOC 118
|
#define S_RITFIS 118
|
||||||
#define S_MODOPAG 119
|
#define S_RITSOC 119
|
||||||
#define S_NREG 120
|
#define S_MODOPAG 120
|
||||||
#define S_NRIG 121
|
#define S_NREG 121
|
||||||
|
#define S_NRIG 122
|
||||||
|
@ -225,6 +225,7 @@ BEGIN
|
|||||||
ITEM " @1B"
|
ITEM " @1B"
|
||||||
ITEM "Importo\nPagamento@13F"
|
ITEM "Importo\nPagamento@13F"
|
||||||
ITEM "Sal\ndo@3BF"
|
ITEM "Sal\ndo@3BF"
|
||||||
|
ITEM "Data@10"
|
||||||
ITEM "Val.@3"
|
ITEM "Val.@3"
|
||||||
ITEM "Residuo\nScadenza@13F"
|
ITEM "Residuo\nScadenza@13F"
|
||||||
ITEM "Importo\nScadenza@13F"
|
ITEM "Importo\nScadenza@13F"
|
||||||
@ -455,6 +456,11 @@ BEGIN
|
|||||||
ITEM "9|Bonifico"
|
ITEM "9|Bonifico"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
DATE S_DATAPAG
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Data "
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
TOOLBAR "topbar" 0 0 0 2
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
@ -2254,6 +2254,10 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TPrimanota_application& a = app();
|
TPrimanota_application& a = app();
|
||||||
|
TMask_field* ixc = m.find_by_id(F_IVAXCASSA);
|
||||||
|
if (ixc)
|
||||||
|
ixc->enable(gestione_IVAxCassa(dr));
|
||||||
|
|
||||||
const int ae = a._esercizi.date2esc(dr); // Codice esercizio
|
const int ae = a._esercizi.date2esc(dr); // Codice esercizio
|
||||||
if (ae <= 0)
|
if (ae <= 0)
|
||||||
return f.error_box(TR("La data dell'operazione non appartiene a nessun esercizio"));
|
return f.error_box(TR("La data dell'operazione non appartiene a nessun esercizio"));
|
||||||
@ -2271,8 +2275,6 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
|||||||
|
|
||||||
if (key == K_ENTER || f.focusdirty())
|
if (key == K_ENTER || f.focusdirty())
|
||||||
{
|
{
|
||||||
m.enable(F_IVAXCASSA, a.gestione_IVAxCassa(dr));
|
|
||||||
|
|
||||||
const long numreg = m.get_long(F_NUMREG);
|
const long numreg = m.get_long(F_NUMREG);
|
||||||
const bool error = numreg == 0 || numreg > a._lastreg;
|
const bool error = numreg == 0 || numreg > a._lastreg;
|
||||||
|
|
||||||
@ -2289,15 +2291,6 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
|||||||
f.warning_box(FR("La data dell'operazione è antecedente al %s,\n"
|
f.warning_box(FR("La data dell'operazione è antecedente al %s,\n"
|
||||||
"ultima registrazione sul libro giornale del %d"),
|
"ultima registrazione sul libro giornale del %d"),
|
||||||
gio.last_reg().string(), ar);
|
gio.last_reg().string(), ar);
|
||||||
|
|
||||||
const TDate chiusura = a._esercizi[ae].chiusura();
|
|
||||||
if (chiusura.ok() && dr <= chiusura)
|
|
||||||
{
|
|
||||||
f.error_box(FR("La data dell'operazione è antecedente al %s,\n"
|
|
||||||
"data di chiusura dell'esercizio %d"),
|
|
||||||
chiusura.stringa(), ae);
|
|
||||||
if (error) return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m.query_mode())
|
if (m.query_mode())
|
||||||
@ -2320,13 +2313,13 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
if (dr < reg.last_print())
|
if (dr < reg.last_print())
|
||||||
{
|
{
|
||||||
f.error_box(FR("La data dell'operazione e' antecedente al %s,\n"
|
f.error_box(FR("La data dell'operazione è antecedente al %s,\n"
|
||||||
"ultima stampa del registro '%s' del %d"),
|
"ultima stampa del registro '%s' del %d"),
|
||||||
reg.last_print().string(), (const char*)codreg, ar);
|
reg.last_print().string(), (const char*)codreg, ar);
|
||||||
if (error) return false;
|
if (error) return false;
|
||||||
}
|
}
|
||||||
if (f.dirty() && dr < reg.last_reg())
|
if (f.dirty() && dr < reg.last_reg())
|
||||||
f.warning_box(FR("La data dell'operazione e' antecedente al %s,\n"
|
f.warning_box(FR("La data dell'operazione è antecedente al %s,\n"
|
||||||
"ultima registrazione sul registro '%s' del %d"),
|
"ultima registrazione sul registro '%s' del %d"),
|
||||||
reg.last_reg().string(), (const char*)codreg, ar);
|
reg.last_reg().string(), (const char*)codreg, ar);
|
||||||
}
|
}
|
||||||
@ -2334,7 +2327,7 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
|||||||
if (reg.iva() != nessuna_iva && a._rel->controlla_liquidazione(dr, reg) == true)
|
if (reg.iva() != nessuna_iva && a._rel->controlla_liquidazione(dr, reg) == true)
|
||||||
{
|
{
|
||||||
const char* const mese = itom(dr.month());
|
const char* const mese = itom(dr.month());
|
||||||
f.warning_box(FR("La liquidazione IVA relativa al mese di %s e' gia' stata calcolata"), mese);
|
f.warning_box(FR("La liquidazione IVA relativa al mese di %s è già stata calcolata"), mese);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2401,9 +2394,9 @@ bool TPrimanota_application::datacomp_handler(TMask_field& f, KEY key)
|
|||||||
const TDate chiusura = app()._esercizi[ae].chiusura();
|
const TDate chiusura = app()._esercizi[ae].chiusura();
|
||||||
if (chiusura.ok() && dc <= chiusura)
|
if (chiusura.ok() && dc <= chiusura)
|
||||||
{
|
{
|
||||||
return f.error_box(FR("%s è antecedente al %s,\n"
|
f.error_box(FR("%s è antecedente al %s,\ndata di chiusura dell'esercizio %d"),
|
||||||
"data di chiusura dell'esercizio %d"),
|
|
||||||
data, chiusura.stringa(), ae);
|
data, chiusura.stringa(), ae);
|
||||||
|
// Errore non bloccante
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2839,13 +2832,17 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
|||||||
if (occas && a.occas_mask().get(O_CODICE).blank())
|
if (occas && a.occas_mask().get(O_CODICE).blank())
|
||||||
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
|
m.send_key(K_SPACE, F_OCCASEDIT); // Lancia maschera occasionali
|
||||||
|
|
||||||
if (m.field(F_IVAXCASSA).active())
|
TMask_field* ixc = m.find_by_id(F_IVAXCASSA);
|
||||||
|
if (ixc)
|
||||||
{
|
{
|
||||||
|
TString16 paiv = clifo.get(CLI_PAIV);
|
||||||
|
if (paiv.blank() && occas)
|
||||||
|
paiv = a.occas_mask().get(O_PAIV);
|
||||||
const int alleg = clifo.get_int(CLI_ALLEG);
|
const int alleg = clifo.get_int(CLI_ALLEG);
|
||||||
m.set(F_IVAXCASSA, alleg != 6);
|
const bool ic = ixc->active() && (alleg < 5 || alleg == 7) && paiv.full() && !m.get_bool(F_LIQDIFF);
|
||||||
|
ixc->set(ic ? "X" : "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -2929,7 +2926,6 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
|
|||||||
// Certified 99%
|
// Certified 99%
|
||||||
bool TPrimanota_application::liqdiff_handler(TMask_field& f, KEY key)
|
bool TPrimanota_application::liqdiff_handler(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (key == K_SPACE && f.mask().is_running())
|
if (key == K_SPACE && f.mask().is_running())
|
||||||
{
|
{
|
||||||
TSheet_field & cgs = app().cgs();
|
TSheet_field & cgs = app().cgs();
|
||||||
@ -2954,7 +2950,6 @@ bool TPrimanota_application::liqdiff_handler(TMask_field& f, KEY key)
|
|||||||
FOR_EACH_SHEET_ROW(cgs, r, row)
|
FOR_EACH_SHEET_ROW(cgs, r, row)
|
||||||
{
|
{
|
||||||
const TString4 type(row->get(rowtype));
|
const TString4 type(row->get(rowtype));
|
||||||
|
|
||||||
if (type == "D")
|
if (type == "D")
|
||||||
{
|
{
|
||||||
row->add(conto.get(0), tp);
|
row->add(conto.get(0), tp);
|
||||||
@ -2967,6 +2962,13 @@ bool TPrimanota_application::liqdiff_handler(TMask_field& f, KEY key)
|
|||||||
}
|
}
|
||||||
cgs.force_update();
|
cgs.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (key == K_ENTER)
|
||||||
|
{
|
||||||
|
if (f.get().full() && f.mask().get_bool(F_IVAXCASSA))
|
||||||
|
return f.error_box(TR("Non è ammesso selezionare IVA per cassa e liquidazione differita"));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3283,25 +3285,6 @@ bool TPrimanota_application::corrvaluta_handler(TMask_field& f, KEY key)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPrimanota_application::gestione_IVAxCassa(const TDate& data) const
|
|
||||||
{
|
|
||||||
bool yes = has_module(ICAUT);
|
|
||||||
if (yes)
|
|
||||||
{
|
|
||||||
TString16 codtab;
|
|
||||||
codtab.format("%05ld%04d", get_firm(), data.year());
|
|
||||||
const TRectype& lia = cache().get("%LIA", codtab);
|
|
||||||
yes = lia.get_bool("B5");
|
|
||||||
if (yes)
|
|
||||||
{
|
|
||||||
TDate dal = lia.get("D0"); if (!dal.ok()) dal = TDate(1,1,data.year());
|
|
||||||
TDate al = lia.get("D1"); if (!al.ok()) dal = TDate(31,12,data.year());
|
|
||||||
yes = data >= dal && data <= al;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return yes;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TPrimanota_application::activate_numrif(TMask& m, bool init_pag)
|
bool TPrimanota_application::activate_numrif(TMask& m, bool init_pag)
|
||||||
{
|
{
|
||||||
// Il numero riferimento esiste
|
// Il numero riferimento esiste
|
||||||
|
@ -207,7 +207,6 @@ protected:
|
|||||||
bool gestione_valuta() const { return _ges_val; }
|
bool gestione_valuta() const { return _ges_val; }
|
||||||
bool gestione_saldaconto() const { return _ges_sal; }
|
bool gestione_saldaconto() const { return _ges_sal; }
|
||||||
bool npart_is_prot() const { return _npart_is_prot; }
|
bool npart_is_prot() const { return _npart_is_prot; }
|
||||||
bool gestione_IVAxCassa(const TDate& data) const;
|
|
||||||
|
|
||||||
bool is_saldaconto() const { return _is_saldaconto; }
|
bool is_saldaconto() const { return _is_saldaconto; }
|
||||||
bool is_fattura() const { return is_saldaconto() && causale().tipomov() == 1; }
|
bool is_fattura() const { return is_saldaconto() && causale().tipomov() == 1; }
|
||||||
|
@ -148,6 +148,7 @@ void TEasySolder_mask::save_sheet()
|
|||||||
const real ritsoc = valuta.in_valuta() ? ZERO : get_row_real(s, row, S_RITSOC);
|
const real ritsoc = valuta.in_valuta() ? ZERO : get_row_real(s, row, S_RITSOC);
|
||||||
const bool a_saldo = goodrat && get_row_bool(s, row, S_SALDO);
|
const bool a_saldo = goodrat && get_row_bool(s, row, S_SALDO);
|
||||||
const TTipo_pag tipopag = (TTipo_pag)get_row_int(s, row, S_MODOPAG);
|
const TTipo_pag tipopag = (TTipo_pag)get_row_int(s, row, S_MODOPAG);
|
||||||
|
const TDate datapag = get_row_str(s, row, S_DATAPAG);
|
||||||
|
|
||||||
if (a_saldo || !importo.is_zero() || !ritfis.is_zero() || !ritsoc.is_zero() || nrigp > 0)
|
if (a_saldo || !importo.is_zero() || !ritfis.is_zero() || !ritsoc.is_zero() || nrigp > 0)
|
||||||
{
|
{
|
||||||
@ -173,7 +174,7 @@ void TEasySolder_mask::save_sheet()
|
|||||||
part.put(PART_DATADOC, cm.get(F_DATADOC));
|
part.put(PART_DATADOC, cm.get(F_DATADOC));
|
||||||
part.put(PART_DATAREG, cm.get(F_DATAREG));
|
part.put(PART_DATAREG, cm.get(F_DATAREG));
|
||||||
part.put(PART_DESCR, cm.get(F_DESCR));
|
part.put(PART_DESCR, cm.get(F_DESCR));
|
||||||
part.put(PART_DATAPAG, cm.get(F_DATAREG));
|
part.put(PART_DATAPAG, datapag);
|
||||||
part.put(PART_TIPOPAG, tipopag);
|
part.put(PART_TIPOPAG, tipopag);
|
||||||
|
|
||||||
// Copia dati causale corrente
|
// Copia dati causale corrente
|
||||||
@ -760,6 +761,19 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word flags)
|
|||||||
set_row_str(sheet, row, S_NUMDOC, riga.get(PART_NUMDOC));
|
set_row_str(sheet, row, S_NUMDOC, riga.get(PART_NUMDOC));
|
||||||
set_row_str(sheet, row, S_DATADOC, riga.get(PART_DATADOC));
|
set_row_str(sheet, row, S_DATADOC, riga.get(PART_DATADOC));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Propone data di pagamento per le RIBA
|
||||||
|
if (!good_pag)
|
||||||
|
{
|
||||||
|
TDate dp(TODAY);
|
||||||
|
if (scad->get_int(SCAD_TIPOPAG) > 1)
|
||||||
|
{
|
||||||
|
const TDate ds = scad->get(SCAD_DATASCAD);
|
||||||
|
if (ds > dp)
|
||||||
|
dp = ds;
|
||||||
|
}
|
||||||
|
set_row_str(sheet, row, S_DATAPAG, dp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (good_pag)
|
if (good_pag)
|
||||||
{
|
{
|
||||||
@ -794,7 +808,11 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word flags)
|
|||||||
set_row_int(sheet, row, S_RIGAF, nriga);
|
set_row_int(sheet, row, S_RIGAF, nriga);
|
||||||
set_row_int(sheet, row, S_RATA, nrata);
|
set_row_int(sheet, row, S_RATA, nrata);
|
||||||
set_row_str(sheet, row, S_MODOPAG, rigp.get(PART_TIPOPAG));
|
set_row_str(sheet, row, S_MODOPAG, rigp.get(PART_TIPOPAG));
|
||||||
if (!good_rat)
|
if (good_rat)
|
||||||
|
{
|
||||||
|
set_row_str(sheet, row, S_DATAPAG, rigp.get(PART_DATAPAG));
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
set_row_str(sheet, row, S_DATASCAD, rigp.get(PART_DATAPAG));
|
set_row_str(sheet, row, S_DATASCAD, rigp.get(PART_DATAPAG));
|
||||||
const int nrow = sheet.items()-1;
|
const int nrow = sheet.items()-1;
|
||||||
|
@ -113,9 +113,9 @@ bool TLiquidazione_app::user_create()
|
|||||||
if (msg != NULL) subj = msg->body();
|
if (msg != NULL) subj = msg->body();
|
||||||
|
|
||||||
if (_is_interactive)
|
if (_is_interactive)
|
||||||
pnd = new TProgind (3,TR("Preparazione archivi\nPrego attendere"),
|
pnd = new TProgind (3,TR("Preparazione archivi"), false, true);
|
||||||
FALSE, TRUE);
|
else
|
||||||
else begin_wait();
|
begin_wait();
|
||||||
|
|
||||||
_nditte = new TRelation(LF_NDITTE);
|
_nditte = new TRelation(LF_NDITTE);
|
||||||
_nditte->add(LF_ATTIV,"CODDITTA=CODDITTA");
|
_nditte->add(LF_ATTIV,"CODDITTA=CODDITTA");
|
||||||
@ -353,16 +353,15 @@ bool TLiquidazione_app::user_create()
|
|||||||
_isannual = _isriepilogo = _month == 13;
|
_isannual = _isriepilogo = _month == 13;
|
||||||
|
|
||||||
//modifica del 03/05/1995
|
//modifica del 03/05/1995
|
||||||
int need_refresh = FALSE;
|
bool need_refresh = false;
|
||||||
int m;
|
for (int m = 1; m < _month; m++)
|
||||||
|
{
|
||||||
for (m = 1; m < _month; m++)
|
|
||||||
if (is_month_ok_strict(m) && (!look_lim(m) || !_lim->get_bool("B0")))
|
if (is_month_ok_strict(m) && (!look_lim(m) || !_lim->get_bool("B0")))
|
||||||
{
|
{
|
||||||
need_refresh = TRUE;
|
need_refresh = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (need_refresh)
|
if (need_refresh)
|
||||||
_recalc = ever;
|
_recalc = ever;
|
||||||
|
|
||||||
@ -382,9 +381,10 @@ bool TLiquidazione_app::user_create()
|
|||||||
_nditte->read();
|
_nditte->read();
|
||||||
|
|
||||||
for (int mese = 1; mese < _month; mese++)
|
for (int mese = 1; mese < _month; mese++)
|
||||||
|
{
|
||||||
if ((is_month_plain(mese) && !(_freqviva == "T" && _recalc_regis)) || _recalc == ever)
|
if ((is_month_plain(mese) && !(_freqviva == "T" && _recalc_regis)) || _recalc == ever)
|
||||||
update_firm(mese);
|
update_firm(mese);
|
||||||
|
}
|
||||||
if (is_month_plain(_month) || _month == 13)
|
if (is_month_plain(_month) || _month == 13)
|
||||||
update_firm(_month);
|
update_firm(_month);
|
||||||
|
|
||||||
@ -396,7 +396,7 @@ bool TLiquidazione_app::user_create()
|
|||||||
// se ci sono altri mesi dopo l'ultimo calcolato, invalida il
|
// se ci sono altri mesi dopo l'ultimo calcolato, invalida il
|
||||||
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
||||||
// successivi (evitando problemi per credito precedente)
|
// successivi (evitando problemi per credito precedente)
|
||||||
for (m = _month+1; m <= 13; m++) if (look_lim(m))
|
for (int m = _month+1; m <= 13; m++) if (look_lim(m))
|
||||||
{
|
{
|
||||||
_lim->zero("B0");
|
_lim->zero("B0");
|
||||||
_lim->rewrite();
|
_lim->rewrite();
|
||||||
@ -499,7 +499,7 @@ bool TLiquidazione_app::user_destroy()
|
|||||||
delete _rel;
|
delete _rel;
|
||||||
delete _cur;
|
delete _cur;
|
||||||
|
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::set_print(int)
|
bool TLiquidazione_app::set_print(int)
|
||||||
@ -512,10 +512,10 @@ bool TLiquidazione_app::set_print(int)
|
|||||||
switch(_menu)
|
switch(_menu)
|
||||||
{
|
{
|
||||||
case 1: // liquidazione
|
case 1: // liquidazione
|
||||||
_isprint = TRUE;
|
_isprint = true;
|
||||||
while (set_liquidazione())
|
while (set_liquidazione())
|
||||||
{
|
{
|
||||||
if (_selected.ones() > 0l)
|
if (_selected.ones())
|
||||||
return recalc_all() && _isprint;
|
return recalc_all() && _isprint;
|
||||||
else
|
else
|
||||||
warning_box(TR("Nessuna ditta selezionata!"));
|
warning_box(TR("Nessuna ditta selezionata!"));
|
||||||
@ -598,11 +598,10 @@ bool TLiquidazione_app::ch_year_handler(TMask_field& f, KEY key)
|
|||||||
app().reset_choices(f.mask());
|
app().reset_choices(f.mask());
|
||||||
app().set_year(f.get());
|
app().set_year(f.get());
|
||||||
app().build_nomiditte();
|
app().build_nomiditte();
|
||||||
app().build_ditte_sheet(f.mask().source_file() == "cg4300a.msk" ?
|
app().build_ditte_sheet(f.mask().source_file().ends_with("cg4300a.msk") ?
|
||||||
(wht)atoi(f.mask().get(CG43_RDB_VERS)) :
|
(wht)f.mask().get_int(CG43_RDB_VERS) : all);
|
||||||
all);
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TLiquidazione_app::build_nomiditte(TProgind* pnd)
|
void TLiquidazione_app::build_nomiditte(TProgind* pnd)
|
||||||
@ -671,7 +670,7 @@ bool TLiquidazione_app::to_ditt_handler(TMask_field& f, KEY key)
|
|||||||
app().set_choice_limits(m);
|
app().set_choice_limits(m);
|
||||||
m.set(CG43_FLD_SELECTED, l);
|
m.set(CG43_FLD_SELECTED, l);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::fr_ditt_handler(TMask_field& f, KEY key)
|
bool TLiquidazione_app::fr_ditt_handler(TMask_field& f, KEY key)
|
||||||
@ -679,7 +678,7 @@ bool TLiquidazione_app::fr_ditt_handler(TMask_field& f, KEY key)
|
|||||||
TMask& m = f.mask();
|
TMask& m = f.mask();
|
||||||
if (key == K_F9)
|
if (key == K_F9)
|
||||||
{
|
{
|
||||||
TArray_sheet* sh = ((TLiquidazione_app&)main_app()).get_ditte_sheet();
|
TArray_sheet* sh = app().get_ditte_sheet();
|
||||||
|
|
||||||
sh->disable_check();
|
sh->disable_check();
|
||||||
sh->disable(DLG_USER);
|
sh->disable(DLG_USER);
|
||||||
@ -700,7 +699,7 @@ bool TLiquidazione_app::fr_ditt_handler(TMask_field& f, KEY key)
|
|||||||
app().set_choice_limits(m);
|
app().set_choice_limits(m);
|
||||||
m.set(CG43_FLD_SELECTED, l);
|
m.set(CG43_FLD_SELECTED, l);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::what_freq_handler(TMask_field& f, KEY key)
|
bool TLiquidazione_app::what_freq_handler(TMask_field& f, KEY key)
|
||||||
@ -721,7 +720,7 @@ bool TLiquidazione_app::what_freq_handler(TMask_field& f, KEY key)
|
|||||||
app().build_ditte_sheet((wht)atoi(f.get()));
|
app().build_ditte_sheet((wht)atoi(f.get()));
|
||||||
app().reset_choices(f.mask());
|
app().reset_choices(f.mask());
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::lst_tm_handler(TMask_field& f, KEY key)
|
bool TLiquidazione_app::lst_tm_handler(TMask_field& f, KEY key)
|
||||||
@ -747,12 +746,11 @@ bool TLiquidazione_app::lst_tm_handler(TMask_field& f, KEY key)
|
|||||||
TWait_cursor hourglass;
|
TWait_cursor hourglass;
|
||||||
app().reset_choices(f.mask());
|
app().reset_choices(f.mask());
|
||||||
app().set_month(m);
|
app().set_month(m);
|
||||||
app().build_ditte_sheet(f.mask().source_file() == "cg4300a.msk" ?
|
app().build_ditte_sheet(f.mask().source_file().ends_with("cg4300a.msk") ?
|
||||||
(wht)atoi(f.mask().get(CG43_RDB_VERS)) :
|
(wht)f.mask().get_int(CG43_RDB_VERS) : all);
|
||||||
all);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::select_button(TMask_field& f, KEY key)
|
bool TLiquidazione_app::select_button(TMask_field& f, KEY key)
|
||||||
@ -769,14 +767,14 @@ bool TLiquidazione_app::select_button(TMask_field& f, KEY key)
|
|||||||
app().set_choice_limits(f.mask());
|
app().set_choice_limits(f.mask());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::reset_button(TMask_field& f, KEY key)
|
bool TLiquidazione_app::reset_button(TMask_field& f, KEY key)
|
||||||
{
|
{
|
||||||
if (key == K_SPACE)
|
if (key == K_SPACE)
|
||||||
app().reset_choices(f.mask());
|
app().reset_choices(f.mask());
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::chk_final_handler(TMask_field& f, KEY key)
|
bool TLiquidazione_app::chk_final_handler(TMask_field& f, KEY key)
|
||||||
@ -790,19 +788,28 @@ bool TLiquidazione_app::chk_final_handler(TMask_field& f, KEY key)
|
|||||||
const bool abilita = !m.get_bool(CG43_CHK_FINAL) && mese != 13;
|
const bool abilita = !m.get_bool(CG43_CHK_FINAL) && mese != 13;
|
||||||
m.enable(CG43_LST_CALC, abilita);
|
m.enable(CG43_LST_CALC, abilita);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TLiquidazione_app::reset_choices(TMask& m)
|
void TLiquidazione_app::reset_choices(TMask& m)
|
||||||
{
|
{
|
||||||
_selected.reset();
|
_selected.reset();
|
||||||
_ditte->check(-1, FALSE);
|
_ditte->check(-1, FALSE);
|
||||||
if (m.source_file() == "cg4300a.msk")
|
if (m.source_file().ends_with("cg4300a.msk"))
|
||||||
{
|
{
|
||||||
const long ditta = get_firm();
|
const long ditta = get_firm();
|
||||||
m.set(CG43_FLD_DFR, ditta, 0x2);
|
m.set(CG43_FLD_DFR, ditta, 0x2);
|
||||||
m.set(CG43_FLD_DTO, ditta, 0x2);
|
m.set(CG43_FLD_DTO, ditta, 0x2);
|
||||||
const wht freq = (wht)m.get_int(CG43_RDB_VERS);
|
|
||||||
|
wht freq = all;
|
||||||
|
if (look_lia(ditta, false, m.get_int(CG43_FLD_ANNO)))
|
||||||
|
{
|
||||||
|
freq = _lia->get_char("S7") == 'T' ? trimestre : mnt;
|
||||||
|
if (m.get_int(CG43_RDB_VERS) != freq)
|
||||||
|
m.set(CG43_RDB_VERS, freq, 0x3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
freq = (wht)m.get_int(CG43_RDB_VERS);
|
||||||
select_firm_range(ditta, ditta, freq);
|
select_firm_range(ditta, ditta, freq);
|
||||||
set_choice_limits(m);
|
set_choice_limits(m);
|
||||||
}
|
}
|
||||||
@ -935,5 +942,5 @@ int cg4300(int argc, char* argv[])
|
|||||||
TLiquidazione_app* main_app = new TLiquidazione_app(menu);
|
TLiquidazione_app* main_app = new TLiquidazione_app(menu);
|
||||||
main_app->run(argc, argv, title);
|
main_app->run(argc, argv, title);
|
||||||
delete main_app;
|
delete main_app;
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
11
cg/cg4300.h
11
cg/cg4300.h
@ -450,8 +450,10 @@ protected:
|
|||||||
|
|
||||||
bool residuo_da_liquidare(long numreg, int numrig, const TDate& last_pag,
|
bool residuo_da_liquidare(long numreg, int numrig, const TDate& last_pag,
|
||||||
real& importo_res, real& imponibile_res, real& imposta_res) const;
|
real& importo_res, real& imponibile_res, real& imposta_res) const;
|
||||||
bool print_inc_diff_log(int& rw, int tipoatt);
|
bool print_inc_diff_log(int& rw, int tipoatt, int tipoiva);
|
||||||
bool print_dainc_diff_log(int& rw, int tipoatt);
|
bool print_dainc_diff_log(int& rw, int tipoatt, int tipoiva);
|
||||||
|
bool ivadiff_chiusa(const TRectype& mov, const TDate& fine) const;
|
||||||
|
bool sarebbe_da_pagare(const TRectype& mov, const TDate& fine) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -546,11 +548,14 @@ public:
|
|||||||
void add_plafond (int month, const char* codatt, int type,
|
void add_plafond (int month, const char* codatt, int type,
|
||||||
const real& howmuch, bool intra);
|
const real& howmuch, bool intra);
|
||||||
|
|
||||||
|
// IVA differita e per cassa
|
||||||
|
void zero_diff(int month, const char* codatt); // Azzera tabella IVA x Cassa
|
||||||
|
|
||||||
// Ritorna il parametro della liquidazione differita per la ditta corrente, cosi come
|
// Ritorna il parametro della liquidazione differita per la ditta corrente, cosi come
|
||||||
// e' scritto sui parametri liquidazione (LIA)
|
// e' scritto sui parametri liquidazione (LIA)
|
||||||
// Se si passa 0 (default) vede prende la ditta correntemente in corso di calcolo
|
// Se si passa 0 (default) vede prende la ditta correntemente in corso di calcolo
|
||||||
// Analogamente per l'anno
|
// Analogamente per l'anno
|
||||||
bool TLiquidazione_app::is_differita(long firm = 0, int year = 0);
|
bool is_differita(long firm = 0, int year = 0);
|
||||||
|
|
||||||
// ritorna l'aliquota ordinaria dal
|
// ritorna l'aliquota ordinaria dal
|
||||||
// codice IVA apposito immesso nei parametri studio
|
// codice IVA apposito immesso nei parametri studio
|
||||||
|
330
cg/cg4301.cpp
330
cg/cg4301.cpp
@ -33,14 +33,10 @@
|
|||||||
|
|
||||||
bool TLiquidazione_app::recalc_all()
|
bool TLiquidazione_app::recalc_all()
|
||||||
{
|
{
|
||||||
_prind = new TProgind(_selected.ones()*2, _printonly ?
|
TString msg;
|
||||||
TR(" Stampa liquidazione... \n"
|
msg = _printonly ? TR("Stampa") : TR("Calcolo");
|
||||||
" Preparazione archivi \n"
|
msg << TR(" liquidazione:\npreparazione archivi...");
|
||||||
" ") :
|
_prind = new TProgind(_selected.ones()*2, msg, true, true);
|
||||||
TR(" Calcolo liquidazione... \n"
|
|
||||||
" Preparazione archivi \n"
|
|
||||||
" "),
|
|
||||||
TRUE,TRUE);
|
|
||||||
|
|
||||||
for (int l = 0; l < _ditte->items(); l++)
|
for (int l = 0; l < _ditte->items(); l++)
|
||||||
{
|
{
|
||||||
@ -65,14 +61,14 @@ bool TLiquidazione_app::recalc_all()
|
|||||||
_nditte->curr().put("CODDITTA",codditta);
|
_nditte->curr().put("CODDITTA",codditta);
|
||||||
_nditte->read();
|
_nditte->read();
|
||||||
_freqviva = nomeditta.get(3);
|
_freqviva = nomeditta.get(3);
|
||||||
bool mens = _freqviva == "M";
|
const bool mens = _freqviva == "M";
|
||||||
|
|
||||||
// determina attivita' prevalente e istanzia cazzuole
|
// determina attivita' prevalente e istanzia cazzuole
|
||||||
// per vedere che Kazzo di liquidazione calcolare
|
// per vedere che Kazzo di liquidazione calcolare
|
||||||
TString attprev = _nditte->curr().get("CODATTPREV");
|
const TString8 attprev = _nditte->curr().get("CODATTPREV");
|
||||||
TString16 key;
|
TString16 key;
|
||||||
|
|
||||||
key.format("%ld|%s", codditta, (const char *) attprev);
|
key.format("%ld|%s", codditta, (const char *)attprev);
|
||||||
|
|
||||||
const TRectype & atts = cache().get(LF_ATTIV, key);
|
const TRectype & atts = cache().get(LF_ATTIV, key);
|
||||||
// istanzia benzinaro
|
// istanzia benzinaro
|
||||||
@ -104,14 +100,14 @@ bool TLiquidazione_app::recalc_all()
|
|||||||
* --------------------------------------------------------------
|
* --------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int need_refresh = FALSE;
|
int need_refresh = false;
|
||||||
if (_recalc != ever)
|
if (_recalc != ever)
|
||||||
{
|
{
|
||||||
int m = _month == 13 ? _month : 1;
|
int m = _month == 13 ? _month : 1;
|
||||||
for (; m < _month; m++)
|
for (; m < _month; m++)
|
||||||
if (is_month_ok_strict(m) && (!look_lim(m) || !_lim->get_bool("B0")))
|
if (is_month_ok_strict(m) && (!look_lim(m) || !_lim->get_bool("B0")))
|
||||||
{
|
{
|
||||||
need_refresh = TRUE;
|
need_refresh = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,11 +118,14 @@ bool TLiquidazione_app::recalc_all()
|
|||||||
}
|
}
|
||||||
int m;
|
int m;
|
||||||
for (m = 1; m <= _month; m++) // fino a 13 compreso
|
for (m = 1; m <= _month; m++) // fino a 13 compreso
|
||||||
|
{
|
||||||
if (is_month_plain(m) || _recalc == ever)
|
if (is_month_plain(m) || _recalc == ever)
|
||||||
{
|
{
|
||||||
if (_prind->iscancelled()) break;
|
if (_prind->iscancelled())
|
||||||
|
break;
|
||||||
update_firm(m);
|
update_firm(m);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// se ci sono altri mesi dopo l'ultimo calcolato, invalida il
|
// se ci sono altri mesi dopo l'ultimo calcolato, invalida il
|
||||||
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
||||||
@ -158,15 +157,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
// Ritorna FALSE soltanto se il ricalcolo era necessario e non e'
|
// Ritorna FALSE soltanto se il ricalcolo era necessario e non e'
|
||||||
// stato effettuato per scelta dello stronzo commercialista.
|
// stato effettuato per scelta dello stronzo commercialista.
|
||||||
|
|
||||||
TConfig c(CONFIG_DITTA, "cg");
|
_isdiff = ini_get_bool(CONFIG_DITTA, "cg", "GesLiqDiff");
|
||||||
|
|
||||||
_isdiff = c.get_bool("GesLiqDiff");
|
|
||||||
if (_isdiff)
|
|
||||||
{
|
|
||||||
TFilename tmp; tmp.tempdir();
|
|
||||||
tmp.add("liqdiff.txt");
|
|
||||||
ofstream log(tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (month == 13 && recalc)
|
if (month == 13 && recalc)
|
||||||
{
|
{
|
||||||
@ -180,9 +171,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
look_lim(liq_month(month), TRUE);
|
look_lim(liq_month(month), TRUE);
|
||||||
_isdiffacc = is_differita();
|
_isdiffacc = is_differita(); // Gestione differimento acconto IVA
|
||||||
_isdifferita = _isdiffacc;
|
_isdifferita = _isdiffacc;
|
||||||
|
|
||||||
look_lia();
|
look_lia();
|
||||||
@ -192,7 +182,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
// controlla che il periodo corrente non sia l'inizio dell'attivita'
|
// controlla che il periodo corrente non sia l'inizio dell'attivita'
|
||||||
// nel caso, differita va a FALSE
|
// nel caso, differita va a FALSE
|
||||||
_monthinatt = 1;
|
_monthinatt = 1;
|
||||||
const TDate inatt = _nditte->curr().get("DINIZIOATT");
|
const TDate inatt = _nditte->curr().get(NDT_DINIZIOATT);
|
||||||
if (is_in_liq_period(inatt))
|
if (is_in_liq_period(inatt))
|
||||||
_isdifferita = false;
|
_isdifferita = false;
|
||||||
if (inatt.year() == atoi(_year))
|
if (inatt.year() == atoi(_year))
|
||||||
@ -222,24 +212,24 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
_nditte->save_status();
|
_nditte->save_status();
|
||||||
if (_nditte->is_first_match(LF_ATTIV))
|
if (_nditte->is_first_match(LF_ATTIV))
|
||||||
{
|
{
|
||||||
TString buf(256);
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
const TString8 codatt = _nditte->curr(LF_ATTIV).get("CODATT");
|
const TString8 codatt = _nditte->curr(LF_ATTIV).get("CODATT");
|
||||||
TString80 desatt = _nditte->curr(LF_ATTIV).get("DESCR");
|
const TString80 desatt = _nditte->curr(LF_ATTIV).get("DESCR");
|
||||||
quater = _nditte->curr().get_bool("FLIVA11Q");
|
quater = _nditte->curr().get_bool("FLIVA11Q");
|
||||||
|
|
||||||
// attivita' mista: ce ne sono in realta' due
|
// attività mista: ce ne sono in realtà due
|
||||||
// viene calcolato nel ciclo su tipoatt (che viene ripetuto solo se diventa TRUE);
|
// viene calcolato nel ciclo su tipoatt (che viene ripetuto solo se diventa TRUE);
|
||||||
_mixed = false;
|
_mixed = false;
|
||||||
|
|
||||||
buf.format( _printonly ? FR("Stampa liquidazione (%d)...\n%s: %s\n") :
|
if (_prind)
|
||||||
FR("Calcolo liquidazione (%d)...\n%s: %s\n"),
|
{
|
||||||
month,
|
TString buf(80);
|
||||||
(const char*)_nditte_r->get("RAGSOC"),
|
buf.format( _printonly ? FR("Stampa liquidazione (mese %d)...\n%s: %s\n") :
|
||||||
(const char*)desatt);
|
FR("Calcolo liquidazione (mese %d)...\n%s: %s\n"),
|
||||||
|
month, (const char*)_nditte_r->get(NDT_RAGSOC), (const char*)desatt);
|
||||||
if (_prind) _prind->set_text(buf);
|
_prind->set_text(buf);
|
||||||
|
}
|
||||||
|
|
||||||
// se ricalcola l'annuale si tiene tutte le vendite e corrispettivi di
|
// se ricalcola l'annuale si tiene tutte le vendite e corrispettivi di
|
||||||
// tutti i lerci mesi. Analogamente se sta calcolando una trimestrale.
|
// tutti i lerci mesi. Analogamente se sta calcolando una trimestrale.
|
||||||
@ -255,11 +245,14 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
|
|
||||||
for (int tipoatt = 1; tipoatt <= (_mixed ? 2 : 1); tipoatt++)
|
for (int tipoatt = 1; tipoatt <= (_mixed ? 2 : 1); tipoatt++)
|
||||||
{
|
{
|
||||||
bool waspla = false;
|
|
||||||
|
|
||||||
TString8 cattiv(codatt);
|
TString8 cattiv(codatt);
|
||||||
cattiv << tipoatt;
|
cattiv << tipoatt;
|
||||||
if (tipoatt == 1 && (waspla = look_pla(cattiv, false)))
|
|
||||||
|
const bool waspla = look_pla(cattiv, false);
|
||||||
|
if (!waspla)
|
||||||
|
break; // Non calcolare attività inesistenti 29-11-2012
|
||||||
|
|
||||||
|
if (tipoatt == 1 && waspla)
|
||||||
{
|
{
|
||||||
_p8 = _pla->get_real("R5");
|
_p8 = _pla->get_real("R5");
|
||||||
_p8b = _pla->get_real("R6");
|
_p8b = _pla->get_real("R6");
|
||||||
@ -280,7 +273,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
for (int i = atoi(_year); i>=anno; i--)
|
for (int i = atoi(_year); i>=anno; i--)
|
||||||
{
|
{
|
||||||
_year.format("%d", i);
|
_year.format("%d", i);
|
||||||
if (look_pla(cattiv, FALSE)) // Reperisce percentuale prorata anno indicato (se esiste la tabella)
|
if (look_pla(cattiv, false)) // Reperisce percentuale prorata anno indicato (se esiste la tabella)
|
||||||
pa.add(_year, _pla->get_real("R8"));
|
pa.add(_year, _pla->get_real("R8"));
|
||||||
}
|
}
|
||||||
_year = yr; // Risetta l'anno corretto e riposiziona la tabella...
|
_year = yr; // Risetta l'anno corretto e riposiziona la tabella...
|
||||||
@ -327,14 +320,14 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!_isregis)
|
if (!_isregis)
|
||||||
stliq = riepliq = TRUE;
|
stliq = riepliq = true;
|
||||||
|
|
||||||
if (_comp_acconto)
|
if (_comp_acconto)
|
||||||
stliq = riepliq = FALSE;
|
stliq = riepliq = false;
|
||||||
|
|
||||||
if (calc || !recalc)
|
if (calc || !recalc)
|
||||||
if (!update_att(month, cattiv) && stliq)
|
if (!update_att(month, cattiv) && stliq)
|
||||||
describe_error(TR("Attivita' non ricalcolate: possibili errori"),
|
describe_error(TR("Attività non ricalcolate: possibili errori"),
|
||||||
codatt);
|
codatt);
|
||||||
if (_recalc_regis)
|
if (_recalc_regis)
|
||||||
continue;
|
continue;
|
||||||
@ -488,9 +481,11 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
|||||||
"R10", "R11", "R12", "R13", "R14", "R15", "R16", "R17", "R18", "R19",
|
"R10", "R11", "R12", "R13", "R14", "R15", "R16", "R17", "R18", "R19",
|
||||||
"R20", "R21", "R22", "R23", "R24", "R25", "R26", "R27", "R28", "R29",
|
"R20", "R21", "R22", "R23", "R24", "R25", "R26", "R27", "R28", "R29",
|
||||||
"R30", "R31", "R32", "R33",
|
"R30", "R31", "R32", "R33",
|
||||||
"S0", "S1", "S2" };
|
"S0", "S1", "S2", NULL };
|
||||||
|
|
||||||
TString att, year, codtab;
|
TString80 codtab;
|
||||||
|
TString16 att;
|
||||||
|
TString4 year;
|
||||||
int m, start, stop;
|
int m, start, stop;
|
||||||
|
|
||||||
start = 0; stop = 1;
|
start = 0; stop = 1;
|
||||||
@ -503,7 +498,7 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
|||||||
else
|
else
|
||||||
if (atoi(_year) < 1998)
|
if (atoi(_year) < 1998)
|
||||||
stop = 0; // Solo PIM
|
stop = 0; // Solo PIM
|
||||||
|
// PIM / PIS
|
||||||
for (int i = start; i <= stop; i++) // Ciclo per le tabelle da azzerare
|
for (int i = start; i <= stop; i++) // Ciclo per le tabelle da azzerare
|
||||||
{
|
{
|
||||||
TTable * tab = (TTable*) arr[i];
|
TTable * tab = (TTable*) arr[i];
|
||||||
@ -516,7 +511,7 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
|||||||
year = codtab.mid(0,4);
|
year = codtab.mid(0,4);
|
||||||
if (m == month && att == codatt && year == _year)
|
if (m == month && att == codatt && year == _year)
|
||||||
{
|
{
|
||||||
for (int j = 0; j < 37; j++) // Ciclo per i campi del record da azzerare (34 + 3)
|
for (int j = 0; flds[j]; j++) // Ciclo per i campi del record da azzerare (34 + 3)
|
||||||
tab->zero(flds[j]);
|
tab->zero(flds[j]);
|
||||||
tab->rewrite();
|
tab->rewrite();
|
||||||
}
|
}
|
||||||
@ -528,7 +523,7 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
|||||||
if (look_plm(month, codatt))
|
if (look_plm(month, codatt))
|
||||||
{
|
{
|
||||||
// zero PLM, POM, PAM, PUM
|
// zero PLM, POM, PAM, PUM
|
||||||
TString codtab(_plm->get("CODTAB"));
|
const TString16 codtab(_plm->get("CODTAB"));
|
||||||
_plm->zero();
|
_plm->zero();
|
||||||
_pom->zero();
|
_pom->zero();
|
||||||
_pam->zero();
|
_pam->zero();
|
||||||
@ -552,8 +547,8 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
|||||||
const TString8 att = (const char*)*_pia_codatt;
|
const TString8 att = (const char*)*_pia_codatt;
|
||||||
if (m == month && att == codatt && (_year == *_pia_anno))
|
if (m == month && att == codatt && (_year == *_pia_anno))
|
||||||
{
|
{
|
||||||
_pia->put("R0",""); // Imponibile
|
_pia->zero("R0"); // Imponibile
|
||||||
_pia->put("R1",""); // Imposta
|
_pia->zero("R1"); // Imposta
|
||||||
_pia->rewrite();
|
_pia->rewrite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -561,23 +556,90 @@ void TLiquidazione_app::zero_att(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
if (_isplafond && month != 13)
|
if (_isplafond && month != 13)
|
||||||
zero_plafond(month,codatt);
|
zero_plafond(month,codatt);
|
||||||
|
|
||||||
|
if (month != 13)
|
||||||
|
zero_diff(month,codatt);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TLiquidazione_app::ivadiff_chiusa(const TRectype& mov, const TDate& fine) const
|
||||||
|
{
|
||||||
|
const long numreg = mov.get_long(MOV_NUMREG);
|
||||||
|
|
||||||
|
TString query;
|
||||||
|
query << "USA IVADIFF SELECT BETWEEN(DATAREGP,0," << fine.date2ansi() << ')'
|
||||||
|
<< "\nFROM NUMREG==" << numreg
|
||||||
|
<< "\nTO NUMREG==" << numreg;
|
||||||
|
TISAM_recordset id(query);
|
||||||
|
const TRectype& rid = id.cursor()->curr();
|
||||||
|
|
||||||
|
bool some_pag = false; // Ci sono pagamenti?
|
||||||
|
TImporto tot;
|
||||||
|
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||||
|
{
|
||||||
|
const char sez = rid.get_char("SEZIONE");
|
||||||
|
const real imp = rid.get(RMI_IMPOSTA);
|
||||||
|
if (!imp.is_zero())
|
||||||
|
{
|
||||||
|
if (rid.get_int(MOV_TIPOMOV) > 1)
|
||||||
|
some_pag = true;
|
||||||
|
tot += TImporto(sez, imp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const bool chiusa = some_pag && tot.valore() < 0.01;
|
||||||
|
return chiusa;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fattura più vecchia di un anno a ente NON pubblico
|
// Fattura più vecchia di un anno a ente NON pubblico
|
||||||
static bool sarebbe_da_pagare(const TRectype& mov, const TDate& fine)
|
bool TLiquidazione_app::sarebbe_da_pagare(const TRectype& mov, const TDate& fine) const
|
||||||
{
|
{
|
||||||
|
if (mov.get_int(MOV_TIPOMOV) != tm_fattura)
|
||||||
|
return false;
|
||||||
|
|
||||||
const TDate datareg = mov.get(MOV_DATAREG);
|
const TDate datareg = mov.get(MOV_DATAREG);
|
||||||
const long giorni = fine - datareg;
|
const long giorni = fine - datareg;
|
||||||
if (giorni <= 365)
|
if (giorni < 0)
|
||||||
return false; // E' passato meno di un anno
|
return false;
|
||||||
|
|
||||||
|
if (mov.get_bool(MOV_LIQDIFF))
|
||||||
|
{
|
||||||
const TDate datainc = mov.get(MOV_DATAINC);
|
const TDate datainc = mov.get(MOV_DATAINC);
|
||||||
if (datainc.ok() && datainc <= fine)
|
if (datainc.ok() && datainc <= fine)
|
||||||
return false; // Già pagata senza saldaconto
|
return false; // Già pagata senza saldaconto
|
||||||
|
} else
|
||||||
|
if (mov.get_bool(MOV_IVAXCASSA))
|
||||||
|
{
|
||||||
|
if (!gestione_IVAxCassa(fine) || _isviaggio) // Le agenzie viaggio non posso aderire al regime IVA per cassa
|
||||||
|
return true; // Ho superato la soglia di applicabilità dell'IVA per cassa
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true; // Regime IVA normale
|
||||||
|
|
||||||
TString8 key; key.format("%c|%ld", mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
|
TString8 key; key.format("%c|%ld", mov.get_char(MOV_TIPO), mov.get_long(MOV_CODCF));
|
||||||
const TRectype& clifo = cache().get(LF_CLIFO, key);
|
const TRectype& clifo = cache().get(LF_CLIFO, key);
|
||||||
return clifo.get_int(CLI_ALLEG) != 7; // Non è un ente pubblico
|
const int alleg = clifo.get_int(CLI_ALLEG);
|
||||||
|
|
||||||
|
if (alleg == 5 || alleg == 6 || alleg == 9) // Privati, import ed export non hanno IVA per cassa
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (alleg == 7 || alleg == 8) // Ente pubblico e amministrazione controllata ...
|
||||||
|
return false; // ... possono aspettare le calende greche
|
||||||
|
|
||||||
|
TString16 paiv = clifo.get(CLI_PAIV);
|
||||||
|
if (paiv.empty() && clifo.get_bool(CLI_OCCAS))
|
||||||
|
{
|
||||||
|
const TRectype& occas = cache().get(LF_OCCAS, mov.get(MOV_OCFPI));
|
||||||
|
paiv = occas.get(OCC_PAIV);
|
||||||
|
}
|
||||||
|
if (paiv.blank())
|
||||||
|
return true; // In assenza di Partita IVA non c'è IVA per cassa
|
||||||
|
|
||||||
|
if (ivadiff_chiusa(mov, fine))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (giorni >= 365)
|
||||||
|
return true; // E' passato più di un anno!
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::residuo_da_liquidare(long numreg, int numrig, const TDate& last_pag,
|
bool TLiquidazione_app::residuo_da_liquidare(long numreg, int numrig, const TDate& last_pag,
|
||||||
@ -601,8 +663,8 @@ bool TLiquidazione_app::residuo_da_liquidare(long numreg, int numrig, const TDat
|
|||||||
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||||
{
|
{
|
||||||
const char sez = id.get("SEZIONE").as_string()[0];
|
const char sez = id.get("SEZIONE").as_string()[0];
|
||||||
const int tipomov = id.get(PART_TIPOMOV).as_int();
|
const tipo_movimento tipomov = (tipo_movimento)id.get(PART_TIPOMOV).as_int();
|
||||||
if ((tipomov == 1 || tipomov == 2) || !last_pag.ok())
|
if (tipomov <= tm_nota_credito || !last_pag.ok())
|
||||||
{
|
{
|
||||||
importo += TImporto(sez, id.get(PAGSCA_IMPORTO).as_real());
|
importo += TImporto(sez, id.get(PAGSCA_IMPORTO).as_real());
|
||||||
imponib += TImporto(sez, id.get(RMI_IMPONIBILE).as_real());
|
imponib += TImporto(sez, id.get(RMI_IMPONIBILE).as_real());
|
||||||
@ -613,17 +675,12 @@ bool TLiquidazione_app::residuo_da_liquidare(long numreg, int numrig, const TDat
|
|||||||
const TDate data_pag = id.get("DATAREGP").as_date();
|
const TDate data_pag = id.get("DATAREGP").as_date();
|
||||||
if (data_pag >= last_pag)
|
if (data_pag >= last_pag)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const TImporto vers(sez, id.get("VERSATA").as_real());
|
|
||||||
if (!vers.is_zero())
|
|
||||||
{
|
|
||||||
importo += TImporto(sez, id.get(PAGSCA_IMPORTO).as_real());
|
importo += TImporto(sez, id.get(PAGSCA_IMPORTO).as_real());
|
||||||
imponib += TImporto(sez, id.get(RMI_IMPONIBILE).as_real());
|
imponib += TImporto(sez, id.get(RMI_IMPONIBILE).as_real());
|
||||||
imposta += vers;
|
imposta += TImporto(sez, id.get(RMI_IMPOSTA).as_real());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if (imponib.valore() > ZERO)
|
||||||
if (importo.valore() > ZERO)
|
|
||||||
{
|
{
|
||||||
importo_res = importo.valore();
|
importo_res = importo.valore();
|
||||||
imponib_res = imponib.valore();
|
imponib_res = imponib.valore();
|
||||||
@ -654,7 +711,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
// occhecasino. Se _comp_acconto e' TRUE, i movimenti considerati
|
// occhecasino. Se _comp_acconto e' TRUE, i movimenti considerati
|
||||||
// saranno solo quelli di dicembre per data <= 20/12;
|
// saranno solo quelli di dicembre per data <= 20/12;
|
||||||
{
|
{
|
||||||
const bool has_sc = has_module(SCAUT, CHK_DONGLE);
|
const bool has_sc = has_module(SCAUT, CHK_DONGLE) && ini_get_bool(CONFIG_DITTA, "cg", "GesSal");
|
||||||
real totintra = ZERO;
|
real totintra = ZERO;
|
||||||
real nond19_imp = ZERO;
|
real nond19_imp = ZERO;
|
||||||
real nond19_iva = ZERO;
|
real nond19_iva = ZERO;
|
||||||
@ -698,9 +755,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
real rottami_cd3_3 = ZERO; // imponibile acquisto rottami
|
real rottami_cd3_3 = ZERO; // imponibile acquisto rottami
|
||||||
real rottami_cd3_4 = ZERO; // imposta acquisto rottami
|
real rottami_cd3_4 = ZERO; // imposta acquisto rottami
|
||||||
|
|
||||||
real vt_imponibile[23];
|
|
||||||
real vt_imposta[23];
|
|
||||||
|
|
||||||
real esni_rimb = ZERO; // ci sommo tutti esenti e ni validi per rimborso
|
real esni_rimb = ZERO; // ci sommo tutti esenti e ni validi per rimborso
|
||||||
real corr_CEE = ZERO;
|
real corr_CEE = ZERO;
|
||||||
real corr_noCEE = ZERO;
|
real corr_noCEE = ZERO;
|
||||||
@ -738,6 +792,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
real bdog_iva = ZERO;
|
real bdog_iva = ZERO;
|
||||||
real agr_imp = ZERO;
|
real agr_imp = ZERO;
|
||||||
real agr_iva = ZERO;
|
real agr_iva = ZERO;
|
||||||
|
|
||||||
real fdiff_imp = ZERO;
|
real fdiff_imp = ZERO;
|
||||||
real fdiff_iva = ZERO;
|
real fdiff_iva = ZERO;
|
||||||
real fdiffinc_imp = ZERO;
|
real fdiffinc_imp = ZERO;
|
||||||
@ -752,6 +807,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
_diff_acq_ap = ZERO;
|
_diff_acq_ap = ZERO;
|
||||||
_diff_acq_ap_iva = ZERO;
|
_diff_acq_ap_iva = ZERO;
|
||||||
|
|
||||||
|
// PEM
|
||||||
|
real vt_imponibile[23];
|
||||||
|
real vt_imposta[23];
|
||||||
for (int j = 0; j < 23; j++)
|
for (int j = 0; j < 23; j++)
|
||||||
{
|
{
|
||||||
vt_imponibile[j] = ZERO;
|
vt_imponibile[j] = ZERO;
|
||||||
@ -853,14 +911,15 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
_cur->setregion(from, to);
|
_cur->setregion(from, to);
|
||||||
|
|
||||||
TString filter;
|
TString filter;
|
||||||
filter.format("((ANSI(DATAREG)>=%ld)&&(ANSI(DATAREG)<=%ld))", fromdate.date2ansi(), t.date2ansi());
|
//filter.format("((ANSI(DATAREG)>=%ld)&&(ANSI(DATAREG)<=%ld))", fromdate.date2ansi(), t.date2ansi());
|
||||||
if (_isviaggio || _isdiff)
|
filter.format("(BETWEEN(DATAREG,%ld,%ld))", fromdate.date2ansi(), t.date2ansi());
|
||||||
{
|
|
||||||
if (_isviaggio)
|
if (_isviaggio)
|
||||||
filter << format("||((ANSI(DATA74TER)>=%ld)&&(ANSI(DATA74TER)<=%ld))", f74.date2ansi(), t.date2ansi());
|
filter << format("||(BETWEEN(DATA74TER,%ld,%ld))", f74.date2ansi(), t.date2ansi());
|
||||||
if (_isdiff)
|
if (_isdiff)
|
||||||
filter << "|| NUM(LIQDIFF==\"X\")";
|
filter << "||(NUM(LIQDIFF==\"X\"))";
|
||||||
}
|
if (has_sc && gestione_IVAxCassa(fromdate))
|
||||||
|
filter << "||(NUM(IVAXCASSA==\"X\"))";
|
||||||
|
|
||||||
_cur->setfilter(filter);
|
_cur->setfilter(filter);
|
||||||
const long items = _cur->items();
|
const long items = _cur->items();
|
||||||
_cur->freeze();
|
_cur->freeze();
|
||||||
@ -885,8 +944,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
const TString4 tipodoc = _mov->get(MOV_TIPODOC);
|
const TString4 tipodoc = _mov->get(MOV_TIPODOC);
|
||||||
const bool corrisp = _reg->get_bool("B0");
|
const bool corrisp = _reg->get_bool("B0");
|
||||||
const tiporeg tipomov = (tiporeg)_reg->get_int("I0");
|
const tiporeg tipomov = (tiporeg)_reg->get_int("I0");
|
||||||
|
const tipo_movimento tm = (tipo_movimento)_mov->get_int(MOV_TIPOMOV);
|
||||||
// Controlla se la data del documento si riferisce all'anno precedente (PRORATA 1998)
|
// Controlla se la data del documento si riferisce all'anno precedente (PRORATA 1998)
|
||||||
const TDate datedoc(_mov->get(MOV_DATADOC));
|
const TDate datedoc = _mov->get(MOV_DATADOC);
|
||||||
|
|
||||||
if (_isviaggio)
|
if (_isviaggio)
|
||||||
{
|
{
|
||||||
@ -900,16 +960,19 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
const bool cau_intra = rcs.get_bool("INTRACOM");
|
const bool cau_intra = rcs.get_bool("INTRACOM");
|
||||||
const bool cau_valintra = rcs.get_bool("VALINTRA");
|
const bool cau_valintra = rcs.get_bool("VALINTRA");
|
||||||
|
|
||||||
|
if (_mov->get_long(MOV_NUMREG) == 20339)
|
||||||
|
int cazzone = 1;
|
||||||
|
|
||||||
// Inizio gestione IVA differita
|
// Inizio gestione IVA differita
|
||||||
const bool iva_cass = has_module(ICAUT) && _mov->get_bool(MOV_IVAXCASSA);
|
|
||||||
const bool iva_diff = _isdiff && _mov->get_bool(MOV_LIQDIFF);
|
const bool iva_diff = _isdiff && _mov->get_bool(MOV_LIQDIFF);
|
||||||
|
const bool iva_cass = !iva_diff && _mov->get_bool(MOV_IVAXCASSA) && tm > 0;
|
||||||
const bool movdiff = iva_diff || iva_cass;
|
const bool movdiff = iva_diff || iva_cass;
|
||||||
bool dok = is_date_ok(date, month, liqmonth, year_int);
|
bool dok = is_date_ok(date, month, liqmonth, year_int);
|
||||||
|
|
||||||
TPartite_array arrpart; // Partite interessate
|
TPartite_array arrpart; // Partite interessate
|
||||||
TPointer_array pagscatt; // Righe di pagsca interessate
|
TPointer_array pagscatt; // Righe di pagsca interessate
|
||||||
|
|
||||||
if (movdiff)
|
if (movdiff && tm == tm_fattura)
|
||||||
{
|
{
|
||||||
// Sezione preferita per fatture decisa in base a vendita->'A' o acquisto->'D'
|
// Sezione preferita per fatture decisa in base a vendita->'A' o acquisto->'D'
|
||||||
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
||||||
@ -925,14 +988,14 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
const TPartita* p = arrpart.first();
|
const TPartita* p = arrpart.first();
|
||||||
const int row = p ? p->mov2rig(numreg, 0) : 0;
|
const int row = p ? p->mov2rig(numreg, 0) : 0;
|
||||||
game_found = row > 0;
|
game_found = row > 0;
|
||||||
if (game_found)
|
if (game_found && !ivadiff_chiusa(_mov->curr(), fine))
|
||||||
{
|
{
|
||||||
const TRiga_partite& rp = p->riga(row);
|
const TRiga_partite& rp = p->riga(row);
|
||||||
TImporto pg, nc;
|
TImporto pg, nc;
|
||||||
flag_pg_nc = rp.calcola_pagato_periodo(inizio+1L, fine, pg, nc, &pagscatt);
|
flag_pg_nc = rp.calcola_pagato_periodo(inizio+1L, fine, pg, nc, &pagscatt);
|
||||||
if (!p->chiusa() && sarebbe_da_pagare(_mov->curr(), fine))
|
if (sarebbe_da_pagare(_mov->curr(), fine))
|
||||||
{
|
{
|
||||||
rp.calcola_pagato_periodo(TDate(1,1,date.year()), fine, pg, nc, NULL);
|
rp.calcola_pagato_periodo(TDate(0L), fine, pg, nc, NULL);
|
||||||
TImporto saldo = rp.importo(false);
|
TImporto saldo = rp.importo(false);
|
||||||
saldo += pg; saldo += nc;
|
saldo += pg; saldo += nc;
|
||||||
saldo.normalize(sezfat);
|
saldo.normalize(sezfat);
|
||||||
@ -943,7 +1006,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
if (!game_found) // No saldaconto o partita assente
|
if (!game_found) // No saldaconto o partita assente
|
||||||
{
|
{
|
||||||
datainc = _mov->get(MOV_DATAINC);
|
datainc = iva_diff ? _mov->get_date(MOV_DATAINC) : TDate();
|
||||||
if (datainc.ok() && datainc <= fine)
|
if (datainc.ok() && datainc <= fine)
|
||||||
tot_incassato = _mov->get_real(MOV_TOTDOC);
|
tot_incassato = _mov->get_real(MOV_TOTDOC);
|
||||||
else
|
else
|
||||||
@ -1008,14 +1071,12 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
const int accmonth = _isdifferita ? 11 : 12;
|
const int accmonth = _isdifferita ? 11 : 12;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Patrizia: se e' differita i mov. vanno da 1/11 a 30/11
|
* Patrizia: se è differita i mov. vanno da 1/11 a 30/11
|
||||||
* potrei allora andarmi a leggere i risultati della liq di 11
|
* potrei allora andarmi a leggere i risultati della liq di 11
|
||||||
* ma il cliente potrebbe voler calcolare l'acconto prima
|
* ma il cliente potrebbe voler calcolare l'acconto prima
|
||||||
* di aver calcolato la liquidazione (perche' cosi' complicato?)
|
* di aver calcolato la liquidazione (perche' cosi' complicato?)
|
||||||
*/
|
*/
|
||||||
//if (_comp_acconto && date.month() == accmonth && date.day() > 20)
|
if (_comp_acconto && !_isdifferita && date.month() == accmonth && date.day() > 20)
|
||||||
if (_comp_acconto && date.month() == accmonth)
|
|
||||||
if (!_isdifferita && date.day() > 20)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Ciclo sulle righe iva del movimento
|
// Ciclo sulle righe iva del movimento
|
||||||
@ -1079,7 +1140,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
real impon_det; // Imponibile detraibile
|
real impon_det; // Imponibile detraibile
|
||||||
real impos_det; // Imposta detraibile
|
real impos_det; // Imposta detraibile
|
||||||
|
|
||||||
if (movdiff)
|
if (movdiff && tm == tm_fattura)
|
||||||
{
|
{
|
||||||
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
const char sezfat = tipomov == vendita ? 'D' : 'A';
|
||||||
const TDate datareg = _mov->get(MOV_DATAREG);
|
const TDate datareg = _mov->get(MOV_DATAREG);
|
||||||
@ -1087,12 +1148,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
TLocalisamfile id(LF_IVADIFF);
|
TLocalisamfile id(LF_IVADIFF);
|
||||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||||
id.put(PART_TIPOMOV, 1);
|
|
||||||
id.put("NUMPRO", 0);
|
id.put("NUMPRO", 0);
|
||||||
|
id.put(PART_TIPOMOV, tm);
|
||||||
|
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||||
id.put("TIPOATT", rmi_tipoatt);
|
id.put("TIPOATT", rmi_tipoatt);
|
||||||
id.put("ANNOLIQ", datareg.year());
|
id.put("ANNOLIQ", datareg.year());
|
||||||
int mesereg = datareg.month();
|
int mesereg = mesereg = datareg.month();
|
||||||
if (_freqviva == "T")
|
if (_freqviva[0] == 'T')
|
||||||
{
|
{
|
||||||
const int resto = mesereg % 3;
|
const int resto = mesereg % 3;
|
||||||
if (resto > 0)
|
if (resto > 0)
|
||||||
@ -1125,7 +1187,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||||
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||||
id.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
id.put(MOV_DATAREG, _mov->get(MOV_DATADOC));
|
||||||
id.put("NUMPRO", nrigp);
|
CHECKD(nrigp > 0, "Invalid NRIGP ", nrigp);
|
||||||
|
id.put("NUMPRO", min(nrigp, 999));
|
||||||
|
CHECKD(rmi_tipoatt > 0, "Invalid tipo att ", rmi_tipoatt);
|
||||||
id.put("TIPOATT", rmi_tipoatt);
|
id.put("TIPOATT", rmi_tipoatt);
|
||||||
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
id.put("TIPOIVA", tipomov == 2 ? 2 : 1);
|
||||||
id.put("TIPODIFF", iva_cass ? 2 : 1);
|
id.put("TIPODIFF", iva_cass ? 2 : 1);
|
||||||
@ -1133,14 +1197,21 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
|
|
||||||
TImporto pagtmp;
|
TImporto pagtmp;
|
||||||
bool ultimo = false;
|
bool ultimo = false;
|
||||||
|
tipo_movimento tipomov_pag = tm_pagamento;
|
||||||
if (nrigp > 0 && nrigp < 9999)
|
if (nrigp > 0 && nrigp < 9999)
|
||||||
{
|
{
|
||||||
const TPartita& p = arrpart.partita(pagsca);
|
const TPartita& p = arrpart.partita(pagsca);
|
||||||
const TRiga_partite& rp = p.riga(nrigp);
|
const TRiga_partite& rp = p.riga(nrigp);
|
||||||
id.put(PART_TIPOMOV, rp.tipo());
|
tipomov_pag = rp.tipo();
|
||||||
|
id.put(PART_TIPOMOV, tipomov_pag);
|
||||||
id.put("NUMREGP", rp.get(PART_NREG));
|
id.put("NUMREGP", rp.get(PART_NREG));
|
||||||
id.put("NUMRIGP", rp.get(PART_NUMRIG));
|
id.put("NUMRIGP", rp.get(PART_NUMRIG));
|
||||||
id.put("DATAREGP", rp.get(PART_DATAPAG));
|
TDate d = rp.get(PART_DATAPAG);
|
||||||
|
if (!d.ok())
|
||||||
|
d = rp.get(PART_DATADOC);
|
||||||
|
if (!d.ok())
|
||||||
|
d = rp.get(PART_DATAREG);
|
||||||
|
id.put("DATAREGP", d);
|
||||||
pagtmp = p.importo_pagsca(pagsca);
|
pagtmp = p.importo_pagsca(pagsca);
|
||||||
if (p.chiusa() && rp.tipo() >= 3)
|
if (p.chiusa() && rp.tipo() >= 3)
|
||||||
{
|
{
|
||||||
@ -1158,7 +1229,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Falso record generato da datainc
|
// Falso record generato da datainc
|
||||||
id.put(PART_TIPOMOV, 3);
|
id.put(PART_TIPOMOV, tipomov_pag);
|
||||||
id.put("NUMREGP", _mov->get(MOV_NUMREG));
|
id.put("NUMREGP", _mov->get(MOV_NUMREG));
|
||||||
id.put("NUMRIGP", nrigp);
|
id.put("NUMRIGP", nrigp);
|
||||||
id.put("DATAREGP", _mov->get(MOV_DATAINC));
|
id.put("DATAREGP", _mov->get(MOV_DATAINC));
|
||||||
@ -1168,7 +1239,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
|
|
||||||
id.put("ANNOLIQ", year_int);
|
id.put("ANNOLIQ", year_int);
|
||||||
int meseliq = id.get_date("DATAREGP").month();
|
int meseliq = id.get_date("DATAREGP").month();
|
||||||
if (_freqviva == "T")
|
if (_freqviva[0] == 'T')
|
||||||
{
|
{
|
||||||
const int resto = meseliq % 3;
|
const int resto = meseliq % 3;
|
||||||
if (resto > 0)
|
if (resto > 0)
|
||||||
@ -1198,23 +1269,40 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
real val = imponibile_orig * perc;
|
real val = imponibile_orig * perc;
|
||||||
round_imposta(val);
|
round_imposta(val);
|
||||||
id.put(RMI_IMPONIBILE, val);
|
id.put(RMI_IMPONIBILE, val);
|
||||||
|
|
||||||
|
if (tipomov_pag >= tm_pagamento)
|
||||||
incdiff_imp += val;
|
incdiff_imp += val;
|
||||||
|
|
||||||
val = imposta_orig * perc;
|
val = imposta_orig * perc;
|
||||||
round_imposta(val);
|
round_imposta(val);
|
||||||
id.put(RMI_IMPOSTA, val);
|
id.put(RMI_IMPOSTA, val);
|
||||||
|
if (tipomov_pag >= tm_pagamento)
|
||||||
incdiff_iva += val;
|
incdiff_iva += val;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_isfinal && id.get_int(PART_TIPOMOV) > 2)
|
int err = id.write_rewrite();
|
||||||
id.put("VERSATA", id.get(RMI_IMPOSTA));
|
if (err != NOERR)
|
||||||
else
|
error_box("Errore %d in aggiornamento file IVADIFF", err);
|
||||||
id.zero("VERSATA");
|
|
||||||
|
|
||||||
id.write_rewrite();
|
const long numreg = _rmoviva->get_long(RMI_NUMREG);
|
||||||
|
if (numreg > 0) // Chiude o riapre la partita
|
||||||
|
{
|
||||||
|
TISAM_recordset recset("USE IVADIFF\nFROM NUMREG=#NR\nTO NUMREG=#NR");
|
||||||
|
recset.set_var("#NR", numreg);
|
||||||
|
TLocalisamfile& id = recset.cursor()->file();
|
||||||
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
|
{
|
||||||
|
const bool chiusa = id.get_bool("CHIUSA");
|
||||||
|
if (chiusa != ultimo)
|
||||||
|
{
|
||||||
|
id.put("CHIUSA", ultimo);
|
||||||
|
id.rewrite();
|
||||||
}
|
}
|
||||||
diff_imp = imponibile_orig - incdiff_imp;
|
}
|
||||||
diff_iva = imposta_orig - incdiff_iva;
|
}
|
||||||
|
}
|
||||||
|
diff_imp = imponibile_orig;
|
||||||
|
diff_iva = imposta_orig;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1509,7 +1597,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
// senza entusiasmo ed interrogandomi sul senso della vita
|
// senza entusiasmo ed interrogandomi sul senso della vita
|
||||||
if (ivarimb)
|
if (ivarimb)
|
||||||
{
|
{
|
||||||
bool ok = _isagricolo ? tipoagr == 2 : FALSE;
|
bool ok = _isagricolo ? tipoagr == 2 : false;
|
||||||
|
|
||||||
if (tipomov == acquisto && !ok)
|
if (tipomov == acquisto && !ok)
|
||||||
ok = (tipocr == 0 || tipocr == 1 || tipocr == 5 || tipocr == 9);
|
ok = (tipocr == 0 || tipocr == 1 || tipocr == 5 || tipocr == 9);
|
||||||
@ -2368,7 +2456,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if (month == 13)
|
if (month == 13)
|
||||||
{
|
{
|
||||||
TTable pem("PEM");
|
TTable pem("PEM");
|
||||||
|
|
||||||
for (int reg = 0; reg < 23; reg++)
|
for (int reg = 0; reg < 23; reg++)
|
||||||
{
|
{
|
||||||
look_pem(pem, reg);
|
look_pem(pem, reg);
|
||||||
@ -2418,8 +2505,9 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt)
|
|||||||
|
|
||||||
|
|
||||||
// TAB11_RQA34 ovvero "RQA34" non viene trasferito!
|
// TAB11_RQA34 ovvero "RQA34" non viene trasferito!
|
||||||
// Sebbene per motivi di pieta' viene comunque lasciato nel tracciato record (esigenze PRASSI)
|
// Sebbene per motivi di pietà viene comunque lasciato nel tracciato record (esigenze PRASSI)
|
||||||
if (codiva.empty()) return;
|
if (codiva.blank())
|
||||||
|
return;
|
||||||
|
|
||||||
if (is_acquisto)
|
if (is_acquisto)
|
||||||
{
|
{
|
||||||
@ -3261,10 +3349,10 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
// detrazioni solo non in regime agricolo
|
// detrazioni solo non in regime agricolo
|
||||||
if (!attivita_agricola)
|
if (!attivita_agricola)
|
||||||
{
|
{
|
||||||
risultato -= (_plm->get_real("R3"));
|
const real r3 = _plm->get_real("R3");
|
||||||
res_cred += (_plm->get_real("R3"));
|
risultato -= r3;
|
||||||
|
res_cred += r3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* totalizza importi 74 ter */
|
/* totalizza importi 74 ter */
|
||||||
if (_isviaggio)
|
if (_isviaggio)
|
||||||
{
|
{
|
||||||
@ -3482,7 +3570,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
while ((tmpatt = atts.get()) != NULL)
|
while ((tmpatt = atts.get()) != NULL)
|
||||||
{
|
{
|
||||||
const TString8 att(tmpatt);
|
const TString8 att(tmpatt);
|
||||||
int tipoatt = att[att.len() -1] - '0';
|
const int tipoatt = att.right(1)[0] - '0';
|
||||||
if (tipoatt == 1) // su PLA l'attivita' e' sempre 1
|
if (tipoatt == 1) // su PLA l'attivita' e' sempre 1
|
||||||
{
|
{
|
||||||
if (!look_pla(att))
|
if (!look_pla(att))
|
||||||
@ -3574,7 +3662,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
if (!prorata.is_zero() && look_plm(13, att))
|
if (!prorata.is_zero() && look_plm(13, att))
|
||||||
{
|
{
|
||||||
const real old_r33 = _plm->get("R33");
|
const real old_r33 = _plm->get("R33");
|
||||||
real new_r33 = old_r33 * prorata / 100;
|
real new_r33 = old_r33 * prorata / CENTO;
|
||||||
round_imposta(new_r33);
|
round_imposta(new_r33);
|
||||||
_plm->put("R33", new_r33);
|
_plm->put("R33", new_r33);
|
||||||
_plm->rewrite();
|
_plm->rewrite();
|
||||||
@ -3729,14 +3817,15 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
_lim->put("R12", res_cred);
|
_lim->put("R12", res_cred);
|
||||||
_lim->put("R13", res_debt);
|
_lim->put("R13", res_debt);
|
||||||
|
|
||||||
_lim->put("R26", fdiff_imp);
|
_lim->put("R26", fdiff_imp); // Imponibile IVA diff Fatture di vendita
|
||||||
_lim->put("R27", fdiff_iva);
|
_lim->put("R27", fdiff_iva); // Imposta IVA diff Fatture di vendita
|
||||||
_lim->put("R28", fdiffinc_imp);
|
_lim->put("R28", fdiffinc_imp); // Imponibile IVA diff Incassi
|
||||||
_lim->put("R29", fdiffinc_iva);
|
_lim->put("R29", fdiffinc_iva); // Imposta IVA diff Incassi
|
||||||
_lim->put("R30", fdiff_imp_acq);
|
|
||||||
_lim->put("R31", fdiff_iva_acq);
|
_lim->put("R30", fdiff_imp_acq); // Imponibile IVA diff Fatture di acquisto
|
||||||
_lim->put("R32", fdiffinc_imp_acq);
|
_lim->put("R31", fdiff_iva_acq); // Imposta IVA diff Fatture di acquisto
|
||||||
_lim->put("R33", fdiffinc_iva_acq);
|
_lim->put("R32", fdiffinc_imp_acq); // Imponibile IVA diff Pagamenti
|
||||||
|
_lim->put("R33", fdiffinc_iva_acq); // Imposta IVA diff Pagamenti
|
||||||
|
|
||||||
_lam->put("R0", iva_vend);
|
_lam->put("R0", iva_vend);
|
||||||
_lam->put("R1", iva_acq);
|
_lam->put("R1", iva_acq);
|
||||||
@ -3893,8 +3982,9 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
TString16 codiva,reg,tiva;
|
TString16 codiva,reg,tiva;
|
||||||
TToken_string va7("",'!');
|
TToken_string va7("",'!');
|
||||||
|
|
||||||
int tipoatt = att[strlen(att) -1] - '0';
|
const TString8 aaa(att);
|
||||||
TString aaa(att);
|
const int tipoatt = aaa.right(1)[0] - '0';
|
||||||
|
CHECKD(tipoatt > 0, "Tipo att non valido ", tipoatt);
|
||||||
|
|
||||||
look_pla(aaa);
|
look_pla(aaa);
|
||||||
volaff1 = _pla->get_real("R14");
|
volaff1 = _pla->get_real("R14");
|
||||||
@ -3955,7 +4045,7 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
_CorrItem& ca = (_CorrItem&) corr_ann[codiva];
|
_CorrItem& ca = (_CorrItem&) corr_ann[codiva];
|
||||||
ca._totale += _pim->get_real("R3");
|
ca._totale += _pim->get_real("R3");
|
||||||
if (!is_key) // se non c'e' lo aggiunge
|
if (!is_key) // se non c'e' lo aggiunge
|
||||||
ca._aliquota = _iva->get_real("R0")/CENTO; // Se e' nuovo setta l'aliquota
|
ca._aliquota = _iva->get_real("R0")/CENTO; // Se è nuovo setta l'aliquota
|
||||||
}
|
}
|
||||||
if (tipoatt == 1)
|
if (tipoatt == 1)
|
||||||
volaff1 += imp_ifs;
|
volaff1 += imp_ifs;
|
||||||
|
@ -327,7 +327,8 @@ bool TLiquidazione_app::look_prp(int month, const char* codatt, const char* codr
|
|||||||
const char* tipocr, const char* codiva, int tipodet,
|
const char* tipocr, const char* codiva, int tipodet,
|
||||||
bool create)
|
bool create)
|
||||||
{
|
{
|
||||||
bool ok = FALSE;
|
bool ok = false;
|
||||||
|
|
||||||
_prp_r->zero();
|
_prp_r->zero();
|
||||||
(*_prp_anno) = _year;
|
(*_prp_anno) = _year;
|
||||||
(*_prp_mese) = format("%02d", month);
|
(*_prp_mese) = format("%02d", month);
|
||||||
@ -337,16 +338,13 @@ bool TLiquidazione_app::look_prp(int month, const char* codatt, const char* codr
|
|||||||
(*_prp_tipocr) = tipocr;
|
(*_prp_tipocr) = tipocr;
|
||||||
(*_prp_tipodet) = tipodet;
|
(*_prp_tipodet) = tipodet;
|
||||||
|
|
||||||
TString s = _prp_r->get("CODTAB");
|
const TString80 s = _prp_r->get("CODTAB");
|
||||||
|
ok = _prp->read() == NOERR;
|
||||||
_prp->read();
|
|
||||||
ok = _prp->good();
|
|
||||||
|
|
||||||
if (!ok && create)
|
if (!ok && create)
|
||||||
{
|
{
|
||||||
_prp_r->zero();
|
_prp_r->zero();
|
||||||
_prp_r->put("CODTAB",s);
|
_prp_r->put("CODTAB",s);
|
||||||
_prp->write();
|
ok = _prp->write() == NOERR;
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
@ -521,7 +519,8 @@ bool TLiquidazione_app::look_pla(const char* a, bool create)
|
|||||||
buf.ltrim();
|
buf.ltrim();
|
||||||
buf.rtrim(1);
|
buf.rtrim(1);
|
||||||
buf << "1";
|
buf << "1";
|
||||||
while (buf.len() < 6) buf.insert("0");
|
while (buf.len() < 6)
|
||||||
|
buf.insert("0");
|
||||||
|
|
||||||
_pla_r->zero();
|
_pla_r->zero();
|
||||||
(*_pla_ditta) = format("%05ld", get_firm());
|
(*_pla_ditta) = format("%05ld", get_firm());
|
||||||
@ -957,9 +956,8 @@ bool TLiquidazione_app::is_differita(long firm, int year)
|
|||||||
real TLiquidazione_app::aliquota_agvia()
|
real TLiquidazione_app::aliquota_agvia()
|
||||||
{
|
{
|
||||||
real r;
|
real r;
|
||||||
TConfig cnf(CONFIG_STUDIO, "cg");
|
const TString& codagv = ini_get_string(CONFIG_STUDIO, "cg", "CodAgv");
|
||||||
const TString& codagv = cnf.get("CodAgv");
|
if (codagv.full() && look_iva(codagv)) // Controlla se è vuoto! CM600475
|
||||||
if (codagv.not_empty() && look_iva(codagv)) // Controlla se è vuoto! CM600475
|
|
||||||
r = _iva->get_real("R0");
|
r = _iva->get_real("R0");
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
|
|
||||||
#include "cg4300.h"
|
#include "cg4300.h"
|
||||||
|
|
||||||
|
#include "recset.h"
|
||||||
|
|
||||||
void TLiquidazione_app::add_plafond(int month, const char* codatt, int type,
|
void TLiquidazione_app::add_plafond(int month, const char* codatt, int type,
|
||||||
const real& howmuch, bool intra)
|
const real& howmuch, bool intra)
|
||||||
{
|
{
|
||||||
look_ppa(month,codatt,type);
|
look_ppa(month,codatt,type);
|
||||||
const char* field = intra ? "R1" : "R0";
|
const char* field = intra ? "R1" : "R0";
|
||||||
real r = _ppa_r->get(field);
|
_ppa_r->add(field, howmuch);
|
||||||
r += howmuch;
|
|
||||||
_ppa_r->put(field, r);
|
|
||||||
_ppa->rewrite();
|
_ppa->rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -598,14 +598,14 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
|
|||||||
if (rimborsami && !alv.is_zero())
|
if (rimborsami && !alv.is_zero())
|
||||||
{
|
{
|
||||||
// vedi di quanto ala eccede alv; deve essere > 10%
|
// vedi di quanto ala eccede alv; deve essere > 10%
|
||||||
real ecc = (ala/alv) - real(1.0);
|
const real ecc = (ala/alv) - UNO;
|
||||||
rimborsami = (ecc >= SOGLIA_MAGGIORE_ALIQUOTA_DEL_CAZZO_PER_AVER_DIRITTO_AL_RIMBORSO);
|
rimborsami = (ecc >= SOGLIA_MAGGIORE_ALIQUOTA_DEL_CAZZO_PER_AVER_DIRITTO_AL_RIMBORSO);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stliq && rimborsami)
|
if (stliq && rimborsami)
|
||||||
{
|
{
|
||||||
if (d == NULL) d = new _DescrItem(RIMBORSO);
|
if (d == NULL) d = new _DescrItem(RIMBORSO);
|
||||||
d->_f1 = TRUE;
|
d->_f1 = true;
|
||||||
d->_r2 = vtot;
|
d->_r2 = vtot;
|
||||||
d->_r3 = atot;
|
d->_r3 = atot;
|
||||||
d->_r4 = ivav;
|
d->_r4 = ivav;
|
||||||
@ -622,3 +622,41 @@ _DescrItem* TLiquidazione_app::recalc_rimborso(int month, const char* codatts,
|
|||||||
}
|
}
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Azzera tabella IVA x CASSA
|
||||||
|
void TLiquidazione_app::zero_diff(int month, const char* codatt)
|
||||||
|
{
|
||||||
|
// Azzero tuttp al momento dell'azzeramento della prima attività
|
||||||
|
if (_nditte->is_first_match(LF_ATTIV))
|
||||||
|
{
|
||||||
|
if (month > 12 || (_freqviva == "T" && (month % 3) != 1))
|
||||||
|
return;
|
||||||
|
|
||||||
|
TString query;
|
||||||
|
query << "USE IVADIFF KEY 2";
|
||||||
|
query << "\nFROM ANNOLIQ=" << _year;
|
||||||
|
if (month > (_freqviva == "T" ? 3 : 1))
|
||||||
|
query << " MESELIQ=" << month;
|
||||||
|
TISAM_recordset id(query);
|
||||||
|
TLocalisamfile& file = id.cursor()->file();
|
||||||
|
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||||
|
{
|
||||||
|
file.zero("ANNOLIQ");
|
||||||
|
file.zero("MESELIQ");
|
||||||
|
file.zero("IMPORTO");
|
||||||
|
file.zero("IMPONIBILE");
|
||||||
|
file.zero("IMPOSTA");
|
||||||
|
file.zero("DATAREG");
|
||||||
|
file.zero("NUMREGP");
|
||||||
|
file.zero("NUMRIGP");
|
||||||
|
file.zero("DATAREGP");
|
||||||
|
file.zero("DATAREGP");
|
||||||
|
file.zero("TIPOMOV");
|
||||||
|
file.zero("TIPOIVA");
|
||||||
|
file.zero("TIPOATT");
|
||||||
|
file.zero("TIPODIFF");
|
||||||
|
file.zero("CHIUSA");
|
||||||
|
file.rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -809,6 +809,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
}
|
}
|
||||||
// if (tipomov == vendita)
|
// if (tipomov == vendita)
|
||||||
{
|
{
|
||||||
|
/* Non voglio piu' il riepilogo delle fatture emesse IVA diff
|
||||||
if (!diffimp.is_zero() || !diffiva.is_zero() ||
|
if (!diffimp.is_zero() || !diffiva.is_zero() ||
|
||||||
!diffimp_acq.is_zero() || !diffiva_acq.is_zero())
|
!diffimp_acq.is_zero() || !diffiva_acq.is_zero())
|
||||||
{
|
{
|
||||||
@ -841,6 +842,8 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
_descr_arr.insert(head, j++);
|
_descr_arr.insert(head, j++);
|
||||||
head->_f0 = false;
|
head->_f0 = false;
|
||||||
head->_f1 = true;
|
head->_f1 = true;
|
||||||
|
head->_f2 = atoi(activity.right(1)); // Tipo attività = 1 (servizi) o 2 (mista)
|
||||||
|
head->_f3 = tipomov;
|
||||||
totd = new _DescrItem(TOT_ROW_D);
|
totd = new _DescrItem(TOT_ROW_D);
|
||||||
_descr_arr.insert(totd, j);
|
_descr_arr.insert(totd, j);
|
||||||
}
|
}
|
||||||
@ -859,6 +862,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
t30 += diffimp_acq;
|
t30 += diffimp_acq;
|
||||||
t31 += diffiva_acq;
|
t31 += diffiva_acq;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (!diffincimp.is_zero() || !diffinciva.is_zero() ||
|
if (!diffincimp.is_zero() || !diffinciva.is_zero() ||
|
||||||
!diffincimp_acq.is_zero() || !diffinciva_acq.is_zero())
|
!diffincimp_acq.is_zero() || !diffinciva_acq.is_zero())
|
||||||
{
|
{
|
||||||
@ -891,6 +895,7 @@ void TLiquidazione_app::describe_pims(int month, const char* codatt, const bool
|
|||||||
headi->_f0 = false;
|
headi->_f0 = false;
|
||||||
headi->_f1 = true;
|
headi->_f1 = true;
|
||||||
headi->_f2 = atoi(activity.right(1)); // Tipo attività = 1 (servizi) o 2 (mista)
|
headi->_f2 = atoi(activity.right(1)); // Tipo attività = 1 (servizi) o 2 (mista)
|
||||||
|
headi->_f3 = tipomov;
|
||||||
totdi = new _DescrItem(TOT_ROW_DI);
|
totdi = new _DescrItem(TOT_ROW_DI);
|
||||||
_descr_arr.insert(totdi, j);
|
_descr_arr.insert(totdi, j);
|
||||||
}
|
}
|
||||||
@ -1235,7 +1240,7 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts, _DescrItem*
|
|||||||
d->_r6 = _lim->get_real("R6");
|
d->_r6 = _lim->get_real("R6");
|
||||||
d->_r7 = _lim->get_real("R14");
|
d->_r7 = _lim->get_real("R14");
|
||||||
d->_r9 = _lim->get_real("R9");
|
d->_r9 = _lim->get_real("R9");
|
||||||
d->_r29 = _lim->get_real("R29");
|
d->_r29 = _lim->get_real("R29"); // fdiffinc_iva_ven
|
||||||
d->_r33 = _lim->get_real("R33"); // fdiffinc_iva_acq
|
d->_r33 = _lim->get_real("R33"); // fdiffinc_iva_acq
|
||||||
|
|
||||||
if (atoi(_year) <= 1997) // Dal 1998 in poi il conguaglio prorata non va stampato, ma conglobato nell'iva acquisti
|
if (atoi(_year) <= 1997) // Dal 1998 in poi il conguaglio prorata non va stampato, ma conglobato nell'iva acquisti
|
||||||
@ -1398,8 +1403,9 @@ void TLiquidazione_app::describe_consistence(const char* codatt)
|
|||||||
|
|
||||||
void TLiquidazione_app::describe_error(const char* err, const char* codatt)
|
void TLiquidazione_app::describe_error(const char* err, const char* codatt)
|
||||||
{
|
{
|
||||||
if (!_isprint || !_canprint || (_isregis && _isfinal)) return;
|
if (!_isprint || !_canprint || (_isregis && _isfinal))
|
||||||
_errors.add(new _ErrItem(err,codatt,_nditte->curr().get("CODDITTA")));
|
return;
|
||||||
|
_errors.add(new _ErrItem(err, codatt, _nditte->curr().get(NDT_CODDITTA)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------
|
// ----------------------------------------------------------------
|
||||||
@ -1708,16 +1714,14 @@ void TLiquidazione_app::set_liqacc_2000(_DescrItem& d)
|
|||||||
set_auto_ff();
|
set_auto_ff();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::print_dainc_diff_log(int& rw, int tipoatt)
|
bool TLiquidazione_app::print_dainc_diff_log(int& rw, int tipoatt, int tipoiva)
|
||||||
{
|
{
|
||||||
if (_isregis)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
TString limit; limit << "ANNOLIQ=" << _year;
|
TString limit; limit << "ANNOLIQ=" << _year;
|
||||||
if (_month < 13) limit << " MESELIQ=" << _month;
|
if (_month < 13) limit << " MESELIQ=" << _month;
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV==1)";
|
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV==1)";
|
||||||
if (tipoatt == 1 || tipoatt == 2)
|
//if (_isregis && tipoiva > 0) query << "&&(TIPOIVA==" << tipoiva << ')';
|
||||||
|
if (tipoatt > 0)
|
||||||
query << " &&(TIPOATT==" << tipoatt << ")";
|
query << " &&(TIPOATT==" << tipoatt << ")";
|
||||||
query << "\nBY TIPOIVA DATAREG";
|
query << "\nBY TIPOIVA DATAREG";
|
||||||
query << "\nJOIN MOV INTO NUMREG==NUMREG";
|
query << "\nJOIN MOV INTO NUMREG==NUMREG";
|
||||||
@ -1738,47 +1742,48 @@ bool TLiquidazione_app::print_dainc_diff_log(int& rw, int tipoatt)
|
|||||||
const TDate nulldate;
|
const TDate nulldate;
|
||||||
residuo_da_liquidare(rec.get_long(RMI_NUMREG), rec.get_int(RMI_NUMRIG), nulldate,
|
residuo_da_liquidare(rec.get_long(RMI_NUMREG), rec.get_int(RMI_NUMRIG), nulldate,
|
||||||
importo, imponibile, imposta);
|
importo, imponibile, imposta);
|
||||||
if (!importo.is_zero())
|
|
||||||
{
|
|
||||||
const int ti = rec.get_int("TIPOIVA");
|
const int ti = rec.get_int("TIPOIVA");
|
||||||
if (ti != header)
|
if (ti != header)
|
||||||
{
|
{
|
||||||
if (ti < 2)
|
if (ti < 2)
|
||||||
set_row(rw++, TR("Fatture a liquidazione differita o per cassa da incassare"));
|
set_row(rw++, TR("Fatture da incassare"));
|
||||||
else
|
else
|
||||||
set_row(rw++, TR("Fatture a liquidazione differita o per cassa da pagare"));
|
set_row(rw++, TR("Fatture da pagare"));
|
||||||
set_row(rw++, "IVA@17gImporto@30gImponibile@49gImposta@58gTipologia@71gFattura@92gRagione sociale");
|
set_row(rw++, "IVA@17gImporto@30gImponibile@49gImposta@57gC/D@74gProt.@80gN. Doc.@89gData reg.@100gCodice@107gRagione sociale");
|
||||||
header = ti;
|
header = ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString4 codiva = rec.get("CODIVA");
|
const TString4 codiva = rec.get("CODIVA");
|
||||||
const TString16 numfat = id.get("MOV.NUMDOC").as_string();
|
const int protiva = id.get("MOV.PROTIVA").as_int();
|
||||||
|
const TString8 numfat = id.get("MOV.NUMDOC").as_string();
|
||||||
const TString16 datafat = rec.get("DATAREG");
|
const TString16 datafat = rec.get("DATAREG");
|
||||||
const char* tipolog = id.get("TIPODIFF").as_int() == 2 ? TR("Per Cassa") : TR("Differita");
|
const char* tipolog = id.get("TIPODIFF").as_int() == 2 ? TR("C") : TR("D");
|
||||||
|
|
||||||
TParagraph_string clifo(id.get("CLIFO.RAGSOC").as_string(), 40);
|
const long codcf = id.get("CLIFO.CODCF").as_int();
|
||||||
set_row(rw++, "%s@9g%r@25g%r@41g%r@58g%s@71g%s@81g%s@92g%s",
|
TParagraph_string clifo(id.get("CLIFO.RAGSOC").as_string(), 25);
|
||||||
|
|
||||||
|
set_row(rw++, "%s@9g%r@25g%r@41g%r@58g%s@74g%5d@80g%s@89g%s@100g%6ld@107g%s",
|
||||||
(const char*)codiva, &importo, &imponibile, &imposta,
|
(const char*)codiva, &importo, &imponibile, &imposta,
|
||||||
tipolog, (const char*)numfat, (const char*)datafat,
|
tipolog, protiva, (const char*)numfat, (const char*)datafat,
|
||||||
clifo.get());
|
codcf, clifo.get());
|
||||||
}
|
const char* ragsoc2 = clifo.get();
|
||||||
|
if (ragsoc2 != NULL && strlen(ragsoc2) > 3)
|
||||||
|
set_row(rw++, "@107g%s", ragsoc2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return rfat > 0;
|
return rfat > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TLiquidazione_app::print_inc_diff_log(int& rw, int tipoatt)
|
bool TLiquidazione_app::print_inc_diff_log(int& rw, int tipoatt, int tipoiva)
|
||||||
{
|
{
|
||||||
if (_isregis)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
TString limit; limit << "ANNOLIQ=" << _year;
|
TString limit; limit << "ANNOLIQ=" << _year;
|
||||||
if (_month < 13) limit << " MESELIQ=" << _month;
|
if (_month < 13) limit << " MESELIQ=" << _month;
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)";
|
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)";
|
||||||
if (tipoatt == 1 || tipoatt == 2)
|
// if (_isregis && tipoiva > 0) query << "&&(TIPOIVA==" << tipoiva << ')';
|
||||||
query << "&&(TIPOATT==" << tipoatt << ")";
|
if (tipoatt > 0)
|
||||||
|
query << " &&(TIPOATT==" << tipoatt << ")";
|
||||||
query << "\nBY TIPOIVA DATAREGP";
|
query << "\nBY TIPOIVA DATAREGP";
|
||||||
query << "\nJOIN MOV INTO NUMREG==NUMREG";
|
query << "\nJOIN MOV INTO NUMREG==NUMREG";
|
||||||
query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
|
query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
|
||||||
@ -1796,10 +1801,10 @@ bool TLiquidazione_app::print_inc_diff_log(int& rw, int tipoatt)
|
|||||||
if (ti != header)
|
if (ti != header)
|
||||||
{
|
{
|
||||||
if (ti < 2)
|
if (ti < 2)
|
||||||
set_row(rw++, TR("Fatture a liquidazione differita o per cassa incassate"));
|
set_row(rw++, TR("Fatture incassate"));
|
||||||
else
|
else
|
||||||
set_row(rw++, TR("Fatture a liquidazione differita o per cassa pagate"));
|
set_row(rw++, TR("Fatture pagate"));
|
||||||
set_row(rw++, "IVA@17gImporto@30gImponibile@49gImposta@58gPagamento@71gFattura@92gRagione sociale");
|
set_row(rw++, "IVA@17gImporto@30gImponibile@49gImposta@57gC/D@61gPagamento@74gProt.@80gN. Doc.@89gData reg.@100gCodice@107gRagione sociale");
|
||||||
header = ti;
|
header = ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1807,14 +1812,22 @@ bool TLiquidazione_app::print_inc_diff_log(int& rw, int tipoatt)
|
|||||||
const real importo = rec.get("IMPORTO");
|
const real importo = rec.get("IMPORTO");
|
||||||
const real imponibile = rec.get(RMI_IMPONIBILE);
|
const real imponibile = rec.get(RMI_IMPONIBILE);
|
||||||
const real imposta = rec.get(RMI_IMPOSTA);
|
const real imposta = rec.get(RMI_IMPOSTA);
|
||||||
|
const char* tipolog = id.get("TIPODIFF").as_int() == 2 ? TR("C") : TR("D");
|
||||||
const TString16 datapag = rec.get("DATAREGP");
|
const TString16 datapag = rec.get("DATAREGP");
|
||||||
|
const int protiva = id.get("MOV.PROTIVA").as_int();
|
||||||
const TString16 numfat = id.get("MOV.NUMDOC").as_string();
|
const TString16 numfat = id.get("MOV.NUMDOC").as_string();
|
||||||
const TString16 datafat = rec.get("DATAREG");
|
const TString16 datafat = rec.get("DATAREG");
|
||||||
TParagraph_string clifo(id.get("CLIFO.RAGSOC").as_string(), 40);
|
|
||||||
set_row(rw++, "%s@9g%r@25g%r@41g%r@58g%s@71g%s@81g%s@92g%s",
|
const long codcf = id.get("CLIFO.CODCF").as_int();
|
||||||
|
TParagraph_string clifo(id.get("CLIFO.RAGSOC").as_string(), 25);
|
||||||
|
|
||||||
|
set_row(rw++, "%s@9g%r@25g%r@41g%r@58g%s@61g%s@74g%5d@80g%s@89g%s@100g%6ld@107g%s",
|
||||||
(const char*)codiva, &importo, &imponibile, &imposta,
|
(const char*)codiva, &importo, &imponibile, &imposta,
|
||||||
(const char*)datapag, (const char*)numfat, (const char*)datafat,
|
tipolog, (const char*)datapag, protiva, (const char*)numfat, (const char*)datafat,
|
||||||
clifo.get());
|
codcf, clifo.get());
|
||||||
|
const char* ragsoc2 = clifo.get();
|
||||||
|
if (ragsoc2 != NULL && strlen(ragsoc2) > 3)
|
||||||
|
set_row(rw++, "@107g%s", ragsoc2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1834,14 +1847,16 @@ void TLiquidazione_app::set_pim_head(_DescrItem& d)
|
|||||||
set_row(r++,"");
|
set_row(r++,"");
|
||||||
if (d._flags == PIM_HEAD_D)
|
if (d._flags == PIM_HEAD_D)
|
||||||
{
|
{
|
||||||
|
set_row(r++, TR("Movimenti a liquidazione differita o per cassa registrati nel periodo"));
|
||||||
set_bookmark(TR("Riepilogo progressivi a liquidazione differita"), _att_bookmark);
|
set_bookmark(TR("Riepilogo progressivi a liquidazione differita"), _att_bookmark);
|
||||||
print_dainc_diff_log(r, d._f2);
|
print_dainc_diff_log(r, d._f2, d._f3);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (d._flags == PIM_HEAD_DI)
|
if (d._flags == PIM_HEAD_DI)
|
||||||
{
|
{
|
||||||
|
set_row(r++, TR("Incassi/pagamenti a liquidazione differita o per cassa"));
|
||||||
set_bookmark(TR("Riepilogo progressivi a liquidazione differita incassati"), _att_bookmark);
|
set_bookmark(TR("Riepilogo progressivi a liquidazione differita incassati"), _att_bookmark);
|
||||||
print_inc_diff_log(r, d._f2);
|
// print_inc_diff_log(r, d._f2, d._f3);
|
||||||
}
|
}
|
||||||
else // PIS_HEAD
|
else // PIS_HEAD
|
||||||
{
|
{
|
||||||
@ -1945,6 +1960,7 @@ void TLiquidazione_app::set_pim(_DescrItem& d)
|
|||||||
(const char*)d._s1, (const char*)d._s2,
|
(const char*)d._s1, (const char*)d._s2,
|
||||||
&(d._r28), &(d._r29), &(d._r32), &(d._r33));
|
&(d._r28), &(d._r29), &(d._r32), &(d._r33));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TLiquidazione_app::set_plm_diff(const _DescrItem& d)
|
void TLiquidazione_app::set_plm_diff(const _DescrItem& d)
|
||||||
@ -1953,9 +1969,12 @@ void TLiquidazione_app::set_plm_diff(const _DescrItem& d)
|
|||||||
|
|
||||||
set_row(rw++,""); set_row(rw++,"");
|
set_row(rw++,""); set_row(rw++,"");
|
||||||
if (d._flags == TOT_ROW_D)
|
if (d._flags == TOT_ROW_D)
|
||||||
|
{
|
||||||
set_row(rw++,FR("Totale@25g%r@41g%r@91g%r@107g%r"), &(d._r26), &(d._r27), &(d._r30), &(d._r31));
|
set_row(rw++,FR("Totale@25g%r@41g%r@91g%r@107g%r"), &(d._r26), &(d._r27), &(d._r30), &(d._r31));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Totale incassi/pagamenti ad IVA differita o per cassa
|
||||||
set_row(rw++,FR("Totale@25g%r@41g%r@91g%r@107g%r"), &(d._r28), &(d._r29), &(d._r32), &(d._r33));
|
set_row(rw++,FR("Totale@25g%r@41g%r@91g%r@107g%r"), &(d._r28), &(d._r29), &(d._r32), &(d._r33));
|
||||||
if (_isannual)
|
if (_isannual)
|
||||||
{
|
{
|
||||||
@ -2412,7 +2431,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
|
|||||||
if (!_is_visliq)
|
if (!_is_visliq)
|
||||||
iva_vend += rett_debt;
|
iva_vend += rett_debt;
|
||||||
set_row(rw++,FR("@11gIVA esigibile per il periodo@75g%r"), &iva_vend);
|
set_row(rw++,FR("@11gIVA esigibile per il periodo@75g%r"), &iva_vend);
|
||||||
if (diffinc_iva != ZERO)
|
if (!diffinc_iva.is_zero())
|
||||||
set_row(rw++,FR("@11gIVA a liquidazione differita incassata@75g%r"), &diffinc_iva);
|
set_row(rw++,FR("@11gIVA a liquidazione differita incassata@75g%r"), &diffinc_iva);
|
||||||
if (_is_visliq)
|
if (_is_visliq)
|
||||||
set_row(rw++,FR("@11g$[r]Rettifiche IVA a debito$[n]@75g%r"), &rett_debt); // Rettifiche modificabili
|
set_row(rw++,FR("@11g$[r]Rettifiche IVA a debito$[n]@75g%r"), &rett_debt); // Rettifiche modificabili
|
||||||
|
321
cg/cg4400.cpp
321
cg/cg4400.cpp
@ -14,6 +14,7 @@
|
|||||||
#include <mailbox.h>
|
#include <mailbox.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
|
#include <recset.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
|
|
||||||
@ -194,7 +195,8 @@ void TStampa_registri_app::get_dati_ditta()
|
|||||||
|
|
||||||
const TRectype& TStampa_registri_app::look_lia(long ditta)
|
const TRectype& TStampa_registri_app::look_lia(long ditta)
|
||||||
{
|
{
|
||||||
if (ditta <= 0) ditta = get_firm();
|
if (ditta <= 0)
|
||||||
|
ditta = get_firm();
|
||||||
|
|
||||||
TString16 y; y.format("%05ld%04d", ditta, _annoes);
|
TString16 y; y.format("%05ld%04d", ditta, _annoes);
|
||||||
const TRectype& lia = cache().get("%LIA", y);
|
const TRectype& lia = cache().get("%LIA", y);
|
||||||
@ -313,7 +315,7 @@ bool TStampa_registri_app::compila_reg(const TMask& m)
|
|||||||
if (_tabreg->read() != NOERR)
|
if (_tabreg->read() != NOERR)
|
||||||
{
|
{
|
||||||
if (_tipo_stampa != libro_unico)
|
if (_tipo_stampa != libro_unico)
|
||||||
warning_box(FR("Il registro IVA specificato non esiste nella \n Ditta %ld"), _ditta);
|
warning_box(FR("Il registro IVA %s della ditta %ld non esiste"), (const char*)_codreg, _ditta);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1047,7 +1049,9 @@ int TStampa_registri_app::riga_rmoviva()
|
|||||||
if (!ok)
|
if (!ok)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const int mese_liq = _cur->curr(LF_MOV).get_int(MOV_MESELIQ);
|
const TRectype& mov = _cur->curr(LF_MOV);
|
||||||
|
|
||||||
|
const int mese_liq = mov.get_int(MOV_MESELIQ);
|
||||||
int nrec = 0;
|
int nrec = 0;
|
||||||
const TRecnotype nr = rmoviva.recno();
|
const TRecnotype nr = rmoviva.recno();
|
||||||
|
|
||||||
@ -1061,6 +1065,9 @@ int TStampa_registri_app::riga_rmoviva()
|
|||||||
|
|
||||||
_riga_rmi.add_riga(iva);
|
_riga_rmi.add_riga(iva);
|
||||||
|
|
||||||
|
if (!mov.get_bool(MOV_LIQDIFF) && !(mov.get_bool(MOV_IVAXCASSA) && mov.get_int(MOV_TIPOMOV)>0))
|
||||||
|
_riga_prospettoXcassa.add_riga(impo, impos, ZERO, ZERO, codiva, 0, 0, false, 0);
|
||||||
|
|
||||||
//stampa di prova, cumula progressivi dai movimenti, anziche' dalle tabelle (solo bollato)
|
//stampa di prova, cumula progressivi dai movimenti, anziche' dalle tabelle (solo bollato)
|
||||||
if (_tipo_stampa == prova)
|
if (_tipo_stampa == prova)
|
||||||
{
|
{
|
||||||
@ -1269,11 +1276,8 @@ bool TStampa_registri_app::controlla_mov()
|
|||||||
|
|
||||||
tiporeg TStampa_registri_app::cerca_reg(const TString& c)
|
tiporeg TStampa_registri_app::cerca_reg(const TString& c)
|
||||||
{
|
{
|
||||||
tiporeg t;
|
tiporeg t = vendita;
|
||||||
TString16 cod = "";
|
TString8 cod; cod << _annoes << c;
|
||||||
|
|
||||||
t = vendita;
|
|
||||||
cod << _annoes << c;
|
|
||||||
_tabreg->zero();
|
_tabreg->zero();
|
||||||
_tabreg->put("CODTAB", cod);
|
_tabreg->put("CODTAB", cod);
|
||||||
if (_tabreg->read() == NOERR)
|
if (_tabreg->read() == NOERR)
|
||||||
@ -1289,14 +1293,14 @@ int TStampa_registri_app::stampa_prospetto(int rr, bool print_prec)
|
|||||||
{
|
{
|
||||||
reset_print();
|
reset_print();
|
||||||
riga.fill('-');
|
riga.fill('-');
|
||||||
set_row(rr, "%s", (const char*)riga);
|
set_row(rr++, riga);
|
||||||
rr++;
|
|
||||||
set_row(rr, TR("Legenda Tipo Operazione: 1=operazione intracomunitaria 2=AF art.34 comma 3"));
|
riga = TR("Legenda Tipo Operazione: 1=intra; 2=AF art.34 comma 3");
|
||||||
if (_auto_intraf)
|
if (_auto_intraf)
|
||||||
set_row(rr, FR("@78g3=operazione intracomunitaria e AF art.34 comma 3 4=Fattura a liquidazione differita"));
|
riga << TR("; 3=intra e AF art.34 comma 3");
|
||||||
else
|
riga << TR("; 4=liquidazione differita");
|
||||||
set_row(rr, FR("@78g4=Fattura a liquidazione differita"));
|
riga << TR("; 5=IVA per cassa");
|
||||||
rr++;
|
set_row(rr++, riga);
|
||||||
|
|
||||||
_stampa = _st_tot_fin;
|
_stampa = _st_tot_fin;
|
||||||
if (_stampa)
|
if (_stampa)
|
||||||
@ -1305,7 +1309,7 @@ int TStampa_registri_app::stampa_prospetto(int rr, bool print_prec)
|
|||||||
rr+=2;
|
rr+=2;
|
||||||
for (int j = 0; j < _doc_array.items(); j++)
|
for (int j = 0; j < _doc_array.items(); j++)
|
||||||
{
|
{
|
||||||
TTipodoc& doc = (TTipodoc&)_doc_array[j];
|
const TTipodoc& doc = (TTipodoc&)_doc_array[j];
|
||||||
set_row(rr, "%2s", (const char*) doc._tipodoc);
|
set_row(rr, "%2s", (const char*) doc._tipodoc);
|
||||||
set_row(rr, "@3g%s", (const char*) doc._descrdoc);
|
set_row(rr, "@3g%s", (const char*) doc._descrdoc);
|
||||||
set_row(rr, "@54g%r", &doc._totdoc);
|
set_row(rr, "@54g%r", &doc._totdoc);
|
||||||
@ -1514,9 +1518,9 @@ int TStampa_registri_app::stampa_acquisti(int row)
|
|||||||
|
|
||||||
void TStampa_registri_app::set_page_tot_reg()
|
void TStampa_registri_app::set_page_tot_reg()
|
||||||
{
|
{
|
||||||
int rr=1;
|
int rr = 1;
|
||||||
|
|
||||||
rr = stampa_prospetto(rr, false);
|
rr = stampa_prospetto(rr, false);
|
||||||
|
|
||||||
//*****deve azzerare i totali progressivi dei riporti e segnalare all'header di non stampare
|
//*****deve azzerare i totali progressivi dei riporti e segnalare all'header di non stampare
|
||||||
//la riga di riporto
|
//la riga di riporto
|
||||||
_totali_stampati = true; //siamo in stampa totali, quindi...
|
_totali_stampati = true; //siamo in stampa totali, quindi...
|
||||||
@ -1541,7 +1545,7 @@ void TStampa_registri_app::set_page_tot_reg()
|
|||||||
{
|
{
|
||||||
TRiga& riga = (TRiga&)array[k];
|
TRiga& riga = (TRiga&)array[k];
|
||||||
|
|
||||||
if (_tipo_stampa == prova && riga._imponibile == ZERO && riga._imposta == ZERO && riga._implordo == ZERO)
|
if (_tipo_stampa == prova && riga._imponibile.is_zero() && riga._imposta.is_zero() && riga._implordo.is_zero())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
set_row(rr, "%-4s", (const char*)riga._codiva);
|
set_row(rr, "%-4s", (const char*)riga._codiva);
|
||||||
@ -1606,6 +1610,7 @@ void TStampa_registri_app::set_page_tot_reg()
|
|||||||
}
|
}
|
||||||
} // for
|
} // for
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_stampa_plafonds)
|
if (_stampa_plafonds)
|
||||||
stampa_plafonds(rr);
|
stampa_plafonds(rr);
|
||||||
}
|
}
|
||||||
@ -1620,8 +1625,8 @@ HIDDEN void print_real(TPrintrow& row, const real& num, int pos)
|
|||||||
|
|
||||||
bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||||
{
|
{
|
||||||
TTable pla ("%PLA");
|
TTable pla("%PLA");
|
||||||
TTable ppa ("PPA");
|
TTable ppa("PPA");
|
||||||
TString80 chiave;
|
TString80 chiave;
|
||||||
int num;
|
int num;
|
||||||
real r1, r2, r3, r8, r8b, r9, disponibile;
|
real r1, r2, r3, r8, r8b, r9, disponibile;
|
||||||
@ -1895,6 +1900,190 @@ real TStampa_registri_app::stampa_valori_plafonds(const real& r1, const int mese
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TStampa_registri_app::some_IVAxCassa() const
|
||||||
|
{
|
||||||
|
if (_tipo_reg != vendita && _tipo_reg != acquisto)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int da_mese = _data_da.month();
|
||||||
|
int a_mese = _data_a.month();
|
||||||
|
|
||||||
|
if (_frequiva == 'T')
|
||||||
|
{
|
||||||
|
const int dr = da_mese % 3;
|
||||||
|
if (dr != 1)
|
||||||
|
da_mese -= (dr == 0 ? 2 : 1);
|
||||||
|
|
||||||
|
const int ar = a_mese % 3;
|
||||||
|
if (ar != 0)
|
||||||
|
a_mese += (ar == 1 ? 2 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TString query;
|
||||||
|
query = "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)";
|
||||||
|
query << "\nFROM ANNOLIQ=" << _data_da.year() << " MESELIQ=" << da_mese;
|
||||||
|
query << "\nTO ANNOLIQ=" << _data_a.year() << " MESELIQ=" << a_mese;
|
||||||
|
TISAM_recordset id(query);
|
||||||
|
return id.items() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TStampa_registri_app::print_IVAxCassa(int month)
|
||||||
|
{
|
||||||
|
if (_tipo_reg != vendita && _tipo_reg != acquisto)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
TPrinter& pr = printer();
|
||||||
|
TPrintrow riga;
|
||||||
|
const TString linea(_stampa_width, '-');
|
||||||
|
|
||||||
|
TString query;
|
||||||
|
query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(MOV.REG=#REG)&&(TIPOMOV>2)&&(STR(IMPONIBILE>0))&&(STR(MESELIQ==#MON))";
|
||||||
|
query << "\nBY DATAREGP DATAREG";
|
||||||
|
query << "\nJOIN MOV INTO NUMREG==NUMREG";
|
||||||
|
query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
|
||||||
|
TISAM_recordset id(query);
|
||||||
|
id.set_var("#DAL", _data_da);
|
||||||
|
id.set_var("#AL", _data_a);
|
||||||
|
id.set_var("#REG", _codreg);
|
||||||
|
id.set_var("#MON", long(month));
|
||||||
|
|
||||||
|
// Sporco trucco per evitare intestazioni inutili
|
||||||
|
const bool il = _intesta_liq;
|
||||||
|
_intesta_liq = true;
|
||||||
|
|
||||||
|
if (id.items() > 0)
|
||||||
|
{
|
||||||
|
riga.reset();
|
||||||
|
riga.put(linea, 0);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
if (_tipo_reg == vendita)
|
||||||
|
riga.put(TR("DETTAGLIO INCASSI FATTURE CON IVA DIFFERITA O PER CASSA"), 40);
|
||||||
|
else
|
||||||
|
riga.put(TR("DETTAGLIO PAGAMENTI FATTURE CON IVA DIFFERITA O PER CASSA"), 40);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
riga.reset(); pr.print(riga);
|
||||||
|
|
||||||
|
riga.put(linea, 0); pr.print(riga);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
riga.put(TR("Documento"), 19);
|
||||||
|
riga.put(TR("T Tipo"), 66);
|
||||||
|
riga.put(TR("Forz"), 123);
|
||||||
|
riga.put(TR("Num"), 128);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
riga.put(TR("Data pag. prot."), 0);
|
||||||
|
riga.put(TR("Data"), 17);
|
||||||
|
riga.put(TR("Numero Codice Ragione Sociale"), 24);
|
||||||
|
riga.put(TR("O Doc."), 66);
|
||||||
|
riga.put(TR("Importo"), 78);
|
||||||
|
riga.put(TR("Imponibile"), 90);
|
||||||
|
riga.put(TR("IVA"), 102);
|
||||||
|
riga.put(TR("Imposta"), 115);
|
||||||
|
riga.put(TR("Scad"), 123);
|
||||||
|
riga.put(TR("Reg"), 128);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
riga.put(linea, 0); pr.print(riga);
|
||||||
|
|
||||||
|
const TRectype& rec = id.cursor()->curr();
|
||||||
|
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||||
|
{
|
||||||
|
const TString4 codiva = rec.get("CODIVA");
|
||||||
|
const real importo = rec.get("IMPORTO");
|
||||||
|
const real imponibile = rec.get("IMPONIBILE");
|
||||||
|
const real imposta = rec.get("IMPOSTA");
|
||||||
|
|
||||||
|
TParagraph_string clifo(id.get("CLIFO.RAGSOC").as_string(), 27);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
riga.put(rec.get_date("DATAREGP").string(brief, '/'), 0);
|
||||||
|
riga.put(format("%6ld", id.get("MOV.PROTIVA").as_int()), 8);
|
||||||
|
riga.put(rec.get_date(MOV_DATAREG).string(brief, '/'), 15);
|
||||||
|
riga.put(id.get("MOV.NUMDOC").as_string(), 24);
|
||||||
|
riga.put(format("%6ld", id.get("CLIFO.CODCF").as_int()), 31);
|
||||||
|
riga.put(clifo.get(), 38);
|
||||||
|
riga.put(rec.get_int("TIPODIFF") == 2 ? "5" : "4", 66); // 4 = Differita; 5 = x Cassa
|
||||||
|
riga.put(id.get("MOV.TIPODOC").as_string(), 68);
|
||||||
|
print_real(riga, importo, 70);
|
||||||
|
print_real(riga, imponibile, 85);
|
||||||
|
riga.put(rec.get("CODIVA"), 102);
|
||||||
|
print_real(riga, imposta, 107);
|
||||||
|
riga.put(rec.get_int("NUMPRO") >= 999 ? "X" : "", 123);
|
||||||
|
riga.put(format("%6ld", rec.get_long(MOV_NUMREG)), 125);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
_riga_prospettoXcassa.add_riga(ZERO, ZERO, imponibile, imposta, codiva, 0, 0, false, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_riga_prospettoXcassa.items() <= 0)
|
||||||
|
return id.items() > 0; // Ho stampato qualcosa?
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
if (pr.rows_left() < _riga_prospettoXcassa.items()+5)
|
||||||
|
{
|
||||||
|
pr.formfeed();
|
||||||
|
riga.put(linea, 0);
|
||||||
|
}
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
riga.put(TR("PROSPETTO IMPORTI CON IVA ORDINARIA ED IVA DIFFERITA O PER CASSA"), 40);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
riga.put(TR("IVA Descrizione"), 0);
|
||||||
|
riga.put(TR("Imponibile"), 34);
|
||||||
|
riga.put(TR("Imposta"), 53);
|
||||||
|
riga.put(TR("Imponibile diff."), 84);
|
||||||
|
riga.put(TR("Imposta diff."), 109);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
real tot_imponib, tot_imposta, tot_imponibp, tot_impostap;
|
||||||
|
_riga_prospettoXcassa.sort(compare_righeiva);
|
||||||
|
for (int s = 0; s < _riga_prospettoXcassa.items(); s++)
|
||||||
|
{
|
||||||
|
const TRigaiva& ri = _riga_prospettoXcassa.riga(s);
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
riga.put(ri._codiva, 0);
|
||||||
|
riga.put(descr_iva(ri._codiva), 5);
|
||||||
|
print_real(riga, ri._imponibile, 29);
|
||||||
|
print_real(riga, ri._imposta, 45);
|
||||||
|
print_real(riga, ri._imponibilep,85);
|
||||||
|
print_real(riga, ri._impostap, 107);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
tot_imponib += ri._imponibile;
|
||||||
|
tot_imposta += ri._imposta;
|
||||||
|
tot_imponibp+= ri._imponibilep;
|
||||||
|
tot_impostap+= ri._impostap;
|
||||||
|
}
|
||||||
|
|
||||||
|
riga.reset();
|
||||||
|
pr.print(riga);
|
||||||
|
riga.put(TR("TOTALE"), 0);
|
||||||
|
print_real(riga, tot_imponib, 29);
|
||||||
|
print_real(riga, tot_imposta, 45);
|
||||||
|
print_real(riga, tot_imponibp, 85);
|
||||||
|
print_real(riga, tot_impostap,107);
|
||||||
|
pr.print(riga);
|
||||||
|
|
||||||
|
_riga_prospettoXcassa.destroy();
|
||||||
|
|
||||||
|
_intesta_liq = il; // Ripristina flag intestazioni
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//********* PRINT!!! *********//
|
//********* PRINT!!! *********//
|
||||||
|
|
||||||
bool TStampa_registri_app::preprocess_print(int file, int counter)
|
bool TStampa_registri_app::preprocess_print(int file, int counter)
|
||||||
@ -1930,7 +2119,7 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
|||||||
TString80 comune, prov, comcf, capcf, civcf, stacf;
|
TString80 comune, prov, comcf, capcf, civcf, stacf;
|
||||||
TString80 viacf;
|
TString80 viacf;
|
||||||
TString ragsoc, codfis, piva;
|
TString ragsoc, codfis, piva;
|
||||||
TString tipo_op = "";
|
TString4 tipo_op = "";
|
||||||
|
|
||||||
TLocalisamfile& mov = _cur->file(LF_MOV);
|
TLocalisamfile& mov = _cur->file(LF_MOV);
|
||||||
TLocalisamfile& caus = _cur->file(LF_CAUSALI);
|
TLocalisamfile& caus = _cur->file(LF_CAUSALI);
|
||||||
@ -2001,10 +2190,12 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
|||||||
long codcf = mov.get_long(MOV_CODCF);
|
long codcf = mov.get_long(MOV_CODCF);
|
||||||
long numgio = mov.get_long(MOV_NUMGIO);
|
long numgio = mov.get_long(MOV_NUMGIO);
|
||||||
bool stampato = mov.get_bool(MOV_REGST);
|
bool stampato = mov.get_bool(MOV_REGST);
|
||||||
TString16 codval = mov.get(MOV_CODVALI);
|
TString4 codval = mov.get(MOV_CODVALI);
|
||||||
real corrval = mov.get_real(MOV_CORRVALUTA);
|
real corrval = mov.get_real(MOV_CORRVALUTA);
|
||||||
bool autof = caus.get_bool(CAU_AUTOFATT);
|
const bool autof = caus.get_bool(CAU_AUTOFATT);
|
||||||
bool liqdiff = mov.get_bool(MOV_LIQDIFF);
|
const bool liqdiff = mov.get_bool(MOV_LIQDIFF);
|
||||||
|
const bool IVAxcassa= !liqdiff && mov.get_bool(MOV_IVAXCASSA);
|
||||||
|
|
||||||
TString80 descrcau = caus.get(CAU_DESCR);
|
TString80 descrcau = caus.get(CAU_DESCR);
|
||||||
|
|
||||||
real totdoc = mov.get_real(MOV_TOTDOC);
|
real totdoc = mov.get_real(MOV_TOTDOC);
|
||||||
@ -2116,12 +2307,18 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
|||||||
{
|
{
|
||||||
if (protiva != _uprotivap + 1)
|
if (protiva != _uprotivap + 1)
|
||||||
{
|
{
|
||||||
set_row(_r+1, FR("@2g*** NUM.PROT.FUORI SEQUENZA"));
|
set_row(_r+1, FR(" @b*** NUM.PROT.FUORI SEQUENZA@r"));
|
||||||
riga = _r+2;
|
riga = _r+2;
|
||||||
}
|
}
|
||||||
_uprotivap = uprotiva ? uprotiva : protiva;
|
_uprotivap = uprotiva ? uprotiva : protiva;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mov.get_bool(MOV_IVAXCASSA) && mov.get_int(MOV_TIPOMOV) <= 0)
|
||||||
|
{
|
||||||
|
set_row(_r+1, FR(" @b*** IVA PER CASSA SENZA SALDACONTO@r"));
|
||||||
|
riga = _r+2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* r;
|
const char* r;
|
||||||
@ -2222,7 +2419,7 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
|||||||
_riga_rmi.destroy();
|
_riga_rmi.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( intra && autof)
|
if (intra && autof)
|
||||||
{
|
{
|
||||||
_auto_intraf = true;
|
_auto_intraf = true;
|
||||||
tipo_op = "3";
|
tipo_op = "3";
|
||||||
@ -2233,8 +2430,10 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
|||||||
tipo_op = "2";
|
tipo_op = "2";
|
||||||
else if (liqdiff)
|
else if (liqdiff)
|
||||||
tipo_op = "4";
|
tipo_op = "4";
|
||||||
|
else if (IVAxcassa)
|
||||||
|
tipo_op = "5";
|
||||||
|
|
||||||
set_row(_r, "@66g%s", (const char*) tipo_op);
|
set_row(_r, "@66g%s", (const char*)tipo_op);
|
||||||
|
|
||||||
if (_tipo_stampa == prova) //stampa di prova
|
if (_tipo_stampa == prova) //stampa di prova
|
||||||
{
|
{
|
||||||
@ -2273,14 +2472,15 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (riga <= rr) riga = ++rr;
|
if (riga <= rr)
|
||||||
|
riga = ++rr;
|
||||||
|
|
||||||
if (corrval != ZERO)
|
if (!corrval.is_zero())
|
||||||
{
|
{
|
||||||
TCurrency curr(corrval, codval);
|
TCurrency curr(corrval, codval);
|
||||||
TString80 vall = curr.string(true);
|
TString80 vall = curr.string(true);
|
||||||
vall.right_just(19);
|
vall.right_just(19);
|
||||||
set_row(riga, FR("@24gCodice valuta %-3s Corrispettivo in valuta %s"), (const char*) codval, (const char*) vall);
|
set_row(riga, FR("@24gCodice valuta %-3s Corrispettivo in valuta %s"), (const char*)codval, (const char*)vall);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -2295,15 +2495,15 @@ print_action TStampa_registri_app::postprocess_page (int file, int counter)
|
|||||||
{
|
{
|
||||||
reset_print();
|
reset_print();
|
||||||
|
|
||||||
TRecnotype pos = _cur->pos();
|
const TRecnotype pos = _cur->pos();
|
||||||
long items = _cur->items();
|
const TRecnotype items = _cur->items();
|
||||||
const bool last_mov = pos == items-1;
|
const bool last_mov = pos == items-1;
|
||||||
|
|
||||||
if (_stampa_plafonds && !last_mov)
|
if (_stampa_plafonds && !last_mov)
|
||||||
{
|
{
|
||||||
// Nel caso sia richiesta la stampa prospetto mensile plafond e vi siano mesi
|
// Nel caso sia richiesta la stampa prospetto mensile plafond e vi siano mesi
|
||||||
// senza movimenti, è necessario forzarne la stampa
|
// senza movimenti, è necessario forzarne la stampa
|
||||||
TDate save_date(_datareg);
|
const TDate save_date(_datareg);
|
||||||
|
|
||||||
// Caso speciale, in cui non vi siano movimenti sull'ultimo mese indicato in stampa
|
// Caso speciale, in cui non vi siano movimenti sull'ultimo mese indicato in stampa
|
||||||
//const bool print_over = last_mov && _dataregp == _dataregs && _dataregp.month() < _data_a.month();
|
//const bool print_over = last_mov && _dataregp == _dataregs && _dataregp.month() < _data_a.month();
|
||||||
@ -2322,7 +2522,14 @@ print_action TStampa_registri_app::postprocess_page (int file, int counter)
|
|||||||
_datareg = save_date;
|
_datareg = save_date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (last_mov)
|
||||||
|
{
|
||||||
|
printer().formfeed();
|
||||||
|
print_IVAxCassa(_datareg.month());
|
||||||
|
}
|
||||||
|
|
||||||
if (_liquidazione)
|
if (_liquidazione)
|
||||||
|
{
|
||||||
if (!_st_liq[_datareg.month()] && stampo_liquidazione(_datareg.month()))
|
if (!_st_liq[_datareg.month()] && stampo_liquidazione(_datareg.month()))
|
||||||
{
|
{
|
||||||
_st_liq[_datareg.month()] = true;
|
_st_liq[_datareg.month()] = true;
|
||||||
@ -2340,6 +2547,7 @@ print_action TStampa_registri_app::postprocess_page (int file, int counter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (last_mov)
|
if (last_mov)
|
||||||
{
|
{
|
||||||
@ -2431,10 +2639,6 @@ void TStampa_registri_app::preprocess_header()
|
|||||||
char tipo = ' ';
|
char tipo = ' ';
|
||||||
char type = ' ';
|
char type = ' ';
|
||||||
int mese, anno;
|
int mese, anno;
|
||||||
TString riga(_stampa_width);
|
|
||||||
TString data(30);
|
|
||||||
|
|
||||||
riga.fill('-');
|
|
||||||
|
|
||||||
if (_tipo_stampa != libro_unico)
|
if (_tipo_stampa != libro_unico)
|
||||||
{
|
{
|
||||||
@ -2447,7 +2651,9 @@ void TStampa_registri_app::preprocess_header()
|
|||||||
anno = _annoes;
|
anno = _annoes;
|
||||||
}
|
}
|
||||||
|
|
||||||
data.format("%s %s %d", "mese di", itom(mese), anno);
|
TString data;
|
||||||
|
if (mese > 0)
|
||||||
|
data.format(FR("mese di %s %d"), itom(mese), anno);
|
||||||
|
|
||||||
reset_header();
|
reset_header();
|
||||||
|
|
||||||
@ -2458,8 +2664,7 @@ void TStampa_registri_app::preprocess_header()
|
|||||||
else
|
else
|
||||||
r+=2;
|
r+=2;
|
||||||
}
|
}
|
||||||
else // se stampa di prova o su libro unico l'intestazione della ditta
|
else // se stampa di prova o su libro unico l'intestazione della ditta va sempre stampata
|
||||||
// va sempre stampata
|
|
||||||
r = stampa_intestazione();
|
r = stampa_intestazione();
|
||||||
|
|
||||||
if (_stampa_num_pag) // Stampa numero di pagina in alto a destra
|
if (_stampa_num_pag) // Stampa numero di pagina in alto a destra
|
||||||
@ -2483,8 +2688,7 @@ void TStampa_registri_app::preprocess_header()
|
|||||||
if (_tipo_stampa == libro_unico)
|
if (_tipo_stampa == libro_unico)
|
||||||
set_header(r, FR("@94gProgr.Studio %ld@114gProgr.Utente %ld"), _u_stampata, _pagine_stampate);
|
set_header(r, FR("@94gProgr.Studio %ld@114gProgr.Utente %ld"), _u_stampata, _pagine_stampate);
|
||||||
|
|
||||||
// cosi' sono sicura che l'aggiornamento viene fatto ad ogni salto pagina
|
// cosi' sono sicura che l'aggiornamento viene fatto ad ogni salto pagina (cioe' a rottura di mese)
|
||||||
// (cioe' a rottura di mese)
|
|
||||||
if (_tipo_stampa != prova)
|
if (_tipo_stampa != prova)
|
||||||
aggiorna_reg(_ok_vidi);
|
aggiorna_reg(_ok_vidi);
|
||||||
|
|
||||||
@ -2527,6 +2731,7 @@ void TStampa_registri_app::preprocess_header()
|
|||||||
//l'intestazione (piuttosto dettagliata) e' gestita
|
//l'intestazione (piuttosto dettagliata) e' gestita
|
||||||
//dal prg di liquidazione perche' molte info che devono
|
//dal prg di liquidazione perche' molte info che devono
|
||||||
//comparire in questa intestazione la stampa reg. non le conosce.
|
//comparire in questa intestazione la stampa reg. non le conosce.
|
||||||
|
const TString riga(_stampa_width, '-');
|
||||||
|
|
||||||
//non sto stampando la liquidazione
|
//non sto stampando la liquidazione
|
||||||
if (!_intesta_liq)
|
if (!_intesta_liq)
|
||||||
@ -2536,13 +2741,13 @@ void TStampa_registri_app::preprocess_header()
|
|||||||
|
|
||||||
if (_tipo_reg == vendita) //registro vendite
|
if (_tipo_reg == vendita) //registro vendite
|
||||||
{
|
{
|
||||||
cor = 'R';
|
cor = 'R'; // Ricavi
|
||||||
nd1 = ' ';
|
nd1 = ' ';
|
||||||
nd2 = ' ';
|
nd2 = ' ';
|
||||||
}
|
}
|
||||||
if (_tipo_reg == acquisto)
|
if (_tipo_reg == acquisto)
|
||||||
{
|
{
|
||||||
cor = 'C';
|
cor = 'C'; // Cessioni
|
||||||
nd1 = 'N';
|
nd1 = 'N';
|
||||||
nd2 = 'D';
|
nd2 = 'D';
|
||||||
}
|
}
|
||||||
@ -2936,7 +3141,7 @@ void TStampa_registri_app::aggiorna_reg(const bool aggiorna_vidi)
|
|||||||
|
|
||||||
IndBil.zero();
|
IndBil.zero();
|
||||||
|
|
||||||
TRectype nuovo (IndBil.curr());
|
TRectype nuovo(IndBil.curr());
|
||||||
|
|
||||||
IndBil.put("ANNO", _annoes);
|
IndBil.put("ANNO", _annoes);
|
||||||
IndBil.put("CODLIB", _codlib);
|
IndBil.put("CODLIB", _codlib);
|
||||||
@ -3083,6 +3288,17 @@ void TStampa_registri_app::no_movimenti()
|
|||||||
send_message(calc ? 'R' : 'C', app, calc ? a : mese);
|
send_message(calc ? 'R' : 'C', app, calc ? a : mese);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (some_IVAxCassa())
|
||||||
|
{
|
||||||
|
if (! printer().isopen())
|
||||||
|
printer().open();
|
||||||
|
|
||||||
|
int mese = a;
|
||||||
|
if (_frequiva == 'T')
|
||||||
|
mese += 2 - ((mese-1) % 3);
|
||||||
|
print_IVAxCassa(mese);
|
||||||
|
}
|
||||||
|
|
||||||
if (_tipo_reg == riepilogativo || _liquidazione || _stampa_plafonds)
|
if (_tipo_reg == riepilogativo || _liquidazione || _stampa_plafonds)
|
||||||
{
|
{
|
||||||
for (int m = da; m <= a; m++)
|
for (int m = da; m <= a; m++)
|
||||||
@ -3107,7 +3323,7 @@ void TStampa_registri_app::no_movimenti()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// In prova va stampato per ogni mese (sia Mensile che Trimestrale;
|
// In prova va stampato per ogni mese (sia Mensile che Trimestrale);
|
||||||
// in bollato, solo per i mesi che ancora mancano)
|
// in bollato, solo per i mesi che ancora mancano)
|
||||||
const bool print_plafond_bollato = _tipo_stampa != prova && (m == 1 || m > _u_data.month());
|
const bool print_plafond_bollato = _tipo_stampa != prova && (m == 1 || m > _u_data.month());
|
||||||
if (_stampa_plafonds && (_tipo_stampa == prova || print_plafond_bollato))
|
if (_stampa_plafonds && (_tipo_stampa == prova || print_plafond_bollato))
|
||||||
@ -3122,8 +3338,7 @@ void TStampa_registri_app::no_movimenti()
|
|||||||
//la funzione stampo_liquidazione non stampera' la liquidazione sul
|
//la funzione stampo_liquidazione non stampera' la liquidazione sul
|
||||||
//registro il cui mese di stampa ultima liq. e' > del mese in esame
|
//registro il cui mese di stampa ultima liq. e' > del mese in esame
|
||||||
//caso a parte il mese 12 (che posso ristampare 2 volte)
|
//caso a parte il mese 12 (che posso ristampare 2 volte)
|
||||||
if (_liquidazione)
|
if (_liquidazione && stampo_liquidazione(m))
|
||||||
if (stampo_liquidazione(m))
|
|
||||||
{
|
{
|
||||||
if (_tipo_reg == riepilogativo)
|
if (_tipo_reg == riepilogativo)
|
||||||
{
|
{
|
||||||
@ -3133,6 +3348,7 @@ void TStampa_registri_app::no_movimenti()
|
|||||||
|
|
||||||
if (! printer().isopen())
|
if (! printer().isopen())
|
||||||
printer().open();
|
printer().open();
|
||||||
|
|
||||||
TFilename f;
|
TFilename f;
|
||||||
f.temp("rgp");
|
f.temp("rgp");
|
||||||
_datareg = TDate(1, m, _annoes); // serve alla preprocess_header
|
_datareg = TDate(1, m, _annoes); // serve alla preprocess_header
|
||||||
@ -3150,7 +3366,7 @@ void TStampa_registri_app::no_movimenti()
|
|||||||
else
|
else
|
||||||
send_message('l', f, m);
|
send_message('l', f, m);
|
||||||
}
|
}
|
||||||
if (fexist(f))
|
if (f.exist())
|
||||||
{
|
{
|
||||||
_intesta_liq = true;
|
_intesta_liq = true;
|
||||||
merge_export_file(f,false,true);
|
merge_export_file(f,false,true);
|
||||||
@ -3315,7 +3531,8 @@ bool TStampa_registri_app::set_print(int n)
|
|||||||
const TDate d(31,12,_annoes);
|
const TDate d(31,12,_annoes);
|
||||||
if (_data_a == d)
|
if (_data_a == d)
|
||||||
_tipo_riepilogativo = m.get(TIPO_RIEPILOGATIVO)[0];
|
_tipo_riepilogativo = m.get(TIPO_RIEPILOGATIVO)[0];
|
||||||
else _tipo_riepilogativo = ' ';
|
else
|
||||||
|
_tipo_riepilogativo = ' ';
|
||||||
printer().setdate(_data_stampa);
|
printer().setdate(_data_stampa);
|
||||||
}
|
}
|
||||||
else //stampe definitive
|
else //stampe definitive
|
||||||
@ -3712,7 +3929,7 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin
|
|||||||
row.put(TR("Registro IVA:"), 0);
|
row.put(TR("Registro IVA:"), 0);
|
||||||
row.put(codreg, 14);
|
row.put(codreg, 14);
|
||||||
row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18);
|
row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18);
|
||||||
row.put(TR("Attivita\'"), 60);
|
row.put(TR("Attività"), 60);
|
||||||
|
|
||||||
if (_annoes > 2007)
|
if (_annoes > 2007)
|
||||||
{
|
{
|
||||||
|
@ -38,7 +38,7 @@ class TStampa_registri_app : public TPrintapp
|
|||||||
// TLocalisamfile *_clifo, *_occas, *_com, *_anag, *_unloc, *_attiv, *_indlib;
|
// TLocalisamfile *_clifo, *_occas, *_com, *_anag, *_unloc, *_attiv, *_indlib;
|
||||||
// TTable *_tablia, *_tabpim, *_tabprm, *_tabprp, *_table;
|
// TTable *_tablia, *_tabpim, *_tabprm, *_tabprp, *_table;
|
||||||
TTable *_tabreg;
|
TTable *_tabreg;
|
||||||
TRigaiva_array _iva_array, _riga_rmi;
|
TRigaiva_array _iva_array, _riga_rmi, _riga_prospettoXcassa;
|
||||||
TTipodoc_array _doc_array;
|
TTipodoc_array _doc_array;
|
||||||
TRiga_array _tot_iva_array, _tot_prec_iva_array;
|
TRiga_array _tot_iva_array, _tot_prec_iva_array;
|
||||||
TBit_array _selected;
|
TBit_array _selected;
|
||||||
@ -146,6 +146,10 @@ public:
|
|||||||
void scrivi_reg(const TDate&);
|
void scrivi_reg(const TDate&);
|
||||||
int stampa_acquisti(int);
|
int stampa_acquisti(int);
|
||||||
real stampa_valori_plafonds(const real&, const int, TTable&, const char*);
|
real stampa_valori_plafonds(const real&, const int, TTable&, const char*);
|
||||||
|
|
||||||
|
bool some_IVAxCassa() const; // C'e' IVA per cassa o differita da stampare?
|
||||||
|
bool print_IVAxCassa(int month);
|
||||||
|
|
||||||
void build_nomiditte(TProgind* pnd = NULL);
|
void build_nomiditte(TProgind* pnd = NULL);
|
||||||
void set_year(int y) { _annoes = y; }
|
void set_year(int y) { _annoes = y; }
|
||||||
void clear_stliq();
|
void clear_stliq();
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
#include <recarray.h>
|
|
||||||
#include <relation.h>
|
|
||||||
#include "cg4501.h"
|
#include "cg4501.h"
|
||||||
#include "cg4500a.h"
|
#include "cg4500a.h"
|
||||||
#include "cglib01.h"
|
#include "cglib01.h"
|
||||||
|
|
||||||
|
#include <recarray.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
|
||||||
class TAp_eser : public TSkeleton_application
|
class TAp_eser : public TSkeleton_application
|
||||||
{
|
{
|
||||||
int _anno, _newanno;
|
int _anno, _newanno;
|
||||||
@ -26,7 +29,7 @@ public:
|
|||||||
bool apertura_es();
|
bool apertura_es();
|
||||||
};
|
};
|
||||||
|
|
||||||
TAp_eser& app() { return (TAp_eser&) main_app(); }
|
static TAp_eser& app() { return (TAp_eser&) main_app(); }
|
||||||
|
|
||||||
bool TAp_eser::mask_newanno (TMask_field& f, KEY k)
|
bool TAp_eser::mask_newanno (TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
@ -271,6 +274,6 @@ int cg4500 (int argc, char* argv[])
|
|||||||
error_box("Uso: cg4 -4 [C,I]");
|
error_box("Uso: cg4 -4 [C,I]");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
104
cg/cg4501.cpp
104
cg/cg4501.cpp
@ -1,17 +1,19 @@
|
|||||||
#include <recarray.h>
|
|
||||||
#include <relation.h>
|
|
||||||
|
|
||||||
#include "cg4501.h"
|
#include "cg4501.h"
|
||||||
#include "cg4500b.h"
|
#include "cg4500b.h"
|
||||||
#include "nditte.h"
|
|
||||||
|
#include <recarray.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <tabutil.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include <nditte.h>
|
||||||
|
|
||||||
bool TAp_iva::mask_annoiva (TMask_field& f, KEY k)
|
bool TAp_iva::mask_annoiva (TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
if ( (k == K_ENTER) && f.to_check(k) )
|
if ( (k == K_ENTER) && f.to_check(k) )
|
||||||
{
|
{
|
||||||
int annoiva = f.mask().get_int(F_ANNOIVA);
|
const int annoiva = f.mask().get_int(F_ANNOIVA);
|
||||||
TConfig conf(CONFIG_DITTA);
|
const int annoivap = ini_get_int(CONFIG_DITTA, "cg", "AnLiIv");
|
||||||
int annoivap = conf.get_int("AnLiIv");
|
|
||||||
if (annoivap > 0 && annoiva != annoivap + 1)
|
if (annoivap > 0 && annoiva != annoivap + 1)
|
||||||
return f.error_box(FR("Il nuovo anno esercizio IVA deve essere %d"), (annoivap+1));
|
return f.error_box(FR("Il nuovo anno esercizio IVA deve essere %d"), (annoivap+1));
|
||||||
}
|
}
|
||||||
@ -26,39 +28,11 @@ bool TAp_iva::create()
|
|||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TAp_iva::apertura_iva()
|
void TAp_iva::libro_unico()
|
||||||
{
|
{
|
||||||
TString16 annoiva;
|
TString4 annoiva;
|
||||||
TString16 codlia;
|
|
||||||
TDate data;
|
|
||||||
|
|
||||||
int annop = _annop;
|
|
||||||
annoiva.format("%04d", _annoiva);
|
annoiva.format("%04d", _annoiva);
|
||||||
|
|
||||||
//viene aggiornata la tabella LIA (liquidazione iva annuale)
|
|
||||||
TTable tablia ("%LIA");
|
|
||||||
|
|
||||||
codlia.format("%05ld%04d", get_firm(), _annoiva);
|
|
||||||
tablia.put ("CODTAB", codlia);
|
|
||||||
if (tablia.read() == NOERR)
|
|
||||||
tablia.remove();
|
|
||||||
|
|
||||||
tablia.zero();
|
|
||||||
codlia.format("%05ld%04d", get_firm(), annop);
|
|
||||||
tablia.put ("CODTAB", codlia);
|
|
||||||
|
|
||||||
if (tablia.read() != NOERR)
|
|
||||||
return error_box(TR("Non esiste il record relativo all'anno iva precedente sulla tabella liquidazione annuale iva"));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
codlia.format("%05ld%04d", get_firm(), _annoiva);
|
|
||||||
tablia.put("CODTAB", codlia);
|
|
||||||
tablia.put("S7", _frequenza);
|
|
||||||
tablia.put("B2", _is_minagr);
|
|
||||||
tablia.zero("R0");
|
|
||||||
tablia.write();
|
|
||||||
}
|
|
||||||
|
|
||||||
//viene aggiornata la tabella del libro unico.
|
//viene aggiornata la tabella del libro unico.
|
||||||
TRelation lbu("%LBU");
|
TRelation lbu("%LBU");
|
||||||
TRectype & tablbu = lbu.curr();
|
TRectype & tablbu = lbu.curr();
|
||||||
@ -80,7 +54,6 @@ bool TAp_iva::apertura_iva()
|
|||||||
items = cur.items();
|
items = cur.items();
|
||||||
|
|
||||||
cur.freeze();
|
cur.freeze();
|
||||||
|
|
||||||
for (cur = 0L; cur.pos() < items; ++cur)
|
for (cur = 0L; cur.pos() < items; ++cur)
|
||||||
{
|
{
|
||||||
TString16 cod(tablbu.get("CODTAB"));
|
TString16 cod(tablbu.get("CODTAB"));
|
||||||
@ -90,6 +63,46 @@ bool TAp_iva::apertura_iva()
|
|||||||
tablbu.zero("I0");
|
tablbu.zero("I0");
|
||||||
lbu.write();
|
lbu.write();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TAp_iva::apertura_iva()
|
||||||
|
{
|
||||||
|
TString16 codlia;
|
||||||
|
|
||||||
|
TString4 annoiva; annoiva.format("%04d", _annoiva);
|
||||||
|
|
||||||
|
//viene aggiornata la tabella LIA (liquidazione iva annuale)
|
||||||
|
TTable tablia ("%LIA");
|
||||||
|
|
||||||
|
codlia.format("%05ld%04d", get_firm(), _annoiva);
|
||||||
|
tablia.put ("CODTAB", codlia);
|
||||||
|
if (tablia.read() == NOERR)
|
||||||
|
tablia.remove();
|
||||||
|
|
||||||
|
tablia.zero();
|
||||||
|
codlia.format("%05ld%04d", get_firm(), _annop);
|
||||||
|
tablia.put ("CODTAB", codlia);
|
||||||
|
|
||||||
|
if (tablia.read() != NOERR)
|
||||||
|
return error_box(TR("Non esiste il record relativo all'anno IVA precedente sulla tabella liquidazione annuale IVA"));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
codlia.format("%05ld%04d", get_firm(), _annoiva);
|
||||||
|
tablia.put("CODTAB", codlia);
|
||||||
|
tablia.put("S7", _frequenza);
|
||||||
|
tablia.put("B2", _is_minagr);
|
||||||
|
tablia.zero("R0");
|
||||||
|
|
||||||
|
if (tablia.get_bool("B5")) // IVA per casssa
|
||||||
|
{
|
||||||
|
tablia.put("D0", TDate( 1, 1, _annoiva));
|
||||||
|
tablia.put("D1", TDate(31,12, _annoiva));
|
||||||
|
}
|
||||||
|
|
||||||
|
tablia.write();
|
||||||
|
}
|
||||||
|
|
||||||
|
// libro_unico(); // Obsoleto?
|
||||||
|
|
||||||
//viene aggiornata la tabella dei registri.
|
//viene aggiornata la tabella dei registri.
|
||||||
TRelation reg("REG");
|
TRelation reg("REG");
|
||||||
@ -99,7 +112,7 @@ bool TAp_iva::apertura_iva()
|
|||||||
|
|
||||||
TCursor cur_reg(®, "", 1, &tabreg, &tabreg);
|
TCursor cur_reg(®, "", 1, &tabreg, &tabreg);
|
||||||
|
|
||||||
items = cur_reg.items();
|
TRecnotype items = cur_reg.items();
|
||||||
cur_reg.freeze();
|
cur_reg.freeze();
|
||||||
for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg)
|
for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg)
|
||||||
{
|
{
|
||||||
@ -116,12 +129,12 @@ bool TAp_iva::apertura_iva()
|
|||||||
cur_reg.freeze();
|
cur_reg.freeze();
|
||||||
for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg)
|
for (cur_reg = 0L; cur_reg.pos() < items; ++cur_reg)
|
||||||
{
|
{
|
||||||
int tiporeg = tabreg.get_int("I0");
|
const int tiporeg = tabreg.get_int("I0");
|
||||||
if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg==3)||(tiporeg==9))
|
if ( (tiporeg == 1)||(tiporeg == 2)||(tiporeg==3)||(tiporeg==9))
|
||||||
{
|
{
|
||||||
TString16 cod = tabreg.get("CODTAB");
|
TString16 cod = tabreg.get("CODTAB");
|
||||||
|
|
||||||
cod.overwrite(annoiva);
|
cod.overwrite(annoiva);
|
||||||
|
|
||||||
tabreg.put("CODTAB", cod);
|
tabreg.put("CODTAB", cod);
|
||||||
tabreg.zero("I1");
|
tabreg.zero("I1");
|
||||||
tabreg.zero("I2");
|
tabreg.zero("I2");
|
||||||
@ -129,9 +142,9 @@ bool TAp_iva::apertura_iva()
|
|||||||
tabreg.zero("I5");
|
tabreg.zero("I5");
|
||||||
tabreg.zero("I6");
|
tabreg.zero("I6");
|
||||||
tabreg.zero("S1");
|
tabreg.zero("S1");
|
||||||
tabreg.put("D0", data);
|
tabreg.zero("D0");
|
||||||
tabreg.put("D2", data);
|
tabreg.zero("D2");
|
||||||
tabreg.put("D3", data);
|
tabreg.zero("D3");
|
||||||
tabreg.zero("R1");
|
tabreg.zero("R1");
|
||||||
tabreg.zero("R2");
|
tabreg.zero("R2");
|
||||||
|
|
||||||
@ -153,7 +166,8 @@ bool TAp_iva::apertura_iva()
|
|||||||
nditte.rewrite();
|
nditte.rewrite();
|
||||||
}
|
}
|
||||||
message_box(TR("Apertura nuovo esercizio IVA completata"));
|
message_box(TR("Apertura nuovo esercizio IVA completata"));
|
||||||
return TRUE;
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TAp_iva::main_loop()
|
void TAp_iva::main_loop()
|
||||||
|
10
cg/cg4501.h
10
cg/cg4501.h
@ -6,13 +6,8 @@
|
|||||||
#include <mask.h>
|
#include <mask.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __TABUTIL_H
|
|
||||||
#include <tabutil.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class TAp_iva : public TSkeleton_application
|
class TAp_iva : public TSkeleton_application
|
||||||
{
|
{
|
||||||
// TTable* _reg, * _lia, * _lbu;
|
|
||||||
int _annoiva;
|
int _annoiva;
|
||||||
int _annop;
|
int _annop;
|
||||||
long _ditta;
|
long _ditta;
|
||||||
@ -21,15 +16,12 @@ class TAp_iva : public TSkeleton_application
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
static bool mask_annoiva(TMask_field&, KEY);
|
static bool mask_annoiva(TMask_field&, KEY);
|
||||||
|
void libro_unico();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
virtual bool destroy() { return TRUE;}
|
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
|
|
||||||
bool setta();
|
bool setta();
|
||||||
bool apertura_iva();
|
bool apertura_iva();
|
||||||
|
|
||||||
TAp_iva() {}
|
|
||||||
virtual ~TAp_iva() {}
|
|
||||||
};
|
};
|
||||||
|
@ -2,15 +2,11 @@
|
|||||||
// modifica parametri contabilita' relativi alla liquidazione
|
// modifica parametri contabilita' relativi alla liquidazione
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <currency.h>
|
|
||||||
#include <defmask.h>
|
#include <defmask.h>
|
||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
#include <prefix.h>
|
|
||||||
#include <relapp.h>
|
#include <relapp.h>
|
||||||
#include <relation.h>
|
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
#include <utility.h>
|
|
||||||
|
|
||||||
#include "cg5.h"
|
#include "cg5.h"
|
||||||
#include "cg5300a.h"
|
#include "cg5300a.h"
|
||||||
@ -23,8 +19,8 @@
|
|||||||
|
|
||||||
class TParaliq_app : public TRelation_application
|
class TParaliq_app : public TRelation_application
|
||||||
{
|
{
|
||||||
TRelation * _rel;
|
TRelation* _rel;
|
||||||
TMask * _msk;
|
TMask* _msk;
|
||||||
int _yearliq;
|
int _yearliq;
|
||||||
|
|
||||||
protected: // Applicat
|
protected: // Applicat
|
||||||
@ -174,10 +170,10 @@ bool TParaliq_app::utcred_handler(TMask_field& f, KEY k)
|
|||||||
const int anno_liq = m.get_int(F_YEAR);
|
const int anno_liq = m.get_int(F_YEAR);
|
||||||
TString80 cod_mesi;
|
TString80 cod_mesi;
|
||||||
TString des_mesi(128);
|
TString des_mesi(128);
|
||||||
TString16 mese;
|
TString8 mese;
|
||||||
TList_field & mese_res = ((TList_field &) m.field(F_MESE_RES_AL));
|
TList_field& mese_res = m.lfield(F_MESE_RES_AL);
|
||||||
|
|
||||||
if (anno_liq >= 2000 && f.get().not_empty())
|
if (anno_liq >= 2000 && !f.get().not_empty())
|
||||||
{
|
{
|
||||||
m.field(F_CRED_PREC).set_prompt(TR("Credito compensabile inizio anno "));
|
m.field(F_CRED_PREC).set_prompt(TR("Credito compensabile inizio anno "));
|
||||||
m.field(F_CRED_RES).set_prompt(TR("Credito in compensaz.utilizzato "));
|
m.field(F_CRED_RES).set_prompt(TR("Credito in compensaz.utilizzato "));
|
||||||
@ -292,8 +288,7 @@ void TParaliq_app::init_array(TMask& m, bool update)
|
|||||||
|
|
||||||
void TParaliq_app::on_config_change()
|
void TParaliq_app::on_config_change()
|
||||||
{
|
{
|
||||||
TConfig d(CONFIG_DITTA);
|
_yearliq = ini_get_int(CONFIG_DITTA, "cg", "AnLiIv");
|
||||||
_yearliq = (int)d.get_long("AnLiIv");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TParaliq_app::user_create()
|
bool TParaliq_app::user_create()
|
||||||
@ -442,7 +437,8 @@ int TParaliq_app::rewrite(const TMask& m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TTable& lia = (TTable&)_rel->lfile();
|
TTable& lia = (TTable&)_rel->lfile();
|
||||||
lia.put("CODTAB", format("%05ld%04d", firm, year));
|
TString16 ct; ct.format("%05ld%04d", firm, year);
|
||||||
|
lia.put("CODTAB", ct);
|
||||||
was = lia.read() == NOERR;
|
was = lia.read() == NOERR;
|
||||||
if (!was) lia.zero();
|
if (!was) lia.zero();
|
||||||
m.autosave(*_rel);
|
m.autosave(*_rel);
|
||||||
|
@ -176,7 +176,7 @@ END
|
|||||||
|
|
||||||
SPREADSHEET F_SHEET_PLA 78
|
SPREADSHEET F_SHEET_PLA 78
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 16 "Parametri attivita'"
|
PROMPT 1 16 "Parametri attività"
|
||||||
ITEM "Attiv.@5F"
|
ITEM "Attiv.@5F"
|
||||||
ITEM "Tipo@3"
|
ITEM "Tipo@3"
|
||||||
ITEM "Prorata"
|
ITEM "Prorata"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include "cglib03.h"
|
#include "cglib03.h"
|
||||||
|
|
||||||
#include <diction.h>
|
#include <diction.h>
|
||||||
|
#include <dongle.h>
|
||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
|
|
||||||
#include <mov.h>
|
#include <mov.h>
|
||||||
@ -31,6 +32,7 @@ static int codind2tipodet(const TString & codind, real& perc)
|
|||||||
}
|
}
|
||||||
return tipodet;
|
return tipodet;
|
||||||
}
|
}
|
||||||
|
|
||||||
real indetraibile_al(const TString& codind, const TCausale& caus, int annodoc, int & tipodet,const bool is_liq)
|
real indetraibile_al(const TString& codind, const TCausale& caus, int annodoc, int & tipodet,const bool is_liq)
|
||||||
{
|
{
|
||||||
real perc;
|
real perc;
|
||||||
@ -105,6 +107,28 @@ int analizza_IVA(const real& imptot, const real& ivatot, const real perc_ind,
|
|||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool gestione_IVAxCassa(const TDate& data, long firm)
|
||||||
|
{
|
||||||
|
bool yes = dongle().active(ICAUT) && dongle().active(SCAUT);
|
||||||
|
if (yes)
|
||||||
|
{
|
||||||
|
const int anno = data.year();
|
||||||
|
if (firm <= 0)
|
||||||
|
firm = prefix().get_codditta();
|
||||||
|
TString16 codtab;
|
||||||
|
codtab.format("%05ld%04d", firm, anno);
|
||||||
|
const TRectype& lia = cache().get("%LIA", codtab);
|
||||||
|
yes = lia.get_bool("B5");
|
||||||
|
if (yes)
|
||||||
|
{
|
||||||
|
TDate dal = lia.get("D0"); if (dal.year() != anno) dal = TDate( 1, 1,anno);
|
||||||
|
TDate al = lia.get("D1"); if (al.year() != anno) al = TDate(31,12,anno);
|
||||||
|
yes = data >= dal && data <= al;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return yes;
|
||||||
|
}
|
||||||
|
|
||||||
// Anticamente TIPODET conteneva in tipo di indetraibilita,
|
// Anticamente TIPODET conteneva in tipo di indetraibilita,
|
||||||
// ora invece trattasi di un codice di indetraibilita'
|
// ora invece trattasi di un codice di indetraibilita'
|
||||||
// associato ad un motivo ed una percentuale di indetraibilita'
|
// associato ad un motivo ed una percentuale di indetraibilita'
|
||||||
@ -208,7 +232,7 @@ bool TRigaiva_array::add_riga(const TRectype& iva)
|
|||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
real percind;
|
real percind;
|
||||||
const TString & codind = iva.get(RMI_TIPODET);
|
const TString& codind = iva.get(RMI_TIPODET);
|
||||||
const int tipodet = codind2tipodet(codind, percind);
|
const int tipodet = codind2tipodet(codind, percind);
|
||||||
const TString4 codiva = iva.get(RMI_CODIVA);
|
const TString4 codiva = iva.get(RMI_CODIVA);
|
||||||
const int tipocr = iva.get_int (RMI_TIPOCR);
|
const int tipocr = iva.get_int (RMI_TIPOCR);
|
||||||
|
@ -157,5 +157,6 @@ int analizza_IVA(const real& imptot, const real& ivatot, const real perc_ind,
|
|||||||
real& imp_det, real& iva_det, real& imp_ind, real& iva_ind);
|
real& imp_det, real& iva_det, real& imp_ind, real& iva_ind);
|
||||||
int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mv, real& percind, const bool is_liq = false);
|
int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mv, real& percind, const bool is_liq = false);
|
||||||
|
|
||||||
|
bool gestione_IVAxCassa(const TDate& data, long firm = 0);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -685,9 +685,12 @@ TFieldtypes TSolder_tree::get_var(const TString& name, TVariant& var) const
|
|||||||
} else
|
} else
|
||||||
if (name == PART_DATADOC)
|
if (name == PART_DATADOC)
|
||||||
{
|
{
|
||||||
var = rpag.get(name);
|
TDate d = rpag.get(PART_DATAPAG);
|
||||||
if (var.is_zero())
|
if (!d.ok())
|
||||||
var = rpag.get(PART_DATAREG);
|
d = rpag.get(PART_DATADOC);
|
||||||
|
if (!d.ok())
|
||||||
|
d = rpag.get(PART_DATAREG);
|
||||||
|
var = d;
|
||||||
} else
|
} else
|
||||||
if (rpag.TRectype::exist(name))
|
if (rpag.TRectype::exist(name))
|
||||||
var = rpag.get(name);
|
var = rpag.get(name);
|
||||||
|
@ -1118,7 +1118,11 @@ int TRiga_partite::calcola_pagato_periodo(const TDate& dal, const TDate& al, TIm
|
|||||||
{
|
{
|
||||||
const TRectype& pag = scad.row(p); // Riga pagamento
|
const TRectype& pag = scad.row(p); // Riga pagamento
|
||||||
const TRiga_partite& sum = partita().riga(p); // Riga partite
|
const TRiga_partite& sum = partita().riga(p); // Riga partite
|
||||||
const TDate datapag = sum.get_date(PART_DATAPAG);
|
TDate datapag = sum.get_date(PART_DATAPAG);
|
||||||
|
if (!datapag.ok())
|
||||||
|
datapag = sum.get_date(PART_DATADOC);
|
||||||
|
if (!datapag.ok())
|
||||||
|
datapag = sum.get_date(PART_DATAREG);
|
||||||
if ((!dal.ok() || datapag >= dal) && (!al.ok() || datapag <= al))
|
if ((!dal.ok() || datapag >= dal) && (!al.ok() || datapag <= al))
|
||||||
pags.add((TRectype*)&pag);
|
pags.add((TRectype*)&pag);
|
||||||
}
|
}
|
||||||
@ -1140,7 +1144,11 @@ int TRiga_partite::calcola_pagato_periodo(const TDate& dal, const TDate& al, TIm
|
|||||||
{
|
{
|
||||||
const TRectype& pag = unas.row(r);
|
const TRectype& pag = unas.row(r);
|
||||||
const TRiga_partite& sum = partita().riga(r);
|
const TRiga_partite& sum = partita().riga(r);
|
||||||
const TDate datapag = sum.get_date(PART_DATAPAG);
|
TDate datapag = sum.get_date(PART_DATAPAG);
|
||||||
|
if (!datapag.ok())
|
||||||
|
datapag = sum.get_date(PART_DATADOC);
|
||||||
|
if (!datapag.ok())
|
||||||
|
datapag = sum.get_date(PART_DATAREG);
|
||||||
if ((!dal.ok() || datapag >= dal) && (!al.ok() || datapag <= al))
|
if ((!dal.ok() || datapag >= dal) && (!al.ok() || datapag <= al))
|
||||||
pags.add((TRectype*)&pag);
|
pags.add((TRectype*)&pag);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
171
|
171
|
||||||
0
|
0
|
||||||
$ivadiff|0|0|127|0|IVA ad esigibilità differita o per cassa|||
|
$ivadiff|0|0|110|0|IVA ad esigibilità differita o per cassa|||
|
||||||
|
@ -18,7 +18,7 @@ SEZIONE|1|1|0|Sezione <D>are <A>vere
|
|||||||
IMPORTO|4|18|3|Importo
|
IMPORTO|4|18|3|Importo
|
||||||
IMPONIBILE|4|18|3|Imponibile
|
IMPONIBILE|4|18|3|Imponibile
|
||||||
IMPOSTA|4|18|3|Imposta
|
IMPOSTA|4|18|3|Imposta
|
||||||
VERSATA|4|18|3|Imposta Versata
|
CHIUSA|8|1|0|Partita chiusa
|
||||||
2
|
2
|
||||||
NUMREG+NUMRIG+NUMPRO|
|
NUMREG+NUMRIG+NUMPRO|
|
||||||
ANNOLIQ+MESELIQ+DATAREGP|X
|
ANNOLIQ+MESELIQ+DATAREGP|X
|
||||||
|
Loading…
x
Reference in New Issue
Block a user