Patch level : 10.0 322
Files correlati : VE0.exe ve6.exe Ricompilazione Demo : [ ] Commento Fatturazione risorse e attrezzature come prestazioni quando e' indicato un codice prestazione git-svn-id: svn://10.65.10.50/trunk@18969 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
920bf7f880
commit
3ad340e435
@ -219,7 +219,8 @@ const TSpesa_prest & TRiga_documento::spesa() const
|
||||
{
|
||||
const char tipor = tipo().tipo();
|
||||
|
||||
CHECK(tipor == RIGA_SPESEDOC || tipor == RIGA_PRESTAZIONI, "Tipo riga incompatibile con le spese");
|
||||
CHECK(tipor == RIGA_SPESEDOC || tipor == RIGA_PRESTAZIONI ||
|
||||
tipor == RIGA_RISORSE || tipor == RIGA_ATTREZZATURE, "Tipo riga incompatibile con le spese");
|
||||
|
||||
test_firm();
|
||||
|
||||
|
@ -257,6 +257,8 @@ protected:
|
||||
virtual const TString & get_tipo_out(const TDocumento & doc_out) { return get("S8"); }
|
||||
bool change_clifo() { return get_bool("B14"); }
|
||||
virtual bool da_raggruppare(const TRiga_documento & rin) { return true; }
|
||||
virtual void elabora_riga(TRiga_documento& r, TDocumento& doc_out, bool usa_dcons, bool ragg_rig, bool ignora_desc,
|
||||
TToken_string & campi_riga, const TDate & dcons, const TDate & ddoc);
|
||||
|
||||
public:
|
||||
virtual bool raggruppa(TDocumento& din, TDocumento& dout);
|
||||
|
111
ve/velib04a.cpp
111
ve/velib04a.cpp
@ -117,6 +117,71 @@ void TFatturazione_bolle::create_row(TDocumento& doc_out, const TRiga_documento&
|
||||
}
|
||||
}
|
||||
|
||||
void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out, bool usa_dcons, bool ragg_rig, bool ignora_desc,
|
||||
TToken_string & campi_riga, const TDate & dcons, const TDate & ddoc)
|
||||
{
|
||||
TRiga_documento rin(r);
|
||||
|
||||
const bool rindesc = rin.sola_descrizione(); // La riga di input e' descrittiva
|
||||
if (ignora_desc && rindesc)
|
||||
return;
|
||||
if (rin.is_attrezzatura() || rin.is_risorsa())
|
||||
{
|
||||
const TSpesa_prest & risatt = rin.spesa();
|
||||
const TString codprest(risatt.revenue());
|
||||
|
||||
if ( codprest.full())
|
||||
{
|
||||
const TSpesa_prest prest(codprest, RIGA_PRESTAZIONI);
|
||||
rin.put(RDOC_TIPORIGA, "06");
|
||||
rin.put(RDOC_CODART, prest.codice());
|
||||
rin.put(RDOC_DESCR, prest.descrizione());
|
||||
rin.put(RDOC_UMQTA, prest.um());
|
||||
rin.put(RDOC_PREZZO, prest.prezzo());
|
||||
rin.put(RDOC_CODIVA, prest.cod_iva());
|
||||
}
|
||||
}
|
||||
|
||||
if (usa_dcons)
|
||||
{
|
||||
TDate data_cons = rin.get(RDOC_DATACONS);
|
||||
if (!data_cons.ok())
|
||||
data_cons = dcons;
|
||||
if (ddoc < data_cons || rin.get_bool(RDOC_RIGAEVASA))
|
||||
return;
|
||||
|
||||
const real q = rin.get(RDOC_QTA);
|
||||
|
||||
r.put(RDOC_QTAEVASA, q);
|
||||
r.put(RDOC_RIGAEVASA, true);
|
||||
}
|
||||
|
||||
bool elaborata = false;
|
||||
|
||||
// Raggruppo le righe se e' settato il flag 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.physical_rows();
|
||||
for (int o = 1; o <= last; o++) // ... cerca una riga compatibile
|
||||
{
|
||||
TRiga_documento& rout = doc_out[o];
|
||||
if (rout.sola_descrizione()) // Ignora le righe descrittive
|
||||
continue;
|
||||
|
||||
if (da_raggruppare(rin) && rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
|
||||
{
|
||||
add_rows(rout, rin);
|
||||
elaborata = true; // Ricorda di averla gia' elaborata
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!elaborata) // Se la riga non e' stata gia' sommata ...
|
||||
create_row(doc_out, rin);
|
||||
|
||||
}
|
||||
|
||||
bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
{
|
||||
#ifdef DBG
|
||||
@ -273,51 +338,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
const bool ragg_rig = campi_riga.full();
|
||||
|
||||
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
||||
{
|
||||
TRiga_documento & rin = doc_in[r];
|
||||
const bool rindesc = rin.sola_descrizione(); // La riga di input e' descrittiva
|
||||
if (ignora_desc && rindesc)
|
||||
continue;
|
||||
|
||||
if (usa_dcons)
|
||||
{
|
||||
TDate data_cons = rin.get(RDOC_DATACONS);
|
||||
if (!data_cons.ok())
|
||||
data_cons = dcons;
|
||||
if (ddoc < data_cons || rin.get_bool(RDOC_RIGAEVASA))
|
||||
continue;
|
||||
|
||||
const real q = rin.get(RDOC_QTA);
|
||||
|
||||
rin.put(RDOC_QTAEVASA, q);
|
||||
rin.put(RDOC_RIGAEVASA, true);
|
||||
}
|
||||
|
||||
bool elaborata = false;
|
||||
|
||||
// Raggruppo le righe se e' settato il flag 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.physical_rows();
|
||||
for (int o = 1; o <= last; o++) // ... cerca una riga compatibile
|
||||
{
|
||||
TRiga_documento& rout = doc_out[o];
|
||||
if (rout.sola_descrizione()) // Ignora le righe descrittive
|
||||
continue;
|
||||
|
||||
if (da_raggruppare(rin) && rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
|
||||
{
|
||||
add_rows(rout, rin);
|
||||
elaborata = true; // Ricorda di averla gia' elaborata
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!elaborata) // Se la riga non e' stata gia' sommata ...
|
||||
create_row(doc_out, rin);
|
||||
|
||||
}
|
||||
elabora_riga(doc_in[r], doc_out, usa_dcons, ragg_rig, ignora_desc, campi_riga, dcons, ddoc);
|
||||
|
||||
//cambio stato documento
|
||||
bool cambia_stato_doc_in = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user