Aggiunta alla prima nota la gestione del campo MESELIQ
git-svn-id: svn://10.65.10.50/trunk@6218 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7a49867232
commit
4d88f8c9d8
@ -798,6 +798,15 @@ int TPrimanota_application::read(TMask& m)
|
||||
solaiva.set(i == 0 ? "X" : " ");
|
||||
solaiva.on_key(K_TAB);
|
||||
|
||||
const int mese_liq = _rel->curr().get_int(MOV_MESELIQ);
|
||||
if (mese_liq != 0)
|
||||
{
|
||||
const TDate data_reg = m.get_date(F_DATAREG);
|
||||
const TDate data_liq(1, mese_liq, data_reg.year());
|
||||
if (_rel->date2liq(data_reg) != _rel->date2liq(data_liq))
|
||||
m.set(F_DIFFERITA, "X");
|
||||
}
|
||||
|
||||
const bool to_swap = test_swap(FALSE);
|
||||
if (to_swap)
|
||||
{
|
||||
@ -928,6 +937,24 @@ void TPrimanota_application::mask2rel(const TMask& m)
|
||||
|
||||
if (_iva == nessuna_iva) return;
|
||||
|
||||
// Calcola mese di liquidazione precedente
|
||||
int mese_liq = 0;
|
||||
if (m.get_bool(F_DIFFERITA))
|
||||
{
|
||||
TDate data_liq = m.get(F_DATAREG);
|
||||
const int curr_liq = _rel->date2liq(data_liq);
|
||||
data_liq.set_day(1); // Evita problemi coi mesi corti!
|
||||
for (mese_liq = curr_liq-1; mese_liq > 0; mese_liq--)
|
||||
{
|
||||
data_liq.set_month(mese_liq);
|
||||
if (_rel->date2liq(data_liq) != curr_liq)
|
||||
break;
|
||||
}
|
||||
if (mese_liq <= 0)
|
||||
mese_liq = 12;
|
||||
}
|
||||
rec.put(MOV_MESELIQ, mese_liq);
|
||||
|
||||
if (causale().corrispettivi())
|
||||
{
|
||||
rec.put("TIPO", "");
|
||||
|
@ -215,6 +215,11 @@ BEGIN
|
||||
WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliete/fornitore ha codice inserimento in allegati uguale a 3)"
|
||||
END
|
||||
|
||||
BOOLEAN F_DIFFERITA
|
||||
BEGIN
|
||||
PROMPT 54 9 "Liquid. periodo prec."
|
||||
END
|
||||
|
||||
NUMBER F_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 1 10 "Cliente "
|
||||
|
@ -12,7 +12,7 @@
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TMovimentoPN::TMovimentoPN()
|
||||
: TRelation(LF_MOV), _cg(LF_RMOV, "NUMRIG"), _iva(LF_RMOVIVA, "NUMRIG")
|
||||
: TRelation(LF_MOV), _cg(LF_RMOV, RMV_NUMRIG), _iva(LF_RMOVIVA, RMI_NUMRIG)
|
||||
{
|
||||
add(LF_RMOV, "NUMREG=NUMREG");
|
||||
add(LF_RMOVIVA, "NUMREG=NUMREG");
|
||||
@ -21,9 +21,9 @@ TMovimentoPN::TMovimentoPN()
|
||||
void TMovimentoPN::destroy_rows(long num)
|
||||
{
|
||||
_cg.destroy_rows();
|
||||
_cg.renum_key("NUMREG", num);
|
||||
_cg.renum_key(RMV_NUMREG, num);
|
||||
_iva.destroy_rows();
|
||||
_iva.renum_key("NUMREG", num);
|
||||
_iva.renum_key(RMI_NUMREG, num);
|
||||
}
|
||||
|
||||
|
||||
@ -64,8 +64,15 @@ int TMovimentoPN::read(TIsamop op, TReclock lockop)
|
||||
const int err = TRelation::read(op, lockop);
|
||||
if (err == NOERR)
|
||||
{
|
||||
_olddate = file().get("DATAREG"); // Memorizza data operazione per aggiornare i saldi
|
||||
read_mov_rows(); // Riempie i due record array
|
||||
_olddataliq = file().get(MOV_DATAREG); // Memorizza data liquidazione
|
||||
const int meseliq = file().get_int(MOV_MESELIQ);
|
||||
if (meseliq > 0 && meseliq != _olddataliq.month())
|
||||
{
|
||||
_olddataliq.set_day(1); // Evita problemi coi mesi corti!
|
||||
_olddataliq.set_month(meseliq);
|
||||
}
|
||||
|
||||
read_mov_rows(); // Riempie i due record array
|
||||
}
|
||||
return err;
|
||||
}
|
||||
@ -178,16 +185,16 @@ int TMovimentoPN::registra(bool re, bool force)
|
||||
return err;
|
||||
|
||||
const TRectype& m = curr();
|
||||
const long numreg = m.get_long("NUMREG");
|
||||
const long numreg = m.get_long(MOV_NUMREG);
|
||||
|
||||
if (!re)
|
||||
_cg.renum_key("NUMREG", numreg);
|
||||
_cg.renum_key(MOV_NUMREG, numreg);
|
||||
err = _cg.write(re);
|
||||
if (err != NOERR)
|
||||
return err;
|
||||
|
||||
const int annoiva = m.get_int("ANNOIVA");
|
||||
const TString reg(m.get("REG"));
|
||||
const int annoiva = m.get_int(MOV_ANNOIVA);
|
||||
const TString reg(m.get(MOV_REG));
|
||||
TRegistro registro(reg, annoiva);
|
||||
const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista();
|
||||
|
||||
@ -197,38 +204,46 @@ int TMovimentoPN::registra(bool re, bool force)
|
||||
int tipoatt = 1;
|
||||
if (att_mista)
|
||||
{
|
||||
const char tipo = r.get_char("TIPOC");
|
||||
const char tipo = r.get_char(RMI_TIPOC);
|
||||
if (tipo <= ' ')
|
||||
{
|
||||
TBill c(r.get_int("GRUPPO"), r.get_int("CONTO"), r.get_long("SOTTOCONTO"));
|
||||
TBill c(r.get_int(RMI_GRUPPO), r.get_int(RMI_CONTO), r.get_long(RMI_SOTTOCONTO));
|
||||
tipoatt = c.tipo_att();
|
||||
}
|
||||
}
|
||||
r.put("TIPOATT", tipoatt);
|
||||
r.put(RMI_TIPOATT, tipoatt);
|
||||
}
|
||||
|
||||
if (!re)
|
||||
_iva.renum_key("NUMREG", numreg);
|
||||
_iva.renum_key(MOV_NUMREG, numreg);
|
||||
err = _iva.write(re);
|
||||
if (err != NOERR)
|
||||
return err;
|
||||
|
||||
|
||||
// Aggiorna data registrazione e protocollo IVA sul registro
|
||||
const TDate datareg(m.get("DATAREG"));
|
||||
const TDate datareg(m.get(MOV_DATAREG));
|
||||
if (reg.not_empty())
|
||||
{
|
||||
const long protiva = m.get_long("PROTIVA");
|
||||
const long uprotiva = m.get_long("UPROTIVA");
|
||||
const long protiva = m.get_long(MOV_PROTIVA);
|
||||
const long uprotiva = m.get_long(MOV_UPROTIVA);
|
||||
const long max = protiva > uprotiva ? protiva : uprotiva;
|
||||
registro.update(max, datareg);
|
||||
}
|
||||
|
||||
// Aggiorna flags di ricalcolo liquidazione
|
||||
|
||||
controlla_liquidazione(datareg, registro, TRUE);
|
||||
if (re && datareg != _olddate)
|
||||
controlla_liquidazione(_olddate, registro, TRUE);
|
||||
TDate dataliq(datareg);
|
||||
const int mese_liq = m.get_int(MOV_MESELIQ);
|
||||
if (mese_liq > 0 && mese_liq != dataliq.month())
|
||||
{
|
||||
dataliq.set_day(1); // Evita problemi coi mesi corti!
|
||||
dataliq.set_month(mese_liq);
|
||||
}
|
||||
|
||||
controlla_liquidazione(dataliq, registro, TRUE);
|
||||
if (re && dataliq.month() != _olddataliq.month())
|
||||
controlla_liquidazione(_olddataliq, registro, TRUE);
|
||||
|
||||
return err;
|
||||
}
|
||||
@ -239,13 +254,11 @@ int TMovimentoPN::write(bool force)
|
||||
return registra(FALSE, force);
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::rewrite(bool force)
|
||||
{
|
||||
return registra(TRUE, force);
|
||||
}
|
||||
|
||||
|
||||
int TMovimentoPN::remove()
|
||||
{
|
||||
int err = _cg.remove();
|
||||
@ -259,11 +272,10 @@ int TMovimentoPN::remove()
|
||||
if (err == NOERR)
|
||||
{
|
||||
const TRectype& m = curr();
|
||||
const TDate datareg(m.get("DATAREG"));
|
||||
const int annoiva = m.get_int("ANNOIVA");
|
||||
const TString reg(m.get("REG"));
|
||||
const TString reg(m.get(MOV_REG));
|
||||
const int annoiva = m.get_int(MOV_ANNOIVA);
|
||||
TRegistro registro(reg, annoiva);
|
||||
controlla_liquidazione(datareg, registro, TRUE);
|
||||
controlla_liquidazione(_olddataliq, registro, TRUE);
|
||||
}
|
||||
|
||||
return err;
|
||||
|
@ -1,3 +1,3 @@
|
||||
23
|
||||
0
|
||||
$mov|0|0|339|0|Movimenti di prima nota|NMOV||
|
||||
$mov|0|0|341|0|Movimenti di prima nota|NMOV||
|
||||
|
@ -1,11 +1,12 @@
|
||||
23
|
||||
39
|
||||
40
|
||||
ANNOES|9|4|0|Codice esercizio
|
||||
NUMREG|3|7|0|Numero di operazione
|
||||
DATAREG|5|8|0|Data operazione
|
||||
DATACOMP|5|8|0|Data competenza
|
||||
DATADOC|5|8|0|Data documento
|
||||
DATA74TER|5|8|0|Data per art. 74 ter
|
||||
MESELIQ|2|2|0|Mese per liquidazione differita
|
||||
NUMDOC|1|7|0|Numero documento
|
||||
TIPODOC|1|2|0|Tipo documento
|
||||
CODCAUS|1|3|0|Codice causale
|
||||
|
Loading…
x
Reference in New Issue
Block a user