Migliorata gestione reverse charge

git-svn-id: svn://10.65.10.50/branches/R_10_00@23132 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2015-11-04 14:13:48 +00:00
parent fe5e28c2d7
commit 57565a44ac
16 changed files with 206 additions and 181 deletions

View File

@ -1545,7 +1545,7 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
// Solo regolarizzazioni IVA // Solo regolarizzazioni IVA
if (_automatico->_tipo == 2) if (_automatico->_tipo == 2)
{ {
_automatico->_totale += m.get_real(F_REVCHARGE); _automatico->_totale += m.get_real(F_REVCHARGE) + m.get_real(F_RITFIS);
_automatico->_codiva = m.get(F_CODIVA); _automatico->_codiva = m.get(F_CODIVA);
if (_automatico->_codiva.blank() && _rel->iva_items() > 0) if (_automatico->_codiva.blank() && _rel->iva_items() > 0)
_automatico->_codiva = _rel->iva(0).get(RMI_CODIVA); _automatico->_codiva = _rel->iva(0).get(RMI_CODIVA);

View File

@ -395,8 +395,7 @@ bool TConti_array::remove_iva(bool det)
real TMovimentoPN::indetraibile_al(const TString& codind, const TCausale& caus, int annodoc) const real TMovimentoPN::indetraibile_al(const TString& codind, const TCausale& caus, int annodoc) const
{ {
int tipodet; int tipodet = 0;
return ::indetraibile_al(codind, caus, annodoc, tipodet); return ::indetraibile_al(codind, caus, annodoc, tipodet);
} }

View File

@ -272,9 +272,11 @@ TImporto TPrimanota_application::real2imp(const real& r, char row_type)
switch (row_type) switch (row_type)
{ {
case 'S': case 'S':
case 'V':
dare = causale().sezione_ritsoc() == 'D'; dare = causale().sezione_ritsoc() == 'D';
break; break;
case 'V':
dare = causale().sezione_revcharge() == 'D';
break;
default: default:
dare = causale().sezione_clifo() == 'D'; dare = causale().sezione_clifo() == 'D';
if (row_type != 'T' && row_type != 'F') if (row_type != 'T' && row_type != 'F')
@ -1283,12 +1285,10 @@ bool TPrimanota_application::codiva_handler(TMask_field& f, KEY key)
} }
TString4 det;
if (app().iva() == iva_acquisti) if (app().iva() == iva_acquisti)
{ det = iva.indetraibilita();
const int det = iva.detraibilita();
if (det > 0)
m.set(103, det); m.set(103, det);
}
TMask_field& im = m.field(101); TMask_field& im = m.field(101);
im.set_dirty(); im.set_dirty();
@ -2244,6 +2244,8 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
if (!c.ok()) if (!c.ok())
return false; return false;
bool init_provv_rev = false;
TPrimanota_application& a = app(); TPrimanota_application& a = app();
const TCausale& k = a.causale(); const TCausale& k = a.causale();
const TString& msg = c.compatible(k); const TString& msg = c.compatible(k);
@ -2253,19 +2255,9 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
{ {
// Cambio la maschera al volo // Cambio la maschera al volo
if (a.force_mask_swap(k, c)) if (a.force_mask_swap(k, c))
{ init_provv_rev = true;
TString4 provv;
provv << c.provvisorio();
m.set(F_PROVVISORIO, provv);
if (c.iva() != nessuna_iva && m.id2pos(F_SOLAIVA) > 0)
{
m.set(F_SOLAIVA, c.soloiva() ? "X" : " ");
m.efield(F_REVCHARGE).show(c.iva() == iva_acquisti && c.reverse_charge());
}
return true;
}
} }
if (!init_provv_rev)
return error_box(msg); return error_box(msg);
} }
@ -2273,7 +2265,10 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
{ {
a.read_caus(cau, ann); a.read_caus(cau, ann);
a.cgs().force_update(); a.cgs().force_update();
}
if (init_provv_rev)
{
TString4 provv; provv << c.provvisorio(); TString4 provv; provv << c.provvisorio();
m.set(F_PROVVISORIO, provv); m.set(F_PROVVISORIO, provv);
if (c.iva() != nessuna_iva) if (c.iva() != nessuna_iva)
@ -2952,15 +2947,23 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
TPrimanota_application& a = app(); TPrimanota_application& a = app();
const real imp(a.ivas().row(1).get(0)); const real imp(a.ivas().row(1).get(0));
//if (a.iva() == iva_acquisti && a.causale().intra()) if (a.iva() == iva_acquisti)
if (a.iva() == iva_acquisti && a.causale().reverse_charge()) // 16-06-2015
{
const real iva = f.mask().get(F_REVCHARGE);
if (iva.is_zero())
{ {
TMask& mm = f.mask(); // Main mask TMask& mm = f.mask(); // Main mask
const TCodiceIVA codiva(f.get()); const TCodiceIVA codiva(f.get());
if (a.causale().intra())
{
const real iva = f.mask().get(F_RITFIS); // Le ritenute fiscali vengono usate come IVA intra
if (iva.is_zero())
{
const real totale = mm.get_real(F_TOTALE); const real totale = mm.get_real(F_TOTALE);
const real imposta = codiva.imposta(totale);
mm.set(F_RITFIS, imposta, true);
}
} else
if (a.causale().reverse_charge())
{
const real totale = mm.get_real(F_TOTALE) + mm.get_real(F_RITFIS);
const real imposta = codiva.imposta(totale); const real imposta = codiva.imposta(totale);
mm.set(F_REVCHARGE, imposta, true); mm.set(F_REVCHARGE, imposta, true);
} }
@ -2972,7 +2975,7 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
const TCodiceIVA iva(f.get()); const TCodiceIVA iva(f.get());
const bool corr = a.causale().corrispettivi(); const bool corr = a.causale().corrispettivi();
const bool acq3 = (a.iva() == iva_acquisti) && (row.get_int(2) == 3); const bool acq3 = (a.iva() == iva_acquisti) && (iva.tipo_indetraibilita() == 3 || row.get_int(2) == 3);
real tot = a.totale_documento(); // Calcola totale documento real tot = a.totale_documento(); // Calcola totale documento
real imposta; // Calcola imposta real imposta; // Calcola imposta
@ -2986,8 +2989,10 @@ bool TPrimanota_application::main_codiva_handler(TMask_field& f, KEY key)
{ {
row.add(iva.codice(), 1); // Aggiorna codice IVA row.add(iva.codice(), 1); // Aggiorna codice IVA
const int det = iva.detraibilita(); TString4 det;
if (det > 0) row.add(det, 2); if (a.iva() == iva_acquisti)
det = iva.indetraibilita();
row.add(det, 2);
TBill bill; // Aggiorna conto della prima riga IVA TBill bill; // Aggiorna conto della prima riga IVA
a.IVA2bill(iva, bill); a.IVA2bill(iva, bill);

View File

@ -14,8 +14,9 @@
TCausale::TCausale(const char* cod, int year) TCausale::TCausale(const char* cod, int year)
: TArray(12), _rec(LF_CAUSALI), : TArray(12), _rec(LF_CAUSALI),
_iva(iva_errata), _corrisp(false), _iva(iva_errata), _corrisp(false),
_sezione_clifo(' '), _sezione_ritsoc(' '), _sezione_ritfis(' '), _sezione_clifo(' '), _provvisorio(' '),
_provvisorio(' ') _sezione_ritsoc(' '), _sezione_ritfis(' '), _sezione_revcharge(' ')
{ {
if (cod && *cod) if (cod && *cod)
read(cod, year); read(cod, year);
@ -202,26 +203,36 @@ char TCausale::sezione_ritsoc() const
{ {
if (_sezione_ritsoc <= ' ') if (_sezione_ritsoc <= ' ')
{ {
// Fatture o Pagamenti? const tipo_movimento tm = tipo_movimento();
const int tm = _rec.get_int(CAU_TIPOMOV); (char&)_sezione_ritsoc = sezione(tm<=tm_nota_credito ? RIGA_RITENUTE_SOCIALI : RIGA_PAG_RITSOC);
(char&)_sezione_ritsoc = sezione(tm <= 2 ? 9 : 14);
} }
return _sezione_ritsoc; return _sezione_ritsoc;
} }
char TCausale::sezione_ritfis() char TCausale::sezione_ritfis() const
{ {
if (_sezione_ritfis == ' ') if (_sezione_ritfis == ' ')
{ {
if (_rec.get_int(CAU_TIPOMOV) <= 2) const tipo_movimento tm = tipo_movimento();
_sezione_ritfis = sezione(8); // Fatture (char&)_sezione_ritfis = sezione(tm<=tm_nota_credito ? RIGA_RITENUTE_FISCALI : RIGA_PAG_RITFIS); // Fatture o Pagamenti
else if (_sezione_ritfis < 'A')
_sezione_ritfis = sezione(12); // Pagamenti (char&)_sezione_ritfis = sezione_clifo();
} }
return _sezione_ritfis; return _sezione_ritfis;
} }
char TCausale::sezione_revcharge() const
{
if (_sezione_revcharge <= ' ')
{
(char&)_sezione_revcharge = sezione(RIGA_REVERSE_CHARGE);
if (_sezione_revcharge < 'A')
(char&)_sezione_revcharge = sezione_clifo();
}
return _sezione_revcharge;
}
void TCausale::calcIVA() void TCausale::calcIVA()
{ {
TipoIVA i = nessuna_iva; // Tipo IVA di default TipoIVA i = nessuna_iva; // Tipo IVA di default

View File

@ -13,7 +13,7 @@ class TCausale : public TArray
TipoIVA _iva; TipoIVA _iva;
bool _corrisp; bool _corrisp;
char _sezione_clifo, _sezione_ritsoc, _sezione_ritfis, _provvisorio; char _sezione_clifo, _sezione_ritsoc, _sezione_ritfis, _sezione_revcharge, _provvisorio;
protected: protected:
const TRectype* row(int num) const { return (const TRectype*)objptr(num); } const TRectype* row(int num) const { return (const TRectype*)objptr(num); }
@ -65,8 +65,9 @@ public:
char sezione(int riga) const; char sezione(int riga) const;
char sezione_clifo() const; char sezione_clifo() const;
char sezione_ritsoc() const ; char sezione_ritsoc() const;
char sezione_ritfis(); char sezione_ritfis() const;
char sezione_revcharge() const ;
virtual bool read(const char* cod, int year); virtual bool read(const char* cod, int year);

View File

@ -33,7 +33,7 @@ class TGame_mask : public TMask
int _riga_partite; // Riga corrente delle partite int _riga_partite; // Riga corrente delle partite
bool _changed; // Flag di modifica partite bool _changed; // Flag di modifica partite
bool _valfirst; // La colonna della valuta precede le lire bool _valfirst; // La colonna della valuta precede le lire
bool _ignore_next_select; // Flag per ignorare la select(0) iniziale sulle partite //bool _ignore_next_select; // Flag per ignorare la select(0) iniziale sulle partite
protected: protected:
static bool annopart_handler(TMask_field& f, KEY k); static bool annopart_handler(TMask_field& f, KEY k);
@ -664,7 +664,7 @@ void TGame_mask::init(const TBill& bill, long numreg, int riga)
} }
TGame_mask::TGame_mask(const TBill& bill, long numreg, int riga) TGame_mask::TGame_mask(const TBill& bill, long numreg, int riga)
: TMask("cg2100p"), _valfirst(FALSE), _ignore_next_select(FALSE) : TMask("cg2100p"), _valfirst(FALSE)//, _ignore_next_select(false)
{ {
init(bill, numreg, riga); init(bill, numreg, riga);
} }
@ -677,7 +677,7 @@ bool TGame_mask::annopart_handler(TMask_field& f, KEY k)
{ {
if (k == K_TAB && f.focusdirty() && f.get().not_empty()) if (k == K_TAB && f.focusdirty() && f.get().not_empty())
{ {
TMask_field& n = f.mask().field(P_NUMERO); TEdit_field& n = f.mask().efield(P_NUMERO);
n.set_dirty(); n.set_dirty();
numpart_handler(n, k); numpart_handler(n, k);
} }
@ -692,7 +692,7 @@ bool TGame_mask::numpart_handler(TMask_field& f, KEY k)
const int anno = m.get_int(P_ANNO); // Anno partita da cercare const int anno = m.get_int(P_ANNO); // Anno partita da cercare
if (anno > 0) if (anno > 0)
{ {
const TString key = f.get(); // Numero partita da cercare const TNumero_partita key = f.get(); // Numero partita da cercare
int best_match = 0; // Partita piu' somigliante int best_match = 0; // Partita piu' somigliante
long min_dist = 10000000L; // Livello di somiglianza migliore long min_dist = 10000000L; // Livello di somiglianza migliore
@ -722,9 +722,7 @@ bool TGame_mask::show_all_handler(TMask_field& f, KEY k)
{ {
TGame_mask& gm = (TGame_mask&)f.mask(); TGame_mask& gm = (TGame_mask&)f.mask();
if (k == K_SPACE && gm.is_running()) if (k == K_SPACE && gm.is_running())
{
gm.fill_partite(); gm.fill_partite();
}
return true; return true;
} }
@ -845,7 +843,7 @@ TPartita* TGame_mask::partita_corrente() const
return NULL; return NULL;
TToken_string& row = partite().row(_riga_partite); TToken_string& row = partite().row(_riga_partite);
const int anno = row.get_int(0); // Anno partita const int anno = row.get_int(0); // Anno partita
const TString16 num = row.get(); // Numero partita const TNumero_partita num = row.get(); // Numero partita
const TBill& zio = conto(); const TBill& zio = conto();
TPartita* game = app().partite().exist(zio, anno, num); TPartita* game = app().partite().exist(zio, anno, num);
return game; return game;
@ -857,11 +855,13 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
if (k == K_TAB) if (k == K_TAB)
{ {
/*
if (gm._ignore_next_select) if (gm._ignore_next_select)
{ {
gm._ignore_next_select = false; gm._ignore_next_select = false;
return true; return true;
} }
*/
const bool changing_row = gm._riga_partite != r; const bool changing_row = gm._riga_partite != r;
if (!changing_row) if (!changing_row)
@ -876,7 +876,7 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
TToken_string& row = partite.row(r); TToken_string& row = partite.row(r);
const int anno = row.get_int(0); // Anno partita const int anno = row.get_int(0); // Anno partita
const TString16 num = row.get(); // Numero partita const TNumero_partita num = row.get(); // Numero partita
gm.set(P_ANNO, anno); // Aggiorna campi di ricerca gm.set(P_ANNO, anno); // Aggiorna campi di ricerca
gm.set(P_NUMERO, num); gm.set(P_NUMERO, num);
@ -1462,9 +1462,9 @@ bool TGame_mask::edit_scadenza_handler(TMask_field& f, KEY k)
const TValuta curval(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO); const TValuta curval(gm, P_VALUTA, P_DATACAMBIO, P_CAMBIO);
if (parval != curval) if (parval != curval)
{ {
TString16 c = parval.codice(); TString4 c = parval.codice();
if (c.empty()) c = TCurrency::get_firm_val(); if (c.empty())
c = TCurrency::get_firm_val();
if (was == NULL) giochi.destroy(game); if (was == NULL) giochi.destroy(game);
return f.error_box(FR("La fattura deve essere pagata in %s."), (const char*)c); return f.error_box(FR("La fattura deve essere pagata in %s."), (const char*)c);
} }
@ -1900,7 +1900,7 @@ void TGame_mask::fill_partite()
TWait_cursor hourglass; TWait_cursor hourglass;
const int annorif = get_int(P_ANNO); // Anno corrente const int annorif = get_int(P_ANNO); // Anno corrente
const TString16 numrif = get(P_NUMERO); // Partita corrente const TNumero_partita numrif = get(P_NUMERO); // Partita corrente
const bool all = get(P_SHOWALL).not_empty(); // Visualizza anche partite chiuse const bool all = get(P_SHOWALL).not_empty(); // Visualizza anche partite chiuse
partite().destroy(); partite().destroy();
@ -1968,8 +1968,9 @@ void TGame_mask::fill_partite()
{ {
TToken_string& row = a.row(r); TToken_string& row = a.row(r);
const int anno = row.get_int(0); const int anno = row.get_int(0);
const TString16 numero = row.get(1); const TNumero_partita numero = row.get(1);
if (anno > 0 && numero.full())
{
if (found < 0 && annorif == anno && same_number(numrif, numero)) if (found < 0 && annorif == anno && same_number(numrif, numero))
found = r; found = r;
@ -1981,10 +1982,11 @@ void TGame_mask::fill_partite()
partite().set_back_and_fore_color(back, fore, r); partite().set_back_and_fore_color(back, fore, r);
} }
} }
}
if (found < 0) found = 0; if (found < 0) found = 0;
_ignore_next_select = false; //_ignore_next_select = false;
partite().select(found, true); partite().select(found, true);
_ignore_next_select = !is_running(); //_ignore_next_select = !is_running() && !scadenze().empty();
} }
else else
{ {

View File

@ -31,11 +31,12 @@ END
STRING IVA_INDETRAIBILE 1 STRING IVA_INDETRAIBILE 1
BEGIN BEGIN
PROMPT 2 3 "Indetraibilita' " PROMPT 2 3 "Indetraibilità "
USE %DET USE %DET
INPUT CODTAB IVA_INDETRAIBILE INPUT CODTAB IVA_INDETRAIBILE
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Tipo" I0 DISPLAY "Tipo" I0
DISPLAY "Percentuale@R" R0
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT IVA_INDETRAIBILE CODTAB OUTPUT IVA_INDETRAIBILE CODTAB
OUTPUT 99 S0 OUTPUT 99 S0

View File

@ -1091,7 +1091,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const bool isreg = look_reg(reg); const bool isreg = look_reg(reg);
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"); // 1=Vendite; 2=Acquisti
tipo_movimento tm = (tipo_movimento)_mov->get_int(MOV_TIPOMOV); tipo_movimento tm = (tipo_movimento)_mov->get_int(MOV_TIPOMOV);
if (tm == tm_nessuno) if (tm == tm_nessuno)
@ -1103,7 +1103,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
} }
#ifndef NDEBUG #ifndef NDEBUG
if (_mov->get_long(MOV_NUMREG) >= 132) if (_mov->get_long(MOV_NUMREG) == 113678)
int cazzone = 1; int cazzone = 1;
#endif #endif
@ -1334,7 +1334,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const TString4 tipoiva = _iva->get("S1"); const TString4 tipoiva = _iva->get("S1");
const TString4 tipoes_v = _iva->get("S2"); const TString4 tipoes_v = _iva->get("S2");
const TString4 tipoes_a = _iva->get("S9"); const TString4 tipoes_a = _iva->get("S9");
const int tipoagr = _iva->get_int("S4"); const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4
const int tipoag = _iva->get_int("S5"); const int tipoag = _iva->get_int("S5");
const int tipopla = _iva->get_int("S3"); const int tipopla = _iva->get_int("S3");
int isrimbinfr = _iva->get_bool("B3"); // vale per calcolo rimborso se ES o NI int isrimbinfr = _iva->get_bool("B3"); // vale per calcolo rimborso se ES o NI
@ -2335,11 +2335,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
start = 2; start = 2;
stop = 3; stop = 3;
} }
else
{
if (year_int < 1998)
stop = 0; // Solo PIM
}
for (int i=start; i<=stop; i++) // Ciclo per le tabelle for (int i=start; i<=stop; i++) // Ciclo per le tabelle
{ {
if (i == 1 || i == 3) //Is it a valid PIS/PRP (vedi anche sel. cursore & date_ok())? if (i == 1 || i == 3) //Is it a valid PIS/PRP (vedi anche sel. cursore & date_ok())?
@ -2568,7 +2564,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// E'una questione molto dibattuta il fatti di escludere i beni ammortizzabili o no: // E'una questione molto dibattuta il fatti di escludere i beni ammortizzabili o no:
// Nella versione precedente (10.0) non venivano esclusi, poi dal 4-9-2014 sono stati esclusi ed infine nuovamente ignorati dal 17-2-2015 // Nella versione precedente (10.0) non venivano esclusi, poi dal 4-9-2014 sono stati esclusi ed infine nuovamente ignorati dal 17-2-2015
// aaa -= ammort_det_iva; // Scarta gli acquisti di beni ammortizzabili // Arriviamo al 17-09-2015 (data epica per altri motivi) e torniamo a tenerne conto per Pragma
aaa -= ammort_det_iva; // Scarta gli acquisti di beni ammortizzabili
if (percentuale1 != INVALID_PRORATA && percentuale1 != INVALID_PRORATA_ASSERT) if (percentuale1 != INVALID_PRORATA && percentuale1 != INVALID_PRORATA_ASSERT)
aaa -= rr1 ? *rr1 : ZERO; aaa -= rr1 ? *rr1 : ZERO;
@ -2761,7 +2758,7 @@ void TLiquidazione_app::iva11_set_arr_phase_1(const TString& codatt)
const real ali = _iva->get_real("R0"); const real ali = _iva->get_real("R0");
const TString4 tipoes_v = _iva->get("S2"); const TString4 tipoes_v = _iva->get("S2");
const TString4 tipoes_a = _iva->get("S9"); const TString4 tipoes_a = _iva->get("S9");
const int tipoagr = _iva->get_int("S4"); const int tipoagr = _iva->get_int("I4"); // 2/9/2015 was S4
const TRectype& rcs = _cur->curr(LF_CAUSALI); const TRectype& rcs = _cur->curr(LF_CAUSALI);
const bool autofattura = rcs.get_bool("AUTOFATT"); const bool autofattura = rcs.get_bool("AUTOFATT");
const bool valintra = rcs.get_bool("VALINTRA"); const bool valintra = rcs.get_bool("VALINTRA");
@ -3143,7 +3140,7 @@ void TLiquidazione_app::iva11_set_arr_phase_2(const TString& codatt)
look_iva(codiva); look_reg(reg); // posiziona la tabella registri e quella IVA look_iva(codiva); look_reg(reg); // posiziona la tabella registri e quella IVA
tiva = _iva->get("S1"); // tipo IVA tiva = _iva->get("S1"); // tipo IVA
tpla = _iva->get("S3"); // tipo gestione plafond tpla = _iva->get("S3"); // tipo gestione plafond
tagr = _iva->get_int("S4"); // tipo gestione regime agricolo tagr = _iva->get_int("I4"); // tipo gestione regime agricolo 2/9/2015 was S4
tvia = _iva->get("S5"); // tipo gestione ag. viaggio tvia = _iva->get("S5"); // tipo gestione ag. viaggio
v11 = _iva->get("S2"); // n.ro riga vendite per mod. IVA11 v11 = _iva->get("S2"); // n.ro riga vendite per mod. IVA11
a11 = _iva->get("S9"); // n.ro riga acquisti per mod. IVA11 a11 = _iva->get("S9"); // n.ro riga acquisti per mod. IVA11

View File

@ -98,7 +98,7 @@ const char* TStampa_registri_app::descr_iva(const char* cod)
const char* TStampa_registri_app::tipo_attivita() const char* TStampa_registri_app::tipo_attivita()
{ {
TString16 key; TString16 key;
key.format("%ld|%s", get_firm(), (const char *) _codatt); key.format("%ld|%s", get_firm(), (const char*)_codatt);
return cache().get(LF_ATTIV, key, ATT_TIPOATT); return cache().get(LF_ATTIV, key, ATT_TIPOATT);
} }
@ -281,7 +281,7 @@ bool TStampa_registri_app::compila_reg(const TMask& m)
_tabreg->first(); _tabreg->first();
if (!_tabreg->eof()) if (!_tabreg->eof())
{ {
const TString16 codtab = _tabreg->get("CODTAB"); const TString& codtab = _tabreg->get("CODTAB");
const int anno = atoi(codtab.mid(0,4)); const int anno = atoi(codtab.mid(0,4));
if (anno > _annoes) if (anno > _annoes)
{ {
@ -295,7 +295,7 @@ bool TStampa_registri_app::compila_reg(const TMask& m)
else // stampa un solo registro else // stampa un solo registro
{ {
_stampa_tutti_i_registri = false; _stampa_tutti_i_registri = false;
TString16 codtab; codtab << _annoes << _codreg; TString8 codtab; codtab << _annoes << _codreg;
_tabreg->zero(); _tabreg->zero();
_tabreg->put("CODTAB", codtab); _tabreg->put("CODTAB", codtab);
if (_tabreg->read() != NOERR) if (_tabreg->read() != NOERR)
@ -591,7 +591,7 @@ bool TStampa_registri_app::mask_libun (TMask_field& f, KEY k)
TProgind* p = new TProgind(2,TR("Verifica parametri in corso..."),false,true); TProgind* p = new TProgind(2,TR("Verifica parametri in corso..."),false,true);
TString16 cod(f.mask().get(CODICE_LIBRO_IVA)); const TString& cod = f.mask().get(CODICE_LIBRO_IVA);
int fino_a_mese = f.mask().get_int(MESE); int fino_a_mese = f.mask().get_int(MESE);
int anno = f.mask().get_int(ANNO); int anno = f.mask().get_int(ANNO);
bool ok = false; bool ok = false;
@ -647,8 +647,7 @@ bool TStampa_registri_app::mask_libun (TMask_field& f, KEY k)
if (last_mese == 13) if (last_mese == 13)
last_mese = 0; //l'ultima data di stampa sul/sui registri specificati e' vuota last_mese = 0; //l'ultima data di stampa sul/sui registri specificati e' vuota
//(cioe' non sono ancora stati stampati sul libro unico specificato) //(cioe' non sono ancora stati stampati sul libro unico specificato)
TString16 me; TString4 me; me.format("%02d", last_mese);
me.format("%02d", last_mese);
f.mask().set(ULTIMO_MESE, me); f.mask().set(ULTIMO_MESE, me);
delete p; delete p;
} }
@ -660,16 +659,15 @@ bool TStampa_registri_app::mask_cod (TMask_field& f, KEY k)
if (k == K_TAB) if (k == K_TAB)
{ {
TTable TabLbu ("%LBU"); TTable TabLbu ("%LBU");
TString codtab; TString8 codtab;
int anno;
TString16 codlib(f.get()); TString16 codlib(f.get());
anno = f.mask().get_int(ANNO); int anno = f.mask().get_int(ANNO);
TabLbu.zero(); TabLbu.zero();
codtab.format ("%04d%-3s", anno, (const char*)codlib); codtab.format ("%04d%-3s", anno, (const char*)codlib);
TabLbu.put ("CODTAB", codtab); TabLbu.put("CODTAB", codtab);
TabLbu.read(); TabLbu.read();
if ( TabLbu.good() ) if (TabLbu.good())
{ {
f.mask().set(ULTIMA_PAGINA,TabLbu.get_long("I1")); f.mask().set(ULTIMA_PAGINA,TabLbu.get_long("I1"));
app()._codice_vidi = TabLbu.get("S4"); app()._codice_vidi = TabLbu.get("S4");
@ -1292,6 +1290,7 @@ int TStampa_registri_app::stampa_prospetto_IVA(int rr, int tipo_prosp)
riga << TR("; 4=liquidazione differita"); riga << TR("; 4=liquidazione differita");
if (has_module(ICAUT)) if (has_module(ICAUT))
riga << TR("; 5=IVA per cassa"); riga << TR("; 5=IVA per cassa");
if (_annoes >= 2015)
riga << TR("; 6=Scissione pagamenti art.17 ter"); riga << TR("; 6=Scissione pagamenti art.17 ter");
set_row(rr++, riga); set_row(rr++, riga);
@ -1422,7 +1421,7 @@ int TStampa_registri_app::stampa_acquisti(int row)
set_row(rw++, TR("----- Indetraibile su op.es. -----")); set_row(rw++, TR("----- Indetraibile su op.es. -----"));
set_row(rw, TR("Cod.")); set_row(rw, TR("Cod."));
rw++; rw++;
set_row(rw, FR("iva Descrizione@34gImponibile@53gImposta")); set_row(rw, FR("IVA Descrizione@34gImponibile@53gImposta"));
if (_tipo_stampa != prova) set_row(rw, FR("@86gImponibile@106gImposta")); if (_tipo_stampa != prova) set_row(rw, FR("@86gImponibile@106gImposta"));
rw+=2; rw+=2;
} }
@ -1452,7 +1451,7 @@ int TStampa_registri_app::stampa_acquisti(int row)
set_row(rw++, TR("----- Passaggi interni -----")); set_row(rw++, TR("----- Passaggi interni -----"));
set_row(rw, TR("Cod.")); set_row(rw, TR("Cod."));
rw++; rw++;
set_row(rw, FR("iva Descrizione@34gImponibile@53gImposta")); set_row(rw, FR("IVA Descrizione@34gImponibile@53gImposta"));
if (_tipo_stampa != prova) if (_tipo_stampa != prova)
set_row(rw, FR("@86gImponibile@106gImposta")); set_row(rw, FR("@86gImponibile@106gImposta"));
rw+=2; rw+=2;
@ -1483,7 +1482,7 @@ int TStampa_registri_app::stampa_acquisti(int row)
set_row(rw++, TR("----- N.D. 9 - acquisti indeducibili per ART.19 -----")); set_row(rw++, TR("----- N.D. 9 - acquisti indeducibili per ART.19 -----"));
set_row(rw, TR("Cod.")); set_row(rw, TR("Cod."));
rw++; rw++;
set_row(rw, FR("iva Descrizione@34gImponibile@53gImposta")); set_row(rw, FR("IVA Descrizione@34gImponibile@53gImposta"));
if (_tipo_stampa != prova) if (_tipo_stampa != prova)
set_row(rw, FR("@86gImponibile@106gImposta")); set_row(rw, FR("@86gImponibile@106gImposta"));
rw+=2; rw+=2;
@ -2765,7 +2764,7 @@ int TStampa_registri_app::stampa_intestazione()
} }
TString80 tmp; TString80 tmp;
tmp.format(FR("Partita iva %s Codice fiscale %s"), (const char*)_paiva, (const char*)_cofi); tmp.format(FR("Partita IVA %s Codice fiscale %s"), (const char*)_paiva, (const char*)_cofi);
riga.overwrite(tmp); riga.overwrite(tmp);
set_header (r, riga); set_header (r, riga);
@ -2848,13 +2847,13 @@ void TStampa_registri_app::preprocess_header()
key.format("%ld|%s", _ditta, (const char *)_codatt); key.format("%ld|%s", _ditta, (const char *)_codatt);
const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO); const TString16 codateco = cache().get(LF_ATTIV, key, ATT_CODATECO);
set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"), set_header(r, FR("Registro IVA: %s %s %s Attività %s %s"),
(const char*) _codreg, (const char*) _desc_lib, (const char*) _codreg, (const char*) _desc_lib,
(const char*) data, (const char*) codateco, (const char*) data, (const char*) codateco,
(const char*) _attivita); (const char*) _attivita);
} }
else else
set_header(r, FR("Registro IVA: %s %s %s Attivita\' %s %s"), set_header(r, FR("Registro IVA: %s %s %s Attività %s %s"),
(const char*) _codreg, (const char*) _desc_lib, (const char*) _codreg, (const char*) _desc_lib,
(const char*) data, (const char*) _codatt, (const char*) data, (const char*) _codatt,
(const char*) _attivita); (const char*) _attivita);
@ -2906,14 +2905,14 @@ void TStampa_registri_app::preprocess_header()
{ {
set_header(r,FR("@10gNum.@19gDocumento@61gMese@66gT Tipo@102gCod %c@123gT %c@128gNum"), nd1, tipo); set_header(r,FR("@10gNum.@19gDocumento@61gMese@66gT Tipo@102gCod %c@123gT %c@128gNum"), nd1, tipo);
r++; r++;
set_header(r, FR("Data reg. prot.@17gData@24gNumero Codice Ragione sociale/descr. liq.@66gO Doc.@74gTotale doc.@90gImponibile Iva %c@115gImposta@123g%c %c@128gReg"), nd2, cor, type); set_header(r, FR("Data reg. prot.@17gData@24gNumero Codice Ragione sociale/descr. liq.@66gO Doc.@74gTotale doc.@90gImponibile IVA %c@115gImposta@123g%c %c@128gReg"), nd2, cor, type);
r++; r++;
} }
else //stampa a 198 else //stampa a 198
{ {
set_header(r,FR("Registrazione Documento@61gMese@66gT Tipo@110gCod %c@132g%c T@139gNum."), nd1, tipo, cor); set_header(r,FR("Registrazione Documento@61gMese@66gT Tipo@110gCod %c@132g%c T@139gNum."), nd1, tipo, cor);
r++; r++;
set_header(r, FR("Data Protocollo Data@24gNumero Codice Ragione sociale/descr. liq.@66gO Documento@80gTot.Documento@98gImponibile Iva %c@124gImposta@132g%c %c@139gReg."), nd2, type, cor); set_header(r, FR("Data Protocollo Data@24gNumero Codice Ragione sociale/descr. liq.@66gO Documento@80gTot.Documento@98gImponibile IVA %c@124gImposta@132g%c %c@139gReg."), nd2, type, cor);
r++; r++;
} }
} }
@ -2930,7 +2929,7 @@ void TStampa_registri_app::preprocess_header()
if (_tipo_stampa == rif_giornale) //stampa definitiva con rif. al libro giornale if (_tipo_stampa == rif_giornale) //stampa definitiva con rif. al libro giornale
set_header(r, FR("@128gNum.")); set_header(r, FR("@128gNum."));
r++; r++;
set_header(r, FR("Data reg. prot.@17gData@24gNumero Codice Ragione sociale/descr. liq.@66gO Doc.@74gTotale doc.@90gImponibile Iva %c@115gImposta@123g%c %c"), set_header(r, FR("Data reg. prot.@17gData@24gNumero Codice Ragione sociale/descr. liq.@66gO Doc.@74gTotale doc.@90gImponibile IVA %c@115gImposta@123g%c %c"),
nd2, cor, type); nd2, cor, type);
if (_tipo_stampa == rif_giornale) if (_tipo_stampa == rif_giornale)
set_header(r, FR("@128gop.")); set_header(r, FR("@128gop."));
@ -2942,7 +2941,7 @@ void TStampa_registri_app::preprocess_header()
if (_tipo_stampa == rif_giornale) if (_tipo_stampa == rif_giornale)
set_header(r, FR("@139gNum.")); set_header(r, FR("@139gNum."));
r++; r++;
set_header(r, FR("Data Protocollo Data@24gNumero Codice Ragione sociale/descr. liq.@66gO Documento@80gTot.Documento@98gImponibile Iva %c@124gImposta@132g%c %c"), nd2, type, cor); set_header(r, FR("Data Protocollo Data@24gNumero Codice Ragione sociale/descr. liq.@66gO Documento@80gTot.Documento@98gImponibile IVA %c@124gImposta@132g%c %c"), nd2, type, cor);
if (_tipo_stampa == rif_giornale) if (_tipo_stampa == rif_giornale)
set_header(r, FR("@139gop. @144gCodice conto @159gDescrizione sottoconto")); set_header(r, FR("@139gop. @144gCodice conto @159gDescrizione sottoconto"));
r++; r++;
@ -2959,7 +2958,7 @@ void TStampa_registri_app::preprocess_header()
if (_tipo_reg != riepilogativo) if (_tipo_reg != riepilogativo)
if (_stampa_ind_comp && !_intesta_vidi) if (_stampa_ind_comp && !_intesta_vidi)
set_header(r++, FR("@38gGeneralita'")); set_header(r++, FR("@38gGeneralità"));
set_header(r++, riga); set_header(r++, riga);
@ -4136,7 +4135,7 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin
} }
pr.print(row); pr.print(row);
row.reset(); row.reset();
row.put(TR("iva Descrizione"), 0); row.put(TR("IVA Descrizione"), 0);
row.put(TR("Imponibile"), 34); row.put(TR("Imponibile"), 34);
row.put(TR("Imposta"), 53); row.put(TR("Imposta"), 53);
if (tipo == vendita && _tabreg->get_bool("B0")) if (tipo == vendita && _tabreg->get_bool("B0"))
@ -4161,7 +4160,7 @@ void TStampa_registri_app::stampa_progressivi(TRiga_array& vect,
TPrintrow riga; TPrintrow riga;
riga.reset(); riga.reset();
//ordinamento per codice iva //ordinamento per codice IVA
vect.sort(compare_rows); vect.sort(compare_rows);
for (int k=0; k<vect.items(); k++) for (int k=0; k<vect.items(); k++)
{ {
@ -4263,7 +4262,7 @@ void TStampa_registri_app::stampa_progressivi(TRiga_array& vect,
riga.put(TR("Cod."), 0); riga.put(TR("Cod."), 0);
printer().print(riga); printer().print(riga);
riga.reset(); riga.reset();
riga.put(TR("iva Descrizione"), 0); riga.put(TR("IVA Descrizione"), 0);
riga.put(TR("Imponibile"), 34); riga.put(TR("Imponibile"), 34);
riga.put(TR("Imposta"), 53); riga.put(TR("Imposta"), 53);
if (_tipo_stampa != prova) if (_tipo_stampa != prova)
@ -4329,7 +4328,7 @@ void TStampa_registri_app::stampa_progressivi(TRiga_array& vect,
riga.put(TR("Cod."), 0); riga.put(TR("Cod."), 0);
printer().print(riga); printer().print(riga);
riga.reset(); riga.reset();
riga.put(TR("iva Descrizione"), 0); riga.put(TR("IVA Descrizione"), 0);
riga.put(TR("Imponibile"), 34); riga.put(TR("Imponibile"), 34);
riga.put(TR("Imposta"), 53); riga.put(TR("Imposta"), 53);
if (_tipo_stampa != prova) if (_tipo_stampa != prova)
@ -4396,7 +4395,7 @@ void TStampa_registri_app::stampa_progressivi(TRiga_array& vect,
riga.put(TR("Cod."), 0); riga.put(TR("Cod."), 0);
printer().print(riga); printer().print(riga);
riga.reset(); riga.reset();
riga.put(TR("iva Descrizione"), 0); riga.put(TR("IVA Descrizione"), 0);
riga.put(TR("Imponibile"), 34); riga.put(TR("Imponibile"), 34);
riga.put(TR("Imposta"), 53); riga.put(TR("Imposta"), 53);
if (_tipo_stampa != prova) if (_tipo_stampa != prova)

View File

@ -107,7 +107,7 @@ const TVariant& TProrata_set::get_field(int logic, const char* fldname) const
const TVariant& var = TISAM_recordset::get_field(logic, fldname); const TVariant& var = TISAM_recordset::get_field(logic, fldname);
if (logic == 0 || logic == LF_RMOVIVA) if (logic == 0 || logic == LF_RMOVIVA)
{ {
if (xvt_str_compare_ignoring_case(fldname, RMI_IMPOSTA) == 0) if (xvt_str_same(fldname, RMI_IMPOSTA))
{ {
const real pd = perc_det(); const real pd = perc_det();
if (pd < CENTO) if (pd < CENTO)
@ -116,7 +116,7 @@ const TVariant& TProrata_set::get_field(int logic, const char* fldname) const
return get_tmp_var() = i.round(2); return get_tmp_var() = i.round(2);
} }
} else } else
if (xvt_str_compare_ignoring_case(fldname, "PERCDET") == 0) if (xvt_str_same(fldname, "PERCDET"))
{ {
return get_tmp_var() = perc_det(); return get_tmp_var() = perc_det();
} }
@ -183,14 +183,14 @@ class TProrata_msk : public TAutomask
{ {
protected: protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
real calc_prorata(); real get_perc_prorata();
bool genera_mov(TFilename& ininame); bool genera_mov(TFilename& ininame);
public: public:
TProrata_msk() : TAutomask("cg5900a") {} TProrata_msk() : TAutomask("cg5900a") {}
}; };
real TProrata_msk::calc_prorata() real TProrata_msk::get_perc_prorata()
{ {
const long f = get_long(F_CODDITTA); const long f = get_long(F_CODDITTA);
const int y = get_date(F_DATAFIN).year(); const int y = get_date(F_DATAFIN).year();
@ -233,7 +233,7 @@ bool TProrata_msk::genera_mov(TFilename& ininame)
TAssoc_array mconti; TAssoc_array mconti;
TString80 key; TString80 key;
const real prorata = calc_prorata(); const real prorata = get_perc_prorata();
for (bool good = recset.move_first(); good; good = recset.move_next()) for (bool good = recset.move_first(); good; good = recset.move_next())
{ {
@ -347,7 +347,7 @@ bool TProrata_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
o.disable(); o.disable();
} }
if (!o.empty() && (e == fe_init || e == fe_modify)) if (!o.empty() && (e == fe_init || e == fe_modify))
calc_prorata(); get_perc_prorata();
break; break;
case F_DATAINI: case F_DATAINI:
if (e == fe_init) if (e == fe_init)
@ -361,7 +361,7 @@ bool TProrata_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
break; break;
case F_DATAFIN: case F_DATAFIN:
if (!o.empty() && (e == fe_init || e == fe_modify)) if (!o.empty() && (e == fe_init || e == fe_modify))
calc_prorata(); get_perc_prorata();
break; break;
case DLG_ELABORA: case DLG_ELABORA:
if (e == fe_button) if (e == fe_button)

View File

@ -74,8 +74,7 @@ public:
HIDDEN TRic_archivi& app() { return (TRic_archivi &) main_app(); } HIDDEN TRic_archivi& app() { return (TRic_archivi &) main_app(); }
TRic_archivi::TRic_archivi(char ric_trasfer,char ric_auto) : TRic_archivi::TRic_archivi(char ric_trasfer,char ric_auto) : _scelta(toupper(ric_trasfer)), _ric_auto(toupper(ric_auto))
_scelta(toupper(ric_trasfer)), _ric_auto(toupper(ric_auto))
{ {
if (_scelta == 'S') if (_scelta == 'S')
_titolo = TR("Ricezione archivi da sistema"); _titolo = TR("Ricezione archivi da sistema");
@ -230,7 +229,7 @@ bool TRic_archivi::leggi_marker()
{ {
_dittaric = leggi_tabella_tras(); _dittaric = leggi_tabella_tras();
if (_dittaric != 0) if (_dittaric > 0)
{ {
if (!prefix().exist(_dittaric)) if (!prefix().exist(_dittaric))
return error_box(FR("Archivi ditta %ld non presente su disco"), _dittaric); return error_box(FR("Archivi ditta %ld non presente su disco"), _dittaric);
@ -363,7 +362,7 @@ void TRic_archivi::main_loop()
if (_disketto) if (_disketto)
{ {
char drive = maskera.get(F_DRIVE)[0]; char drive = maskera.get(F_DRIVE)[0];
if (yesno_box(FR("Inserire il dischetto %d nell' unita' %c"), _numdisk,drive)) if (yesno_box(FR("Inserire il dischetto %d nell'unità %c"), _numdisk,drive))
{ {
if (!leggi_marker()) if (!leggi_marker())
return; return;
@ -484,18 +483,17 @@ void TRic_archivi::leggi_trasfer(const char* nome)
if (_tras_file->exist()) if (_tras_file->exist())
{ {
if (_scelta == 'S') if (_scelta == 'P')
{ {
if (_tras_file->read_control_rec_t()) if (_tras_file->read_control_rec())
{ {
_nultras = _tras_file->nultras(); _nultras = _tras_file->nultras();
_dataultras = _tras_file->dataultras(); _dataultras = _tras_file->dataultras();
} }
} }
else else
if (_scelta == 'P')
{ {
if (_tras_file->read_control_rec()) if (_tras_file->read_control_rec_t())
{ {
_nultras = _tras_file->nultras(); _nultras = _tras_file->nultras();
_dataultras = _tras_file->dataultras(); _dataultras = _tras_file->dataultras();
@ -545,10 +543,10 @@ bool TRic_archivi::ripartenza()
{ {
if (_stato_ripartenza == 1) if (_stato_ripartenza == 1)
return error_box(TR("Rilevato stato di RIPARTENZA CON DATI CONTRADDITORI:\n" return error_box(TR("Rilevato stato di RIPARTENZA CON DATI CONTRADDITORI:\n"
"presente file HEADER nei dati ditta e FlgStTra=* o nullo")); "presente file HEADER nei dati ditta e FlgStTra=* o nullo in ditta.ini"));
if (_stato_ripartenza == 2) if (_stato_ripartenza == 2)
return error_box(TR("Trasferimento precedente NON COMPLETATO: completarlo prima di questo")); return error_box(TR("Trasferimento precedente NON COMPLETATO: completarlo prima di procedere"));
return true; return true;
} }
@ -653,12 +651,10 @@ void TRic_archivi::trasfer2tempfile()
{ {
_trasfhard = _tras_file->path(_dittaric); _trasfhard = _tras_file->path(_dittaric);
_trasfhard.add(HEADER); _trasfhard.add(HEADER);
switch (_scelta) if (_scelta == 'P')
{ _tras_file->fcopytemp_PC(_trasf,_trasfhard);
case 'S': _tras_file->fcopytemp(_trasf,_trasfhard); break; else
case 'P': _tras_file->fcopytemp_PC(_trasf,_trasfhard); break; _tras_file->fcopytemp(_trasf,_trasfhard);
default: break;
}
} }
void TRic_archivi::ditta_ricevente() void TRic_archivi::ditta_ricevente()

View File

@ -640,6 +640,21 @@ TCodiceIVA::TCodiceIVA(const char* cod) : TRectype(LF_TABCOM)
read(cod); read(cod);
} }
int TCodiceIVA::tipo_indetraibilita() const
{
int tipo = 0;
const TString& codind = indetraibilita(); // Codice indetraibilità alfanumerico (ex. 1, 3, 9)
if (codind.full())
{
const TRectype& det = cache().get("%DET", codind);
if (det.empty())
tipo = atoi(codind);
else
tipo = det.get_int("I0");
}
return tipo; // Tipo indetraibilità: 1,3,9
}
bool TCodiceIVA::read(const char* cod) bool TCodiceIVA::read(const char* cod)
{ {
if (cod && *cod) if (cod && *cod)

View File

@ -150,7 +150,9 @@ public: // TObject
const TString& descrizione() const { return get("S0"); } const TString& descrizione() const { return get("S0"); }
const real percentuale() const { return get_real("R0"); } const real percentuale() const { return get_real("R0"); }
const TString& tipo() const { return get("S1"); } const TString& tipo() const { return get("S1"); }
int detraibilita() const { return get_int("I2"); } const TString& indetraibilita() const { return get("S4"); } // Codice indetraibilità alfanumerico (ex. 1, 3, 9)
int tipo_indetraibilita() const; // Tipo indetraibilità: 1,3,9
int allegato(char tipocf) const { return get_int(tipocf == 'F' ? "S8" : "S7"); } int allegato(char tipocf) const { return get_int(tipocf == 'F' ? "S8" : "S7"); }
bool has_plafond() const { return get_int("S3") > 0; } bool has_plafond() const { return get_int("S3") > 0; }

View File

@ -37,7 +37,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;
@ -176,7 +176,7 @@ bool is_split_payment(const TRectype& mov)
mov.get_real(MOV_RITFIS).is_zero() && mov_has_imposte(mov)) mov.get_real(MOV_RITFIS).is_zero() && mov_has_imposte(mov))
{ {
const TRectype& clifo = cache().get_rec(LF_CLIFO, "C", mov.get(MOV_CODCF)); const TRectype& clifo = cache().get_rec(LF_CLIFO, "C", mov.get(MOV_CODCF));
if (clifo.get_bool(CLI_SPLITPAY)) // Ente pubblico con split payment if (clifo.get_bool(CLI_SPLITPAY) && clifo.get_int(CLI_ALLEG) == 7) // Ente pubblico con split payment
{ {
yes = !is_reverse_charge(mov); yes = !is_reverse_charge(mov);
if (yes && get_tipo_movimento(mov) == tm_nota_credito) // Controlla le N.C. if (yes && get_tipo_movimento(mov) == tm_nota_credito) // Controlla le N.C.
@ -251,11 +251,10 @@ bool is_IVAxCassa(const TRectype& mov)
return true; return true;
} }
// Anticamente TIPODET conteneva in tipo di indetraibilità,
// Anticamente TIPODET conteneva in tipo di indetraibilita,
// ora invece trattasi di un codice di indetraibilità // ora invece trattasi di un codice di indetraibilità
// associato ad un motivo ed una percentuale di indetraibilita' // associato ad un motivo ed una percentuale di indetraibilità
int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mov,real& percind, const bool is_liq) int get_tipodet_from_rmi(const TRectype& rmi, const TRectype& mov, real& percind, const bool is_liq)
{ {
const int annodoc = mov.get_date(MOV_DATAREG).year(); const int annodoc = mov.get_date(MOV_DATAREG).year();
const TCausale caus(mov.get(MOV_CODCAUS), annodoc); const TCausale caus(mov.get(MOV_CODCAUS), annodoc);

View File

@ -1479,11 +1479,6 @@ void TTransfer_file::negativo(TString& importo)
} }
} }
// Controlla se la ditta è in euro
static bool ditta_in_euro()
{
return is_euro_value(NULL);
}
void TTransfer_file::write_tmp_movPN(TString& record) void TTransfer_file::write_tmp_movPN(TString& record)
{ {
@ -1507,7 +1502,7 @@ void TTransfer_file::write_tmp_movPN(TString& record)
const TString4 sigla = record.mid(0,2); const TString4 sigla = record.mid(0,2);
key.format("%2s%d", (const char*)sigla,numfield); key.format("%2s%d", (const char*)sigla,numfield);
if (trc.is_key((const char *) key)) if (trc.is_key((const char*)key))
{ {
int logicnum_p = 0; int logicnum_p = 0;
@ -1563,7 +1558,7 @@ void TTransfer_file::write_tmp_movPN(TString& record)
negativo(field); negativo(field);
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()==sizeT && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()==sizeT)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -1864,7 +1859,7 @@ void TTransfer_file::write_tmp_movIVA(const TString& record)
negativo(field); negativo(field);
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()==sizeT && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()==sizeT)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -2083,7 +2078,6 @@ void TTransfer_file::calcola_imposta(const TString& field, real& imposta)
app = buffer.sub(34,43); app = buffer.sub(34,43);
negativo(app); negativo(app);
if (ditta_in_euro())
app.insert(".", app.len()-2); app.insert(".", app.len()-2);
const real imp = app; const real imp = app;
@ -2208,7 +2202,7 @@ void TTransfer_file::partita(TString& record)
negativo(field); negativo(field);
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()==sizeT && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()==sizeT)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -2391,7 +2385,7 @@ void TTransfer_file::scadenza(TString& record)
negativo(field); negativo(field);
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()<1024 && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()<1024)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -2796,7 +2790,7 @@ void TTransfer_file::pagsca(TString& record)
{ {
negativo(field); negativo(field);
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()<1024 && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()<1024)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -3421,6 +3415,8 @@ void TTransfer_file::scrivi_PN(long nrec)
void TTransfer_file::scrivi_IVA(long nrec) void TTransfer_file::scrivi_IVA(long nrec)
{ {
TString buffer(sizeT);
_prog = new TProgind(nrec,TR("Trasferimento Movimenti IVA"),false, true); _prog = new TProgind(nrec,TR("Trasferimento Movimenti IVA"),false, true);
const TRic_recfield recf(_ttab->curr(), "S0", 0, sizeT); const TRic_recfield recf(_ttab->curr(), "S0", 0, sizeT);
@ -3430,10 +3426,11 @@ void TTransfer_file::scrivi_IVA(long nrec)
for (int err = _ttab->read(_isgteq); err == NOERR; err = _ttab->next()) for (int err = _ttab->read(_isgteq); err == NOERR; err = _ttab->next())
{ {
const TString& trec = _ttab->get("CODTAB"); const TString& trec = _ttab->get("CODTAB");
if (!trec.starts_with("U1"))
break;
const TFixed_string buffer((const char*)recf, sizeT); if (!trec.starts_with("U1")) break;
buffer = (const char*) recf;
write_tmp_movIVA(buffer); write_tmp_movIVA(buffer);
} }
delete _prog; delete _prog;
@ -4373,7 +4370,7 @@ void TTransfer_file::write_righe_contabili(const TString& record)
field = importo; field = importo;
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()<1024 && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()<1024)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -4510,7 +4507,7 @@ void TTransfer_file::write_righe_IVA(TString& record)
field = importo; field = importo;
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()<1024 && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()<1024)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -4718,7 +4715,7 @@ void TTransfer_file::write_partite(const TString& record)
field = importo; field = importo;
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()<1024 && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()<1024)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -4857,7 +4854,7 @@ void TTransfer_file::write_scadenze(const TString& record)
field = importo; field = importo;
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()<1024 && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()<1024)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;
@ -5012,7 +5009,7 @@ void TTransfer_file::write_pagsca(const TString& record)
field = importo; field = importo;
// Cerco di riconoscere gli importi in euro // Cerco di riconoscere gli importi in euro
if (dec == 0 && (to-from) >= 8 && record.size()<1024 && ditta_in_euro()) if (dec == 0 && (to-from) >= 8 && record.size()<1024)
{ {
flag = 3; flag = 3;
dec = 2; dec = 2;

View File

@ -21,7 +21,6 @@
#include <pagsca.h> #include <pagsca.h>
#endif #endif
class TTree_rectype : public TRectype class TTree_rectype : public TRectype
{ {
protected: protected:
@ -223,11 +222,13 @@ public:
TRiga_partite_array() : TRecord_array(LF_PARTITE, PART_NRIGA) {} TRiga_partite_array() : TRecord_array(LF_PARTITE, PART_NRIGA) {}
}; };
typedef TString8 TNumero_partita;
class TPartita : public TSortable class TPartita : public TSortable
{ {
TBill _conto; TBill _conto;
int _anno; int _anno;
TString16 _num; TNumero_partita _num;
TRiga_partite_array _part; TRiga_partite_array _part;
TRecord_array _unassigned; TRecord_array _unassigned;
@ -295,7 +296,7 @@ public:
const TBill& conto() const { return _conto; } const TBill& conto() const { return _conto; }
int anno() const { return _anno; } int anno() const { return _anno; }
const TString& numero() const { return _num; } const TNumero_partita& numero() const { return _num; }
//const TString& descrizione() const; //const TString& descrizione() const;
const char* build_key(TString& key) const; const char* build_key(TString& key) const;