Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@20611 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4606bde1e0
commit
b93d973499
@ -130,6 +130,18 @@ void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out,
|
||||
if (rin.is_attrezzatura() || rin.is_risorsa())
|
||||
rin.cost2revenue();
|
||||
|
||||
const bool delete_spese_aut = r.doc().tipo().spese_aut() && doc_out.rows() > 0;
|
||||
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')
|
||||
return;
|
||||
}
|
||||
} //if(delete_spese_aut)..
|
||||
|
||||
if (usa_dcons)
|
||||
{
|
||||
TDate data_cons = rin.get(RDOC_DATACONS);
|
||||
@ -185,14 +197,11 @@ 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)
|
||||
{
|
||||
bool da_elaborare = FALSE;
|
||||
@ -205,9 +214,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
}
|
||||
if (!da_elaborare)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//***vecchio posto cambio stato
|
||||
}
|
||||
|
||||
if (gestione_riferimenti())
|
||||
{
|
||||
@ -226,8 +233,8 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
rout.forza_sola_descrizione();
|
||||
rout.put(RDOC_DESCR, dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //if(indsped)...
|
||||
} //if(change_clifo)...
|
||||
|
||||
// Determina ed eventualmente crea la riga di riferimento
|
||||
const bool rif_testa = riferimenti_in_testa();
|
||||
@ -293,7 +300,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
rout.put(RDOC_DESCLUNGA, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
else //else if(rif_packed)...
|
||||
{
|
||||
if (rout.get(RDOC_DESCR).empty())
|
||||
rout.put(RDOC_DESCR, riferimento);
|
||||
@ -306,59 +313,15 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
memo << '\n' << riferimento;
|
||||
rout.put(RDOC_DESCEST, memo);
|
||||
}
|
||||
}
|
||||
}
|
||||
} //if(rif_packed)..
|
||||
} //if(gestione_riferimenti)...
|
||||
|
||||
const bool ignora_desc = ignora_descrizioni() && !doc_in.clifor().vendite().get_bool(CFV_RIFDOC);;
|
||||
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 (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)
|
||||
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
|
||||
@ -386,7 +349,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
||||
if (usa_dcons)
|
||||
doc_in.rewrite();
|
||||
|
||||
return TRUE;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||
|
@ -1514,7 +1514,7 @@ error_type TContabilizzazione::compile_head_mov_re(TDocumento& doc)
|
||||
if (!short_rif)
|
||||
{
|
||||
doc.riferimento(descr);
|
||||
if (descr.empty()) descr = tipo.descrizione();
|
||||
if (descr.empty()) descr = doc.tipo().descrizione();
|
||||
if (descr.full())
|
||||
descr << ' ';
|
||||
}
|
||||
|
164
ve/velib04d.cpp
164
ve/velib04d.cpp
@ -19,7 +19,7 @@ protected:
|
||||
public:
|
||||
void doc2mask(const TDocumento& doc, const TString & articolo);
|
||||
|
||||
TConsegna_mask(int header_code = 0, bool per_codice = false, bool ignora_descrizioni = false);
|
||||
TConsegna_mask(TConfig & c,int header_code = 0, bool per_codice = false, bool ignora_descrizioni = false);
|
||||
virtual ~TConsegna_mask() { }
|
||||
};
|
||||
|
||||
@ -169,6 +169,7 @@ void TConsegna_mask::doc2mask(const TDocumento& doc, const TString & articolo)
|
||||
TSheet_field& s = sfield(F_ROWS);
|
||||
s.destroy();
|
||||
const int rows = doc.physical_rows();
|
||||
int rowno = 0;
|
||||
for (int i = 0; i < rows; i++)
|
||||
{
|
||||
const TRiga_documento& rec = doc[i+1];
|
||||
@ -189,8 +190,8 @@ void TConsegna_mask::doc2mask(const TDocumento& doc, const TString & articolo)
|
||||
r.add(" "); // Da evadere
|
||||
if (evasa)
|
||||
{
|
||||
s.disable_cell(i, -1); // Disbilita tutta la riga ...
|
||||
s.enable_cell(i, 0); // ... tranne il flag di consegna
|
||||
s.disable_cell(rowno, -1); // Disbilita tutta la riga ...
|
||||
s.enable_cell(rowno, 0); // ... tranne il flag di consegna
|
||||
r.add("X"); // La considera evasa
|
||||
}
|
||||
else
|
||||
@ -211,13 +212,14 @@ void TConsegna_mask::doc2mask(const TDocumento& doc, const TString & articolo)
|
||||
r.add(rec.get(RDOC_NRIGA),s.cid2index(S_NUMRIGA));
|
||||
r.add(rec.get(RDOC_CODAGG1),s.cid2index(S_CODAGG1));
|
||||
r.add(rec.get(RDOC_CODAGG2),s.cid2index(S_CODAGG2));
|
||||
rowno++;
|
||||
}
|
||||
}
|
||||
if (_ordina_per_codice)
|
||||
s.sort(rows_sort_func);
|
||||
}
|
||||
|
||||
TConsegna_mask::TConsegna_mask(int header_code, bool per_codice, bool ignora_descrizioni)
|
||||
TConsegna_mask::TConsegna_mask(TConfig & c, int header_code, bool per_codice, bool ignora_descrizioni)
|
||||
: TAutomask("velib04d") , _ordina_per_codice(per_codice), _doc(NULL),
|
||||
_ignora_descrizioni(ignora_descrizioni)
|
||||
{
|
||||
@ -248,8 +250,6 @@ TConsegna_mask::TConsegna_mask(int header_code, bool per_codice, bool ignora_des
|
||||
s.sheet_mask().field(S_QTADAEVADERE).set_prompt("Da evadere ");
|
||||
}
|
||||
|
||||
TConfig c(CONFIG_DITTA, "ve");
|
||||
|
||||
if (c.exist("CODAGG1"))
|
||||
{
|
||||
TString80 codagg1 = c.get("CODAGG1");
|
||||
@ -327,7 +327,9 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
|
||||
const int header_code = intestazioni_sheet();
|
||||
|
||||
TConsegna_mask m(header_code, ordina_per_codice(), get_bool("B3"));
|
||||
TConfig c(CONFIG_DITTA, "ve");
|
||||
const bool ordina_per_doc = c.get_bool("ORDINA_PER_DOC", "ve", -1, true);
|
||||
TConsegna_mask m(c, header_code, ordina_per_codice(), get_bool("B3"));
|
||||
|
||||
const int items_max = items_in > items_out ? items_in : items_out;
|
||||
|
||||
@ -362,39 +364,27 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
if (rout.get_bool(RDOC_DESCLUNGA))
|
||||
memo << rout.get(RDOC_DESCEST);
|
||||
// Costruisce la stringa di riferimento
|
||||
TString riferimento;
|
||||
indoc.riferimento(riferimento);
|
||||
if (riferimento.empty())
|
||||
riferimento = indoc.tipo().descrizione();
|
||||
TString80 nrif = indoc.get(DOC_NUMDOCRIF);
|
||||
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC1);
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC2);
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC3);
|
||||
if (usa_doc_rif() && nrif.full())
|
||||
{
|
||||
riferimento << " n. " << nrif;
|
||||
riferimento << " del " << indoc.get(DOC_DATADOCRIF);
|
||||
}
|
||||
else
|
||||
{
|
||||
riferimento << " n. " << indoc.numero();
|
||||
riferimento << " del " << indoc.data().string();
|
||||
}
|
||||
if (memo.full())
|
||||
memo << '\n';
|
||||
memo << riferimento;
|
||||
|
||||
TString rifrow(indoc.tipo().descrizione());
|
||||
TString rifext;
|
||||
|
||||
indoc.riferimento(rifext);
|
||||
|
||||
const int posrif = rifext.find("[RIF]");
|
||||
|
||||
if (rifext.full() && posrif < 0)
|
||||
{
|
||||
rifrow = rifext;
|
||||
rifext.cut(0);
|
||||
}
|
||||
|
||||
const TString4 numrif = num_riferimenti_in();
|
||||
|
||||
if (numrif.full())
|
||||
{
|
||||
riferimento.cut(0);
|
||||
{
|
||||
TSheet_field& s = m.sfield(F_ROWS);
|
||||
TAssoc_array doc_rows;
|
||||
TString riferimenti;
|
||||
|
||||
FOR_EACH_SHEET_ROW(s, n, row)
|
||||
{
|
||||
@ -451,35 +441,71 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
rif << " n. " << d.numero();
|
||||
rif << " del " << d.data().string();
|
||||
}
|
||||
riferimento << rif << '\n';
|
||||
}
|
||||
if (riferimenti.full())
|
||||
riferimenti << '\n';
|
||||
riferimenti << rif; }
|
||||
doc_rows.add(doc_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
memo.insert(riferimento);
|
||||
}
|
||||
memo.insert(riferimenti);
|
||||
}
|
||||
TString80 nrif = indoc.get(DOC_NUMDOCRIF);
|
||||
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC1);
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC2);
|
||||
if (nrif.blank())
|
||||
nrif = indoc.get(DOC_DOC3);
|
||||
if (usa_doc_rif() && nrif.full())
|
||||
{
|
||||
rifrow << " n. " << nrif;
|
||||
rifrow << " del " << indoc.get(DOC_DATADOCRIF);
|
||||
}
|
||||
else
|
||||
{
|
||||
rifrow << " n. " << indoc.numero();
|
||||
rifrow << " del " << indoc.data().string();
|
||||
}
|
||||
if (memo.full())
|
||||
memo << '\n';
|
||||
if (rifext.blank())
|
||||
memo << rifrow;
|
||||
else
|
||||
{
|
||||
if (posrif >= 0)
|
||||
{
|
||||
int i ;
|
||||
|
||||
for (i = 0; rifext[posrif + i + 5] != '\0'; i++)
|
||||
rifext[posrif + i] = rifext[posrif + i + 5];
|
||||
rifext[posrif + i] = '\0';
|
||||
rifext.insert(rifrow, posrif);
|
||||
}
|
||||
memo << rifext;
|
||||
}
|
||||
rout.put(RDOC_DESCLUNGA, memo.len() > 50);
|
||||
rout.put(RDOC_DESCR, memo.left(50));
|
||||
rout.put(RDOC_DESCEST, memo.mid(50));
|
||||
rout.put("RIFR", "X");
|
||||
}
|
||||
|
||||
|
||||
TToken_string campi_riga(80);
|
||||
const bool ragg_rig = raggruppa_righe();
|
||||
|
||||
if (ragg_rig)
|
||||
{
|
||||
campi_riga = "CODART|LIVELLO|UMQTA"; // Uguali sempre
|
||||
// Uguali opzionalmente
|
||||
if (riga_uguale(0)) campi_riga.add("CODMAG");
|
||||
if (riga_uguale(1)) campi_riga.add("CODIVA");
|
||||
if (riga_uguale(2)) campi_riga.add("PREZZO|SCONTO");
|
||||
}
|
||||
rout.put(RDOC_DESCLUNGA, memo.len() > 50);
|
||||
rout.put(RDOC_DESCR, memo.left(50));
|
||||
rout.put(RDOC_DESCEST, memo.mid(50));
|
||||
}
|
||||
|
||||
|
||||
TToken_string campi_riga(80);
|
||||
const bool ragg_rig = raggruppa_righe();
|
||||
|
||||
if (ragg_rig)
|
||||
{
|
||||
campi_riga = "CODART|LIVELLO|UMQTA"; // Uguali sempre
|
||||
// Uguali opzionalmente
|
||||
if (riga_uguale(0)) campi_riga.add("CODMAG");
|
||||
if (riga_uguale(1)) campi_riga.add("CODIVA");
|
||||
if (riga_uguale(2)) campi_riga.add("PREZZO|SCONTO");
|
||||
}
|
||||
|
||||
const bool evadi = outdoc.tipo().da_evadere();
|
||||
|
||||
const bool evadi = outdoc.tipo().da_evadere();
|
||||
TAssoc_array scarti;
|
||||
|
||||
TSheet_field& s = m.sfield(F_ROWS);
|
||||
@ -490,7 +516,7 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
{
|
||||
TRiga_documento& inrec = indoc[r];
|
||||
const real daeva = row->get(S_QTADAEVADERE - FIRST_FIELD);
|
||||
const bool eva = row->get_char(S_RIGAEVASA-FIRST_FIELD) > ' ';
|
||||
const bool eva = row->get_char(S_RIGAEVASA - FIRST_FIELD) > ' ';
|
||||
if (evadi && (daeva > ZERO || eva))
|
||||
{
|
||||
const char* fqe = inrec.field_qtaevasa();
|
||||
@ -562,16 +588,20 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
if (!elaborata) // Se la riga non e' stata gia' sommata ...
|
||||
{
|
||||
int j = outdoc.physical_rows();
|
||||
TToken_string key = inrec.get_rdoc_key();
|
||||
|
||||
key.add("",4);
|
||||
for (; j >= 1; j--)
|
||||
{
|
||||
TToken_string keyrow = outdoc[j].get_original_rdoc_key();
|
||||
keyrow.add("",4);
|
||||
if (ordina_per_doc)
|
||||
{
|
||||
TToken_string key = inrec.get_rdoc_key();
|
||||
|
||||
if (key == keyrow)
|
||||
break;
|
||||
key.add("",4);
|
||||
for (; j >= 1; j--)
|
||||
{
|
||||
TToken_string keyrow = outdoc[j].get_original_rdoc_key();
|
||||
keyrow.add("",4);
|
||||
|
||||
if (key == keyrow)
|
||||
break;
|
||||
}
|
||||
}
|
||||
const TString4 tiporiga = inrec.get(RDOC_TIPORIGA);
|
||||
TRiga_documento& outrec = j < 1 || j >= outdoc.physical_rows() ? outdoc.new_row(tiporiga) : outdoc.insert_row(j + 1, tiporiga);
|
||||
@ -634,7 +664,7 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
}
|
||||
}
|
||||
const int last_row = outdoc.physical_rows();
|
||||
if (gestione_riferimenti() && j > 0 && last_row > 0 && outdoc[last_row].tipo().tipo() == RIGA_DESCRIZIONI)
|
||||
if (gestione_riferimenti() && j > 0 && last_row > 0 && outdoc[last_row].tipo().tipo() == RIGA_DESCRIZIONI && outdoc[last_row].get("RIFR").full())
|
||||
outdoc.destroy_row(last_row, true);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user