Praticamente finita la fatturazione bolle.
git-svn-id: svn://10.65.10.50/trunk@3407 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
75c1edeb04
commit
c37ca11dcf
@ -71,7 +71,7 @@ bool TFatturazione_bolle_app::menu(MENU_TAG)
|
|||||||
{
|
{
|
||||||
TLista_documenti din, dout;
|
TLista_documenti din, dout;
|
||||||
din.read('C', clienti[c], anno, dd, ad, codnum, dn, an);
|
din.read('C', clienti[c], anno, dd, ad, codnum, dn, an);
|
||||||
const bool ok = eld.elabora(din, dout);
|
const bool ok = eld.elabora(din, dout, data_elab);
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
din.rewrite();
|
din.rewrite();
|
||||||
|
@ -185,13 +185,19 @@ void TDocumento::set_key(TRectype& rec, char provv, int anno, const char* codnum
|
|||||||
|
|
||||||
// Funzione statica utile a tutti gli utenti di LF_DOC e LF_RIGHEDOC
|
// Funzione statica utile a tutti gli utenti di LF_DOC e LF_RIGHEDOC
|
||||||
void TDocumento::copy_data(TRectype& dst, const TRectype& src)
|
void TDocumento::copy_data(TRectype& dst, const TRectype& src)
|
||||||
{
|
{
|
||||||
|
// Memorizza tutti i campi chiave
|
||||||
const char provv = dst.get_char("PROVV");
|
const char provv = dst.get_char("PROVV");
|
||||||
const int anno = dst.get_int("ANNO");
|
const int anno = dst.get_int("ANNO");
|
||||||
const TString16 codnum = dst.get("CODNUM");
|
const TString16 codnum = dst.get("CODNUM");
|
||||||
const long numdoc = dst.get_long("NDOC");
|
const long numdoc = dst.get_long("NDOC");
|
||||||
dst = src;
|
const int nriga = dst.num() == LF_RIGHEDOC ? dst.get_int("NRIGA") : 0;
|
||||||
|
// Copia tutto il record
|
||||||
|
dst = src;
|
||||||
|
// Ripristina tutti i campi chiave
|
||||||
set_key(dst, provv, anno, codnum, numdoc);
|
set_key(dst, provv, anno, codnum, numdoc);
|
||||||
|
if (nriga > 0)
|
||||||
|
dst.put("NRIGA", nriga);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -238,12 +244,12 @@ int TDocumento::write(bool re) const
|
|||||||
if (re)
|
if (re)
|
||||||
{
|
{
|
||||||
err = _rows.write(re);
|
err = _rows.write(re);
|
||||||
if (err != NOERR)
|
if (err == NOERR)
|
||||||
{
|
{
|
||||||
err = TRectype::rewrite(doc);
|
err = TRectype::rewrite(doc);
|
||||||
if (err != NOERR)
|
if (err != NOERR)
|
||||||
err = TRectype::write(doc);
|
err = TRectype::write(doc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -675,17 +681,21 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
for (int r = 1; r <= doc_in.rows(); r++)
|
for (int r = 1; r <= doc_in.rows(); r++)
|
||||||
{
|
{
|
||||||
const TRiga_documento& rin = doc_in[r];
|
const TRiga_documento& rin = doc_in[r];
|
||||||
if (ignora_desc && rin.solo_descrizione())
|
const bool rindesc = rin.solo_descrizione(); // La riga di input e' descrittiva
|
||||||
|
if (ignora_desc && rindesc)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool elaborata = FALSE;
|
bool elaborata = FALSE;
|
||||||
if (ragg_rig) // Se devo raggruppare le righe ...
|
|
||||||
|
// Raggruppo le righe se e' settato il falg di raggruppamento e
|
||||||
|
// se la riga non contiene solo una descrizione
|
||||||
|
if (ragg_rig && !rindesc) // Se devo raggruppare le righe ...
|
||||||
{
|
{
|
||||||
const int last = doc_out.rows();
|
const int last = doc_out.rows();
|
||||||
for (int o = 1; o <= last; o++) // ... cerca una riga compatibile
|
for (int o = 1; o <= last; o++) // ... cerca una riga compatibile
|
||||||
{
|
{
|
||||||
TRiga_documento& rout = doc_out[o];
|
TRiga_documento& rout = doc_out[o];
|
||||||
if (rout.solo_descrizione())
|
if (rout.solo_descrizione()) // Ignora le righe descrittive
|
||||||
continue;
|
continue;
|
||||||
if (rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
|
if (rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
|
||||||
{
|
{
|
||||||
@ -705,7 +715,8 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out)
|
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||||
|
const TDate& data_elab)
|
||||||
{
|
{
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
|
|
||||||
@ -724,7 +735,8 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
|||||||
{
|
{
|
||||||
TDocumento& campione = doc_in[id];
|
TDocumento& campione = doc_in[id];
|
||||||
const int tot = doc_out.items();
|
const int tot = doc_out.items();
|
||||||
int od = tot;
|
int od = tot;
|
||||||
|
|
||||||
if (campione.raggruppabile()) // Se il documento ha il flag di raggruppabilita' ...
|
if (campione.raggruppabile()) // Se il documento ha il flag di raggruppabilita' ...
|
||||||
{
|
{
|
||||||
for (od = 0; od < tot; od++) // ... cerca un documento compatibile.
|
for (od = 0; od < tot; od++) // ... cerca un documento compatibile.
|
||||||
@ -741,10 +753,14 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
|||||||
TDocumento* new_doc = new TDocumento(provv, anno, codnum, -1);
|
TDocumento* new_doc = new TDocumento(provv, anno, codnum, -1);
|
||||||
// Copia i dati della testata
|
// Copia i dati della testata
|
||||||
TDocumento::copy_data(new_doc->head(), campione.head());
|
TDocumento::copy_data(new_doc->head(), campione.head());
|
||||||
|
|
||||||
|
new_doc->put("DATADOC", data_elab);
|
||||||
|
|
||||||
// Aggiungilo alla lista dei documenti in uscita
|
// Aggiungilo alla lista dei documenti in uscita
|
||||||
od = doc_out.add(new_doc);
|
od = doc_out.add(new_doc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ok = raggruppa(campione, doc_out[od]);
|
ok = raggruppa(campione, doc_out[od]);
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,8 @@ public:
|
|||||||
char tipo_numerazione() const { return get_bool("B4") ? 'P' : 'D'; }
|
char tipo_numerazione() const { return get_bool("B4") ? 'P' : 'D'; }
|
||||||
const TString& codice_numerazione_finale() const { return get("S6"); }
|
const TString& codice_numerazione_finale() const { return get("S6"); }
|
||||||
|
|
||||||
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out) pure;
|
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||||
|
const TDate& data_elab) pure;
|
||||||
|
|
||||||
TElaborazione(const char* cod);
|
TElaborazione(const char* cod);
|
||||||
TElaborazione(const TRectype& rec) : TRectype(rec) { }
|
TElaborazione(const TRectype& rec) : TRectype(rec) { }
|
||||||
@ -230,7 +231,8 @@ class TFatturazione_bolle : public TElaborazione
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual bool raggruppa(TDocumento& din, TDocumento& dout);
|
virtual bool raggruppa(TDocumento& din, TDocumento& dout);
|
||||||
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out);
|
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||||
|
const TDate& data_elab);
|
||||||
|
|
||||||
TFatturazione_bolle(const char* cod) : TElaborazione(cod) { }
|
TFatturazione_bolle(const char* cod) : TElaborazione(cod) { }
|
||||||
virtual ~TFatturazione_bolle() { }
|
virtual ~TFatturazione_bolle() { }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user