Modifiche per gestione IVA x cassa registrata in ritardo
git-svn-id: svn://10.65.10.50/branches/R_10_00@23002 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
537c54ac01
commit
dc46bc0acc
@ -2396,8 +2396,11 @@ bool TPrimanota_application::link_anal(const TMask& msk, const char* action)
|
|||||||
{
|
{
|
||||||
TConfig config(ini, "Transaction");
|
TConfig config(ini, "Transaction");
|
||||||
config.set("Action", action);
|
config.set("Action", action);
|
||||||
|
|
||||||
|
/* Attualmente genera solo problemi al Cigno che ha CI e CM ma non ha CA
|
||||||
if (has_module(CIAUT) && !has_module(CAAUT))
|
if (has_module(CIAUT) && !has_module(CAAUT))
|
||||||
config.set("Mode", "A"); // Salva automaticamente i movimenti di sola industriale
|
config.set("Mode", "A"); // Salva automaticamente i movimenti di sola industriale
|
||||||
|
*/
|
||||||
|
|
||||||
TString4 para; para << LF_MOVANA;
|
TString4 para; para << LF_MOVANA;
|
||||||
config.set_paragraph(para);
|
config.set_paragraph(para);
|
||||||
|
@ -640,9 +640,14 @@ bool TLiquidazione_app::sarebbe_da_pagare(const TRectype& mov, const TDate& fine
|
|||||||
if (mov.get_int(MOV_TIPOMOV) != tm_fattura)
|
if (mov.get_int(MOV_TIPOMOV) != tm_fattura)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const TDate datareg = mov.get(MOV_DATAREG);
|
// La data di riferimento sarebbe quella di consegna della merce, ma non avendola usiamo la data documento.
|
||||||
const long giorni = fine - datareg;
|
// In assenza della data documento siamo costretti ad usare la data di registrazione
|
||||||
if (giorni < 0)
|
const TDate data_reg = mov.get(MOV_DATAREG);
|
||||||
|
const TDate data_doc = mov.get(MOV_DATADOC);
|
||||||
|
const TDate data_rif = data_doc.ok() && data_doc < data_reg ? data_doc : data_reg;
|
||||||
|
|
||||||
|
const long giorni = fine - data_rif;
|
||||||
|
if (giorni < 0 || fine < data_reg) // Diana 2000 registra a Settebre 2014 fatture con data ducumento nel 2013!
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (mov.get_bool(MOV_LIQDIFF))
|
if (mov.get_bool(MOV_LIQDIFF))
|
||||||
@ -1075,7 +1080,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (_mov->get_long(MOV_NUMREG) == 14281)
|
if (_mov->get_long(MOV_NUMREG) == 15985)
|
||||||
int cazzone = 1;
|
int cazzone = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1142,7 +1147,48 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
}
|
}
|
||||||
if (sarebbe_da_pagare(_mov->curr(), fine))
|
if (sarebbe_da_pagare(_mov->curr(), fine))
|
||||||
{
|
{
|
||||||
rp.calcola_pagato_periodo(TDate(0L), fine, pg, nc, NULL);
|
TPointer_array pagscaold;
|
||||||
|
rp.calcola_pagato_periodo(TDate(0L), fine, pg, nc, &pagscaold);
|
||||||
|
|
||||||
|
// Controllo se ci siam persi delle note di credito negli anni scorsi
|
||||||
|
if (!nc.is_zero() && pagscaold.items() > pagscatt.items())
|
||||||
|
{
|
||||||
|
FOR_EACH_ARRAY_ITEM(pagscaold, i, obj)
|
||||||
|
{
|
||||||
|
const TRectype& pagsca = *(const TRectype*)obj;
|
||||||
|
const int anno = pagsca.get_int(PAGSCA_ANNO);
|
||||||
|
const int nrigp = pagsca.get_int(PAGSCA_NRIGP);
|
||||||
|
// Appartiene all'anno scorso?
|
||||||
|
if (anno < year_int && nrigp < 999) // 9999 on pagsca -> 999 on ivadiff
|
||||||
|
{
|
||||||
|
const TPartita& p = arrpart.partita(pagsca);
|
||||||
|
const TRiga_partite& rp = p.riga(nrigp);
|
||||||
|
// E' veramente una nota di credito?
|
||||||
|
if (rp.tipo() == tm_nota_credito)
|
||||||
|
{
|
||||||
|
bool found = false;
|
||||||
|
FOR_EACH_ARRAY_ITEM(pagscatt, j, ps)
|
||||||
|
{
|
||||||
|
if (ps == obj)
|
||||||
|
{
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
TLocalisamfile id(LF_IVADIFF);
|
||||||
|
id.put(RMI_NUMREG, _rmoviva->get(RMI_NUMREG));
|
||||||
|
id.put(RMI_NUMRIG, _rmoviva->get(RMI_NUMRIG));
|
||||||
|
id.put("NUMPRO", nrigp);
|
||||||
|
if (id.read(_isequal) != NOERR || id.get_int("ANNOLIQ") == 0)
|
||||||
|
pagscatt.add(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TImporto saldo = rp.importo(false);
|
TImporto saldo = rp.importo(false);
|
||||||
saldo += pg; saldo += nc;
|
saldo += pg; saldo += nc;
|
||||||
saldo.normalize(sezfat);
|
saldo.normalize(sezfat);
|
||||||
@ -1394,6 +1440,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if (!d.ok())
|
if (!d.ok())
|
||||||
d = rp.get(PART_DATAREG);
|
d = rp.get(PART_DATAREG);
|
||||||
idcurr.put("DATAREGP", d);
|
idcurr.put("DATAREGP", d);
|
||||||
|
idcurr.put("ANNOLIQ", d.year());
|
||||||
pagtmp = p.importo_pagsca(pagsca);
|
pagtmp = p.importo_pagsca(pagsca);
|
||||||
pagtmp.normalize(sezpag);
|
pagtmp.normalize(sezpag);
|
||||||
ultimo = (r == pagscatt.last()) && partita_chiusa_al(p, fine);
|
ultimo = (r == pagscatt.last()) && partita_chiusa_al(p, fine);
|
||||||
@ -1405,11 +1452,11 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
idcurr.put("NUMREGP", _mov->get(MOV_NUMREG));
|
idcurr.put("NUMREGP", _mov->get(MOV_NUMREG));
|
||||||
idcurr.put("NUMRIGP", nrigp);
|
idcurr.put("NUMRIGP", nrigp);
|
||||||
idcurr.put("DATAREGP", _mov->get(MOV_DATAINC));
|
idcurr.put("DATAREGP", _mov->get(MOV_DATAINC));
|
||||||
|
idcurr.put("ANNOLIQ", year_int);
|
||||||
pagtmp.set(sezpag, pagsca.get_real(PAGSCA_IMPORTO));
|
pagtmp.set(sezpag, pagsca.get_real(PAGSCA_IMPORTO));
|
||||||
ultimo = true;
|
ultimo = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
idcurr.put("ANNOLIQ", year_int);
|
|
||||||
int meseliq = id.get_date("DATAREGP").month();
|
int meseliq = id.get_date("DATAREGP").month();
|
||||||
if (_freqviva[0] == 'T')
|
if (_freqviva[0] == 'T')
|
||||||
{
|
{
|
||||||
|
@ -1228,11 +1228,11 @@ messaggio TStampa_registri_app::controlla_liquidazione()
|
|||||||
}
|
}
|
||||||
if (need_refresh)
|
if (need_refresh)
|
||||||
{
|
{
|
||||||
continua = yesno_box(FR("Ditta %s: la liquidazione di alcuni mesi precedenti deve "
|
continua = yesno_box(FR("Ditta %s: la liquidazione di alcuni mesi precedenti deve essere ricalcolata.\n"
|
||||||
"essere ricalcolata.\n"
|
"Si desidera ugualmente proseguire?"), (const char*)ditta);
|
||||||
"Si desidera ugualmente proseguire?"),(const char*)ditta);
|
|
||||||
if (!continua) return non_proseguire;
|
if (!continua) return non_proseguire;
|
||||||
continua = yesno_box(TR("Si desidera proseguire con il calcolo e la stampa di liquidazione? \n (altrimenti si prosegue con la sola stampa liquidazione)"));
|
continua = yesno_box(TR("Si desidera proseguire con il calcolo e la stampa di liquidazione?\n"
|
||||||
|
"(altrimenti si prosegue con la sola stampa liquidazione)"));
|
||||||
if (!continua) return prosegui_stampa;
|
if (!continua) return prosegui_stampa;
|
||||||
return prosegui_cal_stampa;
|
return prosegui_cal_stampa;
|
||||||
}
|
}
|
||||||
|
@ -367,7 +367,7 @@ END
|
|||||||
|
|
||||||
VALUTA FFR_REGIMP(11) 18
|
VALUTA FFR_REGIMP(11) 18
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 36 ""
|
PROMPT 29 36 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
VALUTA FFR_REGIVA(11) 18
|
VALUTA FFR_REGIVA(11) 18
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
virtual ~TEsercizi_contabili() {}
|
virtual ~TEsercizi_contabili() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
TEsercizi_contabili & esercizi();
|
TEsercizi_contabili& esercizi();
|
||||||
|
|
||||||
enum TipoIVA
|
enum TipoIVA
|
||||||
{
|
{
|
||||||
|
@ -33,7 +33,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;
|
||||||
|
|
||||||
|
@ -1119,6 +1119,11 @@ int TRiga_partite::calcola_pagato_periodo(const TDate& dal, const TDate& al, TIm
|
|||||||
if (!is_fattura())
|
if (!is_fattura())
|
||||||
return flag;
|
return flag;
|
||||||
|
|
||||||
|
#ifdef DBG
|
||||||
|
if (get_long(PART_NREG) == 15985)
|
||||||
|
int cazzone = 2;
|
||||||
|
#endif
|
||||||
|
|
||||||
TPointer_array pags;
|
TPointer_array pags;
|
||||||
|
|
||||||
const int lastr = rate();
|
const int lastr = rate();
|
||||||
@ -1139,17 +1144,20 @@ int TRiga_partite::calcola_pagato_periodo(const TDate& dal, const TDate& al, TIm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cerco di gestire anche i non assegnati sulla unica fattura di una partita
|
// Conto le fatture presenti in partita
|
||||||
const TRecord_array& unas = partita().unassigned();
|
int fatture = 0;
|
||||||
if (unas.rows() > 0)
|
for (int r = partita().last(); r > 0 && fatture < 2; r = partita().pred(r))
|
||||||
{
|
{
|
||||||
int fatture = 0;
|
const TRiga_partite& rp = partita().riga(r);
|
||||||
for (int r = partita().last(); r > 0 && fatture < 2; r = partita().pred(r))
|
fatture += rp.tipo() == tm_fattura ? 1 : 0;
|
||||||
{
|
}
|
||||||
if (partita().riga(r).tipo() == tm_fattura)
|
|
||||||
fatture++;
|
// Se c'è una sola fattura posso fare dei ragionamenti
|
||||||
}
|
if (fatture == 1)
|
||||||
if (fatture == 1)
|
{
|
||||||
|
// Cerco di gestire anche i non assegnati
|
||||||
|
const TRecord_array& unas = partita().unassigned();
|
||||||
|
if (unas.rows() > 0)
|
||||||
{
|
{
|
||||||
for(int r = unas.last_row(); r > 0; r = unas.pred_row(r))
|
for(int r = unas.last_row(); r > 0; r = unas.pred_row(r))
|
||||||
{
|
{
|
||||||
|
@ -184,8 +184,9 @@ public:
|
|||||||
|
|
||||||
tipo_movimento tipo() const;
|
tipo_movimento tipo() const;
|
||||||
tipo_pagamento tipo_pag() const;
|
tipo_pagamento tipo_pag() const;
|
||||||
bool is_fattura() const { return tipo() == tm_fattura; }
|
bool is_fattura() const { return tipo() == tm_fattura; }
|
||||||
bool is_nota_credito() const { return tipo() == tm_nota_credito; }
|
bool is_nota_credito() const { return tipo() == tm_nota_credito; }
|
||||||
|
bool is_insoluto() const { return tipo() == tm_insoluto; }
|
||||||
int ultima_ratapagata() const;
|
int ultima_ratapagata() const;
|
||||||
int ultimo_pagamento(int rata) const;
|
int ultimo_pagamento(int rata) const;
|
||||||
int ultima_rata_con_abbuoni_diffcam() const;
|
int ultima_rata_con_abbuoni_diffcam() const;
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
#define F_IBAN_INC 152
|
#define F_IBAN_INC 152
|
||||||
|
|
||||||
#define F_PROG 153
|
#define F_PROG 153
|
||||||
|
#define F_CREDITOR_ID 154
|
||||||
|
|
||||||
|
|
||||||
#endif//__CGTBBNP_H
|
#endif//__CGTBBNP_H
|
||||||
|
@ -405,7 +405,7 @@ ENDPAGE
|
|||||||
|
|
||||||
PAGE "Parametri Distinte" 0 -1 77 20
|
PAGE "Parametri Distinte" 0 -1 77 20
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "@bParametri emissione distinte su file"
|
PROMPT 1 1 "@bParametri emissione distinte su file"
|
||||||
END
|
END
|
||||||
@ -426,6 +426,14 @@ BOOLEAN F_IBAN_INC
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 4 "Genera IBAN su distinte di incasso"
|
PROMPT 2 4 "Genera IBAN su distinte di incasso"
|
||||||
FIELD B2
|
FIELD B2
|
||||||
|
MESSAGE FALSE DISABLE,F_CREDITOR_ID
|
||||||
|
MESSAGE TRUE ENABLE, F_CREDITOR_ID
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CREDITOR_ID 25
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Creditor ID per R.I.D. "
|
||||||
|
FIELD S4
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user