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();
|
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();
|
test_firm();
|
||||||
|
|
||||||
|
@ -257,6 +257,8 @@ protected:
|
|||||||
virtual const TString & get_tipo_out(const TDocumento & doc_out) { return get("S8"); }
|
virtual const TString & get_tipo_out(const TDocumento & doc_out) { return get("S8"); }
|
||||||
bool change_clifo() { return get_bool("B14"); }
|
bool change_clifo() { return get_bool("B14"); }
|
||||||
virtual bool da_raggruppare(const TRiga_documento & rin) { return true; }
|
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:
|
public:
|
||||||
virtual bool raggruppa(TDocumento& din, TDocumento& dout);
|
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)
|
bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
@ -273,51 +338,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
const bool ragg_rig = campi_riga.full();
|
const bool ragg_rig = campi_riga.full();
|
||||||
|
|
||||||
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
||||||
{
|
elabora_riga(doc_in[r], doc_out, usa_dcons, ragg_rig, ignora_desc, campi_riga, dcons, ddoc);
|
||||||
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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//cambio stato documento
|
//cambio stato documento
|
||||||
bool cambia_stato_doc_in = true;
|
bool cambia_stato_doc_in = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user