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

View File

@ -798,6 +798,15 @@ int TPrimanota_application::read(TMask& m)
solaiva.set(i == 0 ? "X" : " "); solaiva.set(i == 0 ? "X" : " ");
solaiva.on_key(K_TAB); 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); const bool to_swap = test_swap(FALSE);
if (to_swap) if (to_swap)
{ {
@ -928,6 +937,24 @@ void TPrimanota_application::mask2rel(const TMask& m)
if (_iva == nessuna_iva) return; 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()) if (causale().corrispettivi())
{ {
rec.put("TIPO", ""); rec.put("TIPO", "");

View File

@ -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)" WARNING "Inserire un riepilogo non inferiore al protocollo IVA (Obbigatorio se il cliete/fornitore ha codice inserimento in allegati uguale a 3)"
END END
BOOLEAN F_DIFFERITA
BEGIN
PROMPT 54 9 "Liquid. periodo prec."
END
NUMBER F_CLIENTE 6 NUMBER F_CLIENTE 6
BEGIN BEGIN
PROMPT 1 10 "Cliente " PROMPT 1 10 "Cliente "

View File

@ -12,7 +12,7 @@
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
TMovimentoPN::TMovimentoPN() 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_RMOV, "NUMREG=NUMREG");
add(LF_RMOVIVA, "NUMREG=NUMREG"); add(LF_RMOVIVA, "NUMREG=NUMREG");
@ -21,9 +21,9 @@ TMovimentoPN::TMovimentoPN()
void TMovimentoPN::destroy_rows(long num) void TMovimentoPN::destroy_rows(long num)
{ {
_cg.destroy_rows(); _cg.destroy_rows();
_cg.renum_key("NUMREG", num); _cg.renum_key(RMV_NUMREG, num);
_iva.destroy_rows(); _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); const int err = TRelation::read(op, lockop);
if (err == NOERR) if (err == NOERR)
{ {
_olddate = file().get("DATAREG"); // Memorizza data operazione per aggiornare i saldi _olddataliq = file().get(MOV_DATAREG); // Memorizza data liquidazione
read_mov_rows(); // Riempie i due record array 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; return err;
} }
@ -178,16 +185,16 @@ int TMovimentoPN::registra(bool re, bool force)
return err; return err;
const TRectype& m = curr(); const TRectype& m = curr();
const long numreg = m.get_long("NUMREG"); const long numreg = m.get_long(MOV_NUMREG);
if (!re) if (!re)
_cg.renum_key("NUMREG", numreg); _cg.renum_key(MOV_NUMREG, numreg);
err = _cg.write(re); err = _cg.write(re);
if (err != NOERR) if (err != NOERR)
return err; return err;
const int annoiva = m.get_int("ANNOIVA"); const int annoiva = m.get_int(MOV_ANNOIVA);
const TString reg(m.get("REG")); const TString reg(m.get(MOV_REG));
TRegistro registro(reg, annoiva); TRegistro registro(reg, annoiva);
const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista(); const bool att_mista = reg.empty() ? FALSE : registro.attivita_mista();
@ -197,38 +204,46 @@ int TMovimentoPN::registra(bool re, bool force)
int tipoatt = 1; int tipoatt = 1;
if (att_mista) if (att_mista)
{ {
const char tipo = r.get_char("TIPOC"); const char tipo = r.get_char(RMI_TIPOC);
if (tipo <= ' ') 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(); tipoatt = c.tipo_att();
} }
} }
r.put("TIPOATT", tipoatt); r.put(RMI_TIPOATT, tipoatt);
} }
if (!re) if (!re)
_iva.renum_key("NUMREG", numreg); _iva.renum_key(MOV_NUMREG, numreg);
err = _iva.write(re); err = _iva.write(re);
if (err != NOERR) if (err != NOERR)
return err; return err;
// Aggiorna data registrazione e protocollo IVA sul registro // 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()) if (reg.not_empty())
{ {
const long protiva = m.get_long("PROTIVA"); const long protiva = m.get_long(MOV_PROTIVA);
const long uprotiva = m.get_long("UPROTIVA"); const long uprotiva = m.get_long(MOV_UPROTIVA);
const long max = protiva > uprotiva ? protiva : uprotiva; const long max = protiva > uprotiva ? protiva : uprotiva;
registro.update(max, datareg); registro.update(max, datareg);
} }
// Aggiorna flags di ricalcolo liquidazione // Aggiorna flags di ricalcolo liquidazione
controlla_liquidazione(datareg, registro, TRUE); TDate dataliq(datareg);
if (re && datareg != _olddate) const int mese_liq = m.get_int(MOV_MESELIQ);
controlla_liquidazione(_olddate, registro, TRUE); 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; return err;
} }
@ -239,13 +254,11 @@ int TMovimentoPN::write(bool force)
return registra(FALSE, force); return registra(FALSE, force);
} }
int TMovimentoPN::rewrite(bool force) int TMovimentoPN::rewrite(bool force)
{ {
return registra(TRUE, force); return registra(TRUE, force);
} }
int TMovimentoPN::remove() int TMovimentoPN::remove()
{ {
int err = _cg.remove(); int err = _cg.remove();
@ -259,11 +272,10 @@ int TMovimentoPN::remove()
if (err == NOERR) if (err == NOERR)
{ {
const TRectype& m = curr(); const TRectype& m = curr();
const TDate datareg(m.get("DATAREG")); const TString reg(m.get(MOV_REG));
const int annoiva = m.get_int("ANNOIVA"); const int annoiva = m.get_int(MOV_ANNOIVA);
const TString reg(m.get("REG"));
TRegistro registro(reg, annoiva); TRegistro registro(reg, annoiva);
controlla_liquidazione(datareg, registro, TRUE); controlla_liquidazione(_olddataliq, registro, TRUE);
} }
return err; return err;

View File

@ -1,3 +1,3 @@
23 23
0 0
$mov|0|0|339|0|Movimenti di prima nota|NMOV|| $mov|0|0|341|0|Movimenti di prima nota|NMOV||

View File

@ -1,11 +1,12 @@
23 23
39 40
ANNOES|9|4|0|Codice esercizio ANNOES|9|4|0|Codice esercizio
NUMREG|3|7|0|Numero di operazione NUMREG|3|7|0|Numero di operazione
DATAREG|5|8|0|Data operazione DATAREG|5|8|0|Data operazione
DATACOMP|5|8|0|Data competenza DATACOMP|5|8|0|Data competenza
DATADOC|5|8|0|Data documento DATADOC|5|8|0|Data documento
DATA74TER|5|8|0|Data per art. 74 ter DATA74TER|5|8|0|Data per art. 74 ter
MESELIQ|2|2|0|Mese per liquidazione differita
NUMDOC|1|7|0|Numero documento NUMDOC|1|7|0|Numero documento
TIPODOC|1|2|0|Tipo documento TIPODOC|1|2|0|Tipo documento
CODCAUS|1|3|0|Codice causale CODCAUS|1|3|0|Codice causale