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:
guy 1998-02-18 09:41:20 +00:00
parent 7a49867232
commit 4d88f8c9d8
5 changed files with 72 additions and 27 deletions

@ -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