Patch level : 12.0 890
Files correlati : f90.exe Commento : Corretto caricamento moviementi utilizzando un recordset invece che leggere dal file direttamente: non tutti i moviementi venivano letti
This commit is contained in:
parent
2ebfb34210
commit
06c561dc28
@ -11,6 +11,7 @@
|
||||
#include "f901tab.h"
|
||||
#include "f90100c.h"
|
||||
#include "f90100b.h"
|
||||
#include "sqlset.h"
|
||||
|
||||
/*
|
||||
* - Per aggiornare le tabelle f9 aggiungere nella cartella "sql\f9\" il file sql cosi' fatto:
|
||||
@ -719,53 +720,46 @@ void TF9_app::load()
|
||||
const TDate dataend = get_dataend();
|
||||
const char tipodoc = get_tipodoc();
|
||||
const bool flagpro = is_provviso();
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
|
||||
mov.setkey(2);
|
||||
mov.put(MOV_DATAREG, dataini);
|
||||
int items = 0;
|
||||
TDate datareg;
|
||||
for (bool ok = mov.read(); ok && (datareg = mov.get_date(MOV_DATAREG)) >= dataini && datareg <= dataend; ok = mov.next() == NOERR)
|
||||
items++;
|
||||
|
||||
TString query; query << "SELECT * FROM MOV WHERE DATAREG>=" << dataini.date2ansi() << " AND DATAREG<=" << dataend.date2ansi() << ";";
|
||||
TSQL_recordset mov(query);
|
||||
int items = mov.items();
|
||||
|
||||
TProgress_monitor progr(items, "Acquisizione movimenti");
|
||||
int i = 0;
|
||||
mov.zero();
|
||||
mov.setkey(2);
|
||||
mov.put(MOV_DATAREG, dataini);
|
||||
const TipoIVA tipo = tipodoc == 'A' ? iva_acquisti : iva_vendite;
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
|
||||
|
||||
// Prendo tutti i movimenti a partire da una data e li carico tutti fino alla data finale
|
||||
_movs.clear();
|
||||
for (bool ok = mov.read(); ok && (datareg = mov.get_date(MOV_DATAREG)) >= dataini && datareg <= dataend; ok = mov.next() == NOERR)
|
||||
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
|
||||
{
|
||||
if (!progr.add_status())
|
||||
break;
|
||||
TToken_string elab_f9(mov.get(MOV_ELABF9), ';');
|
||||
|
||||
// Se definitivo controllo il flag di stampato REGST
|
||||
TCausale caus(mov.get(MOV_CODCAUS));
|
||||
if ((flagpro || mov.get_bool(MOV_REGST)) && mov.get(MOV_NUMDOC).full() && caus.reg().iva() == tipo
|
||||
TToken_string elab_f9(recset_get_string(mov, MOV_ELABF9), ';');
|
||||
TCausale caus(recset_get_string(mov, MOV_CODCAUS, 3));
|
||||
// Se definitivo controllo il flag di stampato REGST
|
||||
if ((flagpro || recset_get_bool(mov, MOV_REGST)) && recset_get_string(mov, MOV_NUMDOC).full() && caus.reg().iva() == tipo
|
||||
&& (elab_f9.items() == 3 && elab_f9.get(2)[0] != 'X' || elab_f9.empty())) // Controllo che non sia escluso
|
||||
{
|
||||
TToken_string t("", '|');
|
||||
t.add("");
|
||||
t.add(mov.get(MOV_NUMREG));
|
||||
t.add(mov.get(MOV_DATAREG));
|
||||
t.add(mov.get(MOV_DATADOC));
|
||||
t.add(mov.get(MOV_CODCAUS));
|
||||
t.add(mov.get(MOV_MESELIQ));
|
||||
t.add(mov.get(MOV_NUMDOC));
|
||||
const real tot = mov.get_real(MOV_TOTDOC) + mov.get_real(MOV_RITFIS) + mov.get_real(MOV_RITSOC);
|
||||
t.add(recset_get_string(mov, MOV_NUMREG));
|
||||
t.add(recset_get_string(mov, MOV_DATAREG));
|
||||
t.add(recset_get_string(mov, MOV_DATADOC));
|
||||
t.add(recset_get_string(mov, MOV_CODCAUS));
|
||||
t.add(recset_get_string(mov, MOV_MESELIQ));
|
||||
t.add(recset_get_string(mov, MOV_NUMDOC));
|
||||
const real tot = recset_get_real(mov, MOV_TOTDOC) + recset_get_real(mov, MOV_RITFIS) + recset_get_real(mov, MOV_RITSOC);
|
||||
t.add(tot);
|
||||
t.add(mov.get(MOV_CODCF));
|
||||
t.add(recset_get_string(mov, MOV_CODCF));
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, "F");
|
||||
clifo.put(CLI_CODCF, mov.get(MOV_CODCF));
|
||||
clifo.put(CLI_TIPOCF, tipo == iva_acquisti ? "F" : "C");
|
||||
clifo.put(CLI_CODCF, recset_get_string(mov, MOV_CODCF));
|
||||
t.add(clifo.read() == NOERR ? clifo.get(CLI_RAGSOC) : " ");
|
||||
t.add(TString(mov.get(MOV_REG)) << "/" << mov.get(MOV_PROTIVA));
|
||||
t.add(mov.get(MOV_DESCR));
|
||||
t.add(TString(recset_get_string(mov, MOV_REG)) << "/" << recset_get_string(mov, MOV_PROTIVA));
|
||||
t.add(recset_get_string(mov, MOV_DESCR));
|
||||
_movs.insert(_movs.end(), t);
|
||||
i++;
|
||||
}
|
||||
@ -1707,4 +1701,28 @@ TControllo_mask::TControllo_mask(const char* id_estr, bool esclusi) : TAutomask(
|
||||
|
||||
// Fill controllo sheet
|
||||
fill();
|
||||
}
|
||||
|
||||
const TString& recset_get_string(const TRecordset& rec, const char* field, const int zero_filled)
|
||||
{
|
||||
const TString& str = rec.get(rec.find_column(field)).as_string();
|
||||
if (zero_filled == -1)
|
||||
return str;
|
||||
static TString c;
|
||||
c.cut(0);
|
||||
const int len = str.len();
|
||||
for (int i = len; i < zero_filled; i++) // Sistemo il codcaus per via del TVariant che non restituisce la stringa esattamente come l'originale
|
||||
c << "0";
|
||||
c << str;
|
||||
return c;
|
||||
}
|
||||
|
||||
bool recset_get_bool(const TRecordset& rec, const char* field)
|
||||
{
|
||||
return rec.get(rec.find_column(field)).as_bool();
|
||||
}
|
||||
|
||||
real recset_get_real(const TRecordset& rec, const char* field)
|
||||
{
|
||||
return rec.get(rec.find_column(field)).as_real();
|
||||
}
|
@ -244,4 +244,10 @@ inline bool open_mov(const TRectype& mov)
|
||||
}
|
||||
xvt_fsys_remove_file(ininame);
|
||||
return ok;
|
||||
}
|
||||
}
|
||||
|
||||
// Getters per semplificare i get dai TRecorset
|
||||
|
||||
const TString& recset_get_string(const TRecordset& rec, const char* field, int zero_filled = -1);
|
||||
bool recset_get_bool(const TRecordset& rec, const char* field);
|
||||
real recset_get_real(const TRecordset& rec, const char* field);
|
||||
|
Loading…
x
Reference in New Issue
Block a user