diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index 1b140d645..fc55e98ea 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -1371,7 +1371,7 @@ protected: virtual bool get_ini_paragraph(const TEdit_field& field, TString& parag) const; public: - TLink_article_sheet(TCursor& cur, TEdit_field& f); + TLink_article_sheet(TCursor& cur, TEdit_field& f, const char * fieldlist, const char * headers); }; bool TLink_article_sheet::get_ini_paragraph(const TEdit_field& field, TString& parag) const @@ -1382,13 +1382,10 @@ bool TLink_article_sheet::get_ini_paragraph(const TEdit_field& field, TString& p return ok; } -TLink_article_sheet::TLink_article_sheet(TCursor& cur, TEdit_field& f) -: TBrowse_sheet(&cur, "-201->S0|-202->S0|NDOC|33->DATADOC|QTA|QTAEVASA", - TR("Ricerca Prezzi"), - HR("Numerazione@18|Tipo Documento@18|Num.|Data@10|Quantità@15P|Evaso@15P"), - 0, f, TToken_string()) -{ } +TLink_article_sheet::TLink_article_sheet(TCursor& cur, TEdit_field& f, const char * fieldlist, const char * headers) +: TBrowse_sheet(&cur, fieldlist, TR("Evasione"), headers, 0, f, TToken_string()) +{ } bool link_row_handler(TMask_field& f, KEY key ) { @@ -1406,7 +1403,7 @@ bool link_row_handler(TMask_field& f, KEY key ) if ((tipo.search_active_docs().blank()) || (tipo.search_active_docs().find(doc.tipo().codice()) >= 0)) { TEdit_field& ef = (TEdit_field&)f; - const TString& codart = row_mask.get(FR_CODART); + const TCodice_articolo codart(row_mask.get(FR_CODART)); const bool select_clifo = tipo.select_clifo(); if (codart.full() && r.get(RDOC_DACODNUM).empty()) @@ -1468,6 +1465,7 @@ bool link_row_handler(TMask_field& f, KEY key ) filter << ")"; } + TRelation rel(LF_RIGHEDOC); TRectype from(rel.curr()); TRectype to(rel.curr()); @@ -1475,6 +1473,15 @@ bool link_row_handler(TMask_field& f, KEY key ) rel.lfile().set_curr(new TLink_riga_documento(&mask)); rel.add(LF_DOC, "PROVV==PROVV|ANNO=ANNO|CODNUM==CODNUM|NDOC==NDOC"); + + if (select_clifo) + { + filter << "&&(33->TIPOCF==\"" << doc.get(DOC_TIPOCF) << "\")"; + filter << "&&(33->CODCF==\"" << doc.get(DOC_CODCF) << "\")"; + } + else + rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_DOC); + const int last_anno = mask.get_int(F_ANNO); const int first_anno = last_anno - tipo.search_years(); @@ -1489,13 +1496,31 @@ bool link_row_handler(TMask_field& f, KEY key ) to.put(RDOC_CODNUM, last_num); to.put(RDOC_ANNO, last_anno); to.put(RDOC_PROVV, 'D'); - TSorted_cursor cur(&rel, "33->DATADOC|CODNUM|NDOC", filter, 5, &from, &to); + TString order = tipo.order(); + + if (order.blank()) + order ="33->DATADOC|CODNUM|NDOC"; + + TSorted_cursor cur(&rel, order, filter, 5, &from, &to); + cur.items(); cur.freeze(); cur.relation()->add("%NUM", "CODTAB==CODNUM", 1, 0, 201); cur.relation()->add("%TIP", "CODTAB==TIPODOC", 1, LF_DOC, 202); + TToken_string fieldlist = tipo.field_list(); + TToken_string header = tipo.header(); + + if (fieldlist.blank()) + fieldlist = "-201->S0|-202->S0|NDOC|33->DATADOC|QTA|QTAEVASA"; + if (header.blank()) + header = HR("Numerazione@18|Tipo Documento@18|Num.|Data@10|Quantità@15P|Evaso@15P"); - TLink_article_sheet sheet(cur, (TEdit_field&)f); + if (!select_clifo) + { + fieldlist << "|20->CODCF|20->RAGSOC"; + header << HR("|Codice|Ragione sociale@50"); + } + TLink_article_sheet sheet(cur, (TEdit_field&)f, fieldlist, header); sheet.add_string (FR_DESCR, 0, "", 38, 0, 50, "D", 30); sheet.set(FR_CODART, codart); sheet.set(FR_DESCR, cache().get(LF_ANAMAG, codart, "DESCR")); @@ -1512,8 +1537,9 @@ bool link_row_handler(TMask_field& f, KEY key ) father_row.set_doc(&doc); r.put(RDOC_LIVELLO, livello); - r.put(RDOC_QTA, father_row.qtaresidua()); - TToken_string flds = tipo.fields_to_update(); + r.put(r.field_qta(), father_row.qtaresidua()); + + TToken_string & flds = tipo.fields_to_update(); FOR_EACH_TOKEN(flds, fld) {