Patch level : 10.0 patch 767

Files correlati     :  ve0.exe ve6.exe
Ricompilazione Demo : [ ]
Commento            :

eliminazione delle spese automatiche in percentuale quando es . raggruppo due bolle e le fatture hanno le spese auomatiche

Dalla versione 3.2


git-svn-id: svn://10.65.10.50/trunk@20603 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-06-21 14:30:52 +00:00
parent bdb6ad2ede
commit 9cb40ee383

View File

@ -1,3 +1,4 @@
#include <cfven.h>
#include "velib04.h"
#include <dongle.h>
@ -167,7 +168,7 @@ void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out,
}
bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
{
{
#ifdef DBG
const TString4 tipodoc = doc_in.tipo().codice();
int i;
@ -184,10 +185,13 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
}
#endif
// TTipo_documento tf(tipo_finale());
const TDate dcons = doc_in.get_date(DOC_DATACONS);
const TDate ddoc = doc_out.get_date(DOC_DATADOC);
const bool usa_dcons = usa_data_consegna();
const int doc_out_rows = doc_out.physical_rows();
const bool delete_spese_aut = doc_in.tipo().spese_aut() && doc_out_rows() > 0;
if (usa_dcons)
{
@ -305,12 +309,56 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
}
}
const bool ignora_desc = ignora_descrizioni();
const bool ignora_desc = ignora_descrizioni() && !doc_in.clifor().vendite().get_bool(CFV_RIFDOC);;
TToken_string campi_riga(80);
campi_raggruppamento_righe(campi_riga);
const bool ragg_rig = campi_riga.full();
FOR_EACH_PHYSICAL_RDOC(doc_in, r, rin)
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 (delete_spese_aut)
{
if (rin.is_generata() && rin.get("GENTIPO").empty() && rin.is_spese())
{
const TSpesa_prest & sp = rin.spesa();
if (sp.tipo() == 'P')
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 TString& 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;
FOR_EACH_PHYSICAL_RDOC(doc_in, r, rin)
elabora_riga(*rin, doc_out, usa_dcons, ragg_rig, ignora_desc, campi_riga, dcons, ddoc);
//cambio stato documento