diff --git a/lv/lv2500.cpp b/lv/lv2500.cpp index 5da7c1855..506d6c353 100755 --- a/lv/lv2500.cpp +++ b/lv/lv2500.cpp @@ -19,12 +19,13 @@ class TFatturazione_lavanderie:public TFatturazione_bolle TDate _data_elab; protected: - virtual void add_rows(TRiga_documento & rout, TRiga_documento & rin); - virtual void create_row(TDocumento& doc_out, const TRiga_documento & rin); + virtual void add_rows(TRiga_documento & rout, TRiga_documento & rin); + virtual void create_row(TDocumento& doc_out, const TRiga_documento & rin); virtual void pre_process_input(TLista_documenti& doc_in) {} virtual void post_process_input(TLista_documenti& doc_out) {} virtual void post_process_output(TLista_documenti& doc_out); virtual bool da_raggruppare(const TRiga_documento & rin); + virtual bool doc_raggruppabili(const TDocumento& doc_in, const TDocumento& doc_out, TToken_string& campi) const ; virtual bool doc_raggruppabile(const TDocumento & doc) const { return true; } virtual bool gestione_riferimenti() const { return true; } virtual bool riferimenti_in_testa() const { return true; } @@ -44,6 +45,29 @@ TFatturazione_lavanderie::TFatturazione_lavanderie(const char* cod) { } +bool TFatturazione_lavanderie::doc_raggruppabili(const TDocumento& doc_in, const TDocumento& doc_out, TToken_string& campi) const +{ + if (doc_in.ha_riga_esenzione() != doc_out.ha_riga_esenzione()) + return false; + bool ok = true; + TString campo; + + for (const char* c = campi.get(0); c && ok; c = campi.get()) + { + if (strncmp(c, "CODABI", 6) == 0 || strncmp(c, "CODCAB", 6) == 0) + { + long cod = doc_in.get_long(c); + ok &= (cod == doc_out.get_long(c)); + } + else + { + campo = doc_in.get(c); + ok &= campo == doc_out.get(c); + } + } + return ok; +} + bool TFatturazione_lavanderie::da_raggruppare(const TRiga_documento & rin) { /* const long clifo = rin.doc().get_long(DOC_CODCF); @@ -330,18 +354,31 @@ void TFatturazione_lav_app::main_loop() while (msk.run()!=K_QUIT) { TString query; - query << "USE DOC KEY 3 SELECT (TIPOCF==\"C\")&&(BETWEEN(DATADOC,#DADATA,#ADATA))&&(STATO=2)&&(TIPODOC==\"B01\")\n" - << "BY TIPOCF CODCF DATADOC\n" + query << "USE DOC KEY 3 SELECT (TIPOCF==\"C\")&&(BETWEEN(DATADOC,#DADATA,#ADATA))&&(STATO==\"2\")&&(TIPODOC==\"B01\")\n" + << "BY TIPOCF CODCF DATADOC\n" << "FROM " << "DATADOC=#DADATA PROVV=D ANNO=#ANNO\n" << "TO " << " DATADOC=#ADATA PROVV=D ANNO=#ANNO\n"; -// query << "USE DOC KEY 2 SELECT BETWEEN(DATADOC,#DADATA,#ADATA)\n" +// query << "USE DOC KEY 2 SELECT BETWEEN(DATADOC,#DADATA,#ADATA)&&STATO==\"2\")&&(TIPODOC==\"B01\")\n" // << "FROM " << "TIPOCF=C PROVV=D ANNO=#ANNO DATADOC=#DADATA \n" // << "TO " << "TIPOCF=C PROVV=D ANNO=#ANNO DATADOC=#ADATA \n"; TISAM_recordset recset(query); - recset.set_var("#DADATA",msk.get_date(F_DADATA)); - recset.set_var("#ADATA",msk.get_date(F_ADATA)); - recset.set_var("#ANNO",long(msk.get_date(F_ADATA).year())); + TDate al = msk.get_date(F_ADATA); + + if (!al.ok()) + al = msk.get_date(F_DATAFAT); + TDate dal = msk.get_date(F_DADATA); + const long year = al.year(); + + if (!dal.ok()) + { + dal.set_day(1); + dal.set_month(1); + dal.set_year(year); + } + recset.set_var("#DADATA", dal); + recset.set_var("#ADATA", al); + recset.set_var("#ANNO", year); TFatturazione_lavanderie elab(msk.get(F_COD_ELAB)); TLista_documenti docsin; diff --git a/lv/lv2500a.uml b/lv/lv2500a.uml index d96bf32a1..672c1bbac 100755 --- a/lv/lv2500a.uml +++ b/lv/lv2500a.uml @@ -10,12 +10,13 @@ PAGE "Fatturazione" -1 -1 40 5 DATE F_DADATA BEGIN PROMPT 2 1 "Fattura dal " + FLAGS "H" END DATE F_ADATA BEGIN PROMPT 45 1 "al " - FLAGS "A" + FLAGS "H" END DATE F_DATAFAT @@ -27,7 +28,7 @@ END STRING F_CODCATC 2 BEGIN - PROMPT 43 3 "Codice Categoria economica " + PROMPT 2 3 "Codice Categoria economica " FIELD LF_CFVEN->CODCATC USE CCO INPUT CODTAB F_CODCATC