Patch level : 12.0 580
Files correlati : cg4.exe f171.trr f171.dir cg2100c.msk Modifiche alla dichiarazione e alla liquidazione per il volume d'affari (movimenti per cassa) Corretto il calcolo degli abbuoni in prima nota Corretta la ricerca per partita IVA in prima nota git-svn-id: svn://10.65.10.50/branches/R_10_00@24490 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4e05048227
commit
283f883c64
@ -82,8 +82,7 @@ TMask* TPrimanota_application::load_mask(int n)
|
||||
{
|
||||
m->set_handler(F_DATA74TER, data74ter_handler);
|
||||
m->set_handler(F_PROTIVA, protiva_handler);
|
||||
m->set_handler(F_CLIENTE, clifo_handler);
|
||||
m->set_handler(F_FORNITORE, clifo_handler);
|
||||
m->set_handler(F_CODCLIFOR, clifo_handler);
|
||||
m->set_handler(F_RITFIS, ritfis_handler);
|
||||
m->set_handler(F_RITSOC, ritsoc_handler);
|
||||
m->set_handler(F_CORRISPETTIVO, corrlire_handler);
|
||||
@ -409,9 +408,7 @@ bool TPrimanota_application::read_caus(const char* cod, int year)
|
||||
|
||||
const char tipo = nriga == 1 ? 'T' : ' ';
|
||||
if (nriga == 1 && tc.tipo() > ' ' && tc.ok())
|
||||
{
|
||||
m->set(tc.tipo() == 'C' ? F_CLIENTE : F_FORNITORE, tc.sottoconto());
|
||||
}
|
||||
m->set(F_CODCLIFOR, tc.sottoconto());
|
||||
set_cgs_row(-1,zero,tc,desc,tipo);
|
||||
}
|
||||
}
|
||||
@ -578,27 +575,18 @@ void TPrimanota_application::init_mask(TMask& m)
|
||||
const TCausale& cc = causale();
|
||||
const bool corrisp = cc.corrispettivi();
|
||||
|
||||
bool clig = false, forg = false;
|
||||
if (_iva == iva_acquisti)
|
||||
forg = true;
|
||||
else
|
||||
clig = corrisp ? false : true;
|
||||
// Mostra i gruppo clienti ed eventualmente quello fornitori
|
||||
if (clig)
|
||||
if (corrisp) QUI
|
||||
{
|
||||
m.show(-2, forg);
|
||||
m.show(-1, clig);
|
||||
m.hide(-2);
|
||||
m.hide(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.show(-1, clig);
|
||||
m.show(-2, forg);
|
||||
m.show(-1);
|
||||
m.show(-2);
|
||||
}
|
||||
|
||||
const bool is_forn = forg || (causale().soloiva() && clifo() == "F");
|
||||
|
||||
m.show(F_CLIENTE, !is_forn);
|
||||
m.show(F_FORNITORE, is_forn);
|
||||
m.hide(-7); // Nascondi tutti i campi del modulo FE
|
||||
|
||||
if (corrisp)
|
||||
@ -837,13 +825,17 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
||||
occas_mask().reset();
|
||||
m.hide(F_OCCASEDIT);
|
||||
|
||||
const TString& tipo = clifo();
|
||||
const TString & tipo = clifo();
|
||||
TEdit_field & cf = m.efield(F_CODCLIFOR);
|
||||
|
||||
m.set(F_CLIFO, tipo);
|
||||
m.show(F_CLIENTE, tipo == "C");
|
||||
m.show(F_RAGSOCCLIENTE, tipo == "C");
|
||||
m.show(F_FORNITORE, tipo == "F");
|
||||
m.show(F_RAGSOCFORNITORE, tipo == "F");
|
||||
cf.set_prompt(tipo == "C" ? "Cliente" : "Fornitore");
|
||||
cf.set_warning(tipo == "C" ? "Cliente assente" : "Fornitore assente");
|
||||
|
||||
TEdit_field & rf = m.efield(F_RAGSOCCF);
|
||||
|
||||
rf.set_warning(tipo == "C" ? "Cliente assente" : "Fornitore assente");
|
||||
|
||||
#ifdef PRORATA100
|
||||
m.hide(F_ADJUST_PRORATA); // In inserimento non puo' esistere un pro-rata errato!
|
||||
#endif
|
||||
@ -944,15 +936,18 @@ void TPrimanota_application::init_modify_mode(TMask& m)
|
||||
// Determina se il movimento è stato trasferito da AS/400:
|
||||
// praticamente controlla che non ci sia nessun tipo movimento sulle righe contabili.
|
||||
_as400 = false;
|
||||
if (iva() != nessuna_iva)
|
||||
if (iva() != nessuna_iva)
|
||||
{
|
||||
const TString& tipo = clifo();
|
||||
const TString & tipo = _rel->lfile().get(MOV_TIPO);
|
||||
TEdit_field & cf = m.efield(F_CODCLIFOR);
|
||||
|
||||
m.set(F_CLIFO, tipo);
|
||||
m.show(F_CLIENTE, tipo == "C");
|
||||
m.show(F_RAGSOCCLIENTE, tipo == "C");
|
||||
m.show(F_FORNITORE, tipo == "F");
|
||||
m.show(F_RAGSOCFORNITORE, tipo == "F");
|
||||
cf.set_prompt(tipo == "C" ? "Cliente" : "Fornitore");
|
||||
cf.set_warning(tipo == "C" ? "Cliente assente" : "Fornitore assente");
|
||||
|
||||
TEdit_field & rf = m.efield(F_RAGSOCCF);
|
||||
|
||||
rf.set_warning(tipo == "C" ? "Cliente assente" : "Fornitore assente");
|
||||
}
|
||||
|
||||
if (is_saldaconto() || iva() != nessuna_iva)
|
||||
@ -1679,12 +1674,12 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
|
||||
|
||||
// Reperisce l'eventuale cliente associato al fornitore e lo propone
|
||||
if (tcf_reg == 'F')
|
||||
m.set(F_FORNITORE, _automatico->_clifo.codclifo());
|
||||
m.set(F_CODCLIFOR, _automatico->_clifo.codclifo());
|
||||
else
|
||||
{
|
||||
TString8 forn; forn.format("F|%ld", _automatico->_clifo.codclifo());
|
||||
const TString& clnt = cache().get(LF_CLIFO, forn, CLI_CODCFASS);
|
||||
m.set(F_CLIENTE, clnt);
|
||||
m.set(F_CODCLIFOR, clnt);
|
||||
}
|
||||
m.set(F_TOTALE, _automatico->_totale); // Imposta il totale documento e ...
|
||||
m.set(F_CODIVA, _automatico->_codiva, true); // ... scatena creazione prima riga IVA
|
||||
@ -1870,7 +1865,7 @@ bool TPrimanota_application::link_m770()
|
||||
{
|
||||
if (m770 == 1 || m770 == 5)
|
||||
{
|
||||
const long forn = cm.get_long(F_FORNITORE);
|
||||
const long forn = cm.get_long(F_CODCLIFOR);
|
||||
if (is_percipient(forn, tipper, codper))
|
||||
calcola_m770(tipo_coll = 1, spese, compenso, imposte, ritenute);
|
||||
}
|
||||
@ -2101,7 +2096,7 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
|
||||
if (msk.insert_mode())
|
||||
{
|
||||
// Propone condizioni di pagamento e banche
|
||||
TEdit_field& clifo = msk.efield(iva() == iva_vendite ? F_CLIENTE : F_FORNITORE);
|
||||
TEdit_field& clifo = msk.efield(F_CODCLIFOR);
|
||||
if (!clifo.empty() && clifo.active())
|
||||
{
|
||||
clifo.set_focusdirty();
|
||||
@ -2395,7 +2390,7 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
||||
intro.set("ANNORETT", dataint.year());
|
||||
intro.set("PERETT", freq.date2periodo(dataint, tipo));
|
||||
intro.set("STATO", m.get(F_STATOPAIV));
|
||||
intro.set("PIVA", tipo == 'B' ? m.get(F_PIVAFORNITORE) : m.get(F_PIVACLIENTE));
|
||||
intro.set("PIVA", m.get(F_PIVA));
|
||||
intro.set("NUMREG", m.get(F_NUMREG));
|
||||
|
||||
appname << "in0 -6 /i" << intrini;
|
||||
@ -2418,18 +2413,11 @@ bool TPrimanota_application::link_intra(const TMask& m, const char* action)
|
||||
intro.set(MOV_NUMREG, m.get(F_NUMREG));
|
||||
intro.set(MOV_DATAREG, m.get(F_DATAREG));
|
||||
|
||||
if (m.field(F_CLIENTE).shown())
|
||||
{
|
||||
intro.set(MOV_TIPOMOV, "C"); // Cessione
|
||||
intro.set("TIPOCF", "C"); // Cliente
|
||||
intro.set(MOV_CODCF, m.get(F_CLIENTE));
|
||||
}
|
||||
else
|
||||
{
|
||||
intro.set(MOV_TIPOMOV, "A"); // Acquisto
|
||||
intro.set("TIPOCF", "F"); // Fornitore
|
||||
intro.set(MOV_CODCF, m.get(F_FORNITORE));
|
||||
}
|
||||
const TString & tipo = clifo();
|
||||
|
||||
intro.set(MOV_TIPOMOV, tipo == "C" ? "C" : "A"); // Cessione (TIPO=C) Acquisto (TIPO=F)
|
||||
intro.set("TIPOCF", tipo); // Cliente
|
||||
intro.set(MOV_CODCF, m.get(F_CODCLIFOR));
|
||||
|
||||
// Controlla flag sulla causale
|
||||
const bool valintra = causale().valintra();
|
||||
|
@ -360,21 +360,6 @@ bool TLiquidazione_app::user_create()
|
||||
_canprint = is_month_ok_strict(_month) || _month == 13;
|
||||
_isannual = _isriepilogo = _month == 13;
|
||||
|
||||
//modifica del 03/05/1995
|
||||
/* bool need_refresh = false;
|
||||
for (int m = 1; m < _month; m++)
|
||||
{
|
||||
const TRectype & lim = get_lim(m) ;
|
||||
|
||||
if (is_month_ok_strict(m) && !lim.get_bool("B0"))
|
||||
{
|
||||
need_refresh = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (need_refresh)
|
||||
_recalc = ever; */
|
||||
|
||||
// determina attivita' prevalente e istanzia cazzuole
|
||||
// per vedere che Kazzo di liquidazione calcolare
|
||||
const TString8 attprev = _nditte->curr().get("CODATTPREV");
|
||||
@ -401,24 +386,6 @@ bool TLiquidazione_app::user_create()
|
||||
if (_isprint && _descr_arr.items() > 0)
|
||||
print();
|
||||
|
||||
/*if (!nocalc)
|
||||
{
|
||||
// se ci sono altri mesi dopo l'ultimo calcolato, invalida il
|
||||
// flag 'calcolato' del primo, per causare il ricalcolo dei
|
||||
// successivi (evitando problemi per credito precedente)
|
||||
for (int m = _month+1; m <= 13; m++)
|
||||
{
|
||||
TRectype lim = get_lim(m);
|
||||
|
||||
if (lim.not_empty())
|
||||
{
|
||||
lim.zero("B0");
|
||||
put_lim(lim);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
TApplication::set_firm(__firm);
|
||||
user_destroy();
|
||||
}
|
||||
@ -926,7 +893,7 @@ bool TLiquidazione_app::set_liquidazione()
|
||||
// handlers have set everything
|
||||
_month = _what == trimestre ? m.get_int(CG43_LST_TRIM) :
|
||||
m.get_int(CG43_LST_MESE);
|
||||
|
||||
|
||||
_year = m.get(CG43_FLD_ANNO);
|
||||
_date = m.get(CG43_FLD_DATA);
|
||||
_isprint = m.get_bool(CG43_CHK_STAMPA);
|
||||
|
@ -575,10 +575,10 @@ bool TLiquidazione_app::update_att(int month, const char* codatt, TAssoc_array &
|
||||
void TLiquidazione_app::zero_att(int month, const char* codatt)
|
||||
{
|
||||
TTable *arr[4] = { _pim, _pis, _prm, _prp };
|
||||
const char* flds[] = { "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9",
|
||||
const char* flds[] = { "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9",
|
||||
"R10", "R11", "R12", "R13", "R14", "R15", "R16", "R17", "R18", "R19",
|
||||
"R20", "R21", "R22", "R23", "R24", "R25", "R26", "R27", "R28", "R29",
|
||||
"R30", "R31", "R32", "R33",
|
||||
"R30", "R31", "R32", "R33", "R34",
|
||||
"S0", "S1", "S2", NULL };
|
||||
|
||||
TString80 codtab;
|
||||
@ -920,7 +920,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
real esenti_b14 = ZERO;
|
||||
real vendite_rev = ZERO; // Vendire in reverse charge (da escludere in prorata)
|
||||
real cred_fattrit;
|
||||
|
||||
|
||||
/* Comunicazione dati iva annuale dal 2016 calcolata in cg5
|
||||
// Comunicazione dati iva annuale (dal 2003)
|
||||
real cessioni_cd1_1 = ZERO; // Totale operazioni attive
|
||||
@ -937,8 +937,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
real oroargento_cd3_2 = ZERO; // imposta acquisto oro e argento
|
||||
real rottami_cd3_3 = ZERO; // imponibile acquisto rottami
|
||||
real rottami_cd3_4 = ZERO; // imposta acquisto rottami
|
||||
real cessioni_cd1_1s = ZERO; // Totale operazioni attive in split payment
|
||||
*/
|
||||
real cessioni_cd1_1s = ZERO; // Totale operazioni attive in split payment
|
||||
*/
|
||||
|
||||
real esni_rimb = ZERO; // ci sommo tutti esenti e ni validi per rimborso
|
||||
real corr_CEE = ZERO;
|
||||
@ -1168,6 +1168,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
const bool corrisp = _reg->get_bool("B0");
|
||||
const tiporeg tipomov = (tiporeg)_reg->get_int("I0"); // 1=Vendite; 2=Acquisti
|
||||
tipo_movimento tm = (tipo_movimento)_mov->get_int(MOV_TIPOMOV);
|
||||
real imp_split_payment;
|
||||
|
||||
if (tm == tm_nessuno)
|
||||
{
|
||||
@ -1523,7 +1524,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
const real lordo_orig = imponibile_orig + imposta_orig;
|
||||
|
||||
if (is_split_payment(_mov->curr()))
|
||||
{
|
||||
imposta_orig = ZERO;
|
||||
imp_split_payment = imponibile_orig; // Imponibile operazioni attive in split payment
|
||||
}
|
||||
|
||||
real diff_imp; // Liquidazione differita imponibile
|
||||
real diff_iva; // Liquidazione differita imposta
|
||||
@ -2741,7 +2745,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
}
|
||||
#endif
|
||||
// fatture vendita a liquidazione differita
|
||||
tab->curr().add("R26", diff_imp);
|
||||
if (diff_imp > ZERO)
|
||||
int i = 1;
|
||||
tab->curr().add("R26", diff_imp);
|
||||
tab->curr().add("R27", diff_iva);
|
||||
tab->curr().add("R28", incdiff_imp);
|
||||
tab->curr().add("R29", incdiff_iva);
|
||||
@ -2759,6 +2765,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
else
|
||||
{
|
||||
// fatture acquisto a liquidazione differita
|
||||
if (diff_imp > ZERO)
|
||||
int i = 1;
|
||||
tab->curr().add("R30", diff_imp);
|
||||
tab->curr().add("R31", diff_iva);
|
||||
tab->curr().add("R32", incdiff_imp);
|
||||
@ -2774,7 +2782,9 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (imp_split_payment != ZERO)
|
||||
tab->curr().add("R34", imp_split_payment);
|
||||
imp_split_payment = ZERO;
|
||||
tab->rewrite(); // rewrite current table
|
||||
} // for per tabelle
|
||||
} // for is_detraibile
|
||||
|
@ -2511,6 +2511,13 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
|
||||
set_row(rw++, FR("%s@11gCredito IVA compensabile detratto in F24%s@75g%r"), _is_visliq ? "$[r]" : "", _is_visliq ? "$[n]" : "", &credito_utilizzato_F24);
|
||||
credito_utilizzabile -= credito_utilizzato_F24;
|
||||
set_row(rw++,FR("@11gCredito compensabile attuale@58g%r"), &credito_utilizzabile);
|
||||
if (credito_utilizzabile > ZERO && cre_deb_per < ZERO)
|
||||
{
|
||||
const real cred = credito_utilizzabile - cre_deb_per;
|
||||
|
||||
set_row(rw++, FR("@11gCredito complessivo@58g%r"), &cred);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2549,18 +2556,27 @@ static void imp2string(const real& n, TString& str)
|
||||
void TLiquidazione_app::set_iva_succ(int& rw)
|
||||
{
|
||||
TString query;
|
||||
|
||||
query << "USE IVADIFF KEY 2";
|
||||
if (!_end_cassa)
|
||||
query << "\nFROM ANNOLIQ=" << _year;
|
||||
query << "\nTO ANNOLIQ=" << _year;
|
||||
TISAM_recordset id(query);
|
||||
const TDate da_datareg(1, 1, atoi(_year));
|
||||
const TDate a_datareg(31, 12, atoi(_year));
|
||||
|
||||
// query << "USE IVADIFF KEY 2 SELECT BETWEEN(DATAREG,#DAL,#AL)";
|
||||
query << "USE IVADIFF KEY 4";
|
||||
if (!_end_cassa)
|
||||
query << "\nFROM DATAREG=" << da_datareg;
|
||||
|
||||
query << "\nTO DATAREG=" << a_datareg;
|
||||
TISAM_recordset id(query);
|
||||
/* const TDate da_datareg(1, 1, atoi(_year));
|
||||
const TDate a_datareg(31, 12, atoi(_year));
|
||||
|
||||
id.set_var("DAL", _end_cassa ? botime : da_datareg);
|
||||
id.set_var("AL", a_datareg); */
|
||||
|
||||
TImporto ven_diff, ven_xcas, acq_xcas, acq_diff;
|
||||
TString8 codiva;
|
||||
TString8 tipo_aliquota;
|
||||
TToken_string key;
|
||||
TImporto tot_iva;
|
||||
|
||||
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||
{
|
||||
@ -2577,19 +2593,24 @@ void TLiquidazione_app::set_iva_succ(int& rw)
|
||||
|
||||
if (tipo_aliquota.blank())
|
||||
{
|
||||
if (tipoiva == 1) // Vendite
|
||||
const TDate datapag = id.get(ID_DATAREGP).as_date();
|
||||
|
||||
if (datapag <= a_datareg)
|
||||
{
|
||||
if (tipodiff == 1)
|
||||
ven_diff += imp;
|
||||
if (tipoiva == 1) // Vendite
|
||||
{
|
||||
if (tipodiff == 1)
|
||||
ven_diff += imp;
|
||||
else
|
||||
ven_xcas += imp;
|
||||
}
|
||||
else
|
||||
ven_xcas += imp;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tipodiff == 1)
|
||||
acq_diff += imp;
|
||||
else
|
||||
acq_xcas += imp;
|
||||
{
|
||||
if (tipodiff == 1)
|
||||
acq_diff += imp;
|
||||
else
|
||||
acq_xcas += imp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ LISTBOX FINO_A_MESE 10
|
||||
BEGIN
|
||||
PROMPT 3 9 "Fino al mese "
|
||||
HELP "Mese fino al quale eseguire la stampa"
|
||||
FLAGS "M"
|
||||
FLAGS "M"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
@ -158,8 +158,9 @@ public: // TObject
|
||||
bool senza_imposta() { return percentuale() == ZERO;}
|
||||
|
||||
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; }
|
||||
bool sospeso() const { return get_bool("B2"); }
|
||||
|
||||
real imposta(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola l'imposta sull'imponibile l'imposta e la ritorna
|
||||
real scorpora(real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Scorpora dall'imponibile l'imposta e la ritorna
|
||||
real lordo(const real& imponibile, int ndec = AUTO_DECIMALS, const char * codval = "") const; // Calcola il lordo dell'imponibile l'imposta e la ritorna
|
||||
|
Loading…
x
Reference in New Issue
Block a user