From b7b44916a520a0a2f0f0e87d2c8804411b618200 Mon Sep 17 00:00:00 2001 From: guy Date: Fri, 26 Oct 2012 08:33:06 +0000 Subject: [PATCH] git-svn-id: svn://10.65.10.50/branches/R_10_00@22741 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ha/ha1200.cpp | 91 +++++++++++++++++++++++++++++++++++---------------- ha/ha1250.cpp | 26 +++++++-------- ha/ha2200.cpp | 48 ++++++++++++++------------- ha/ha3900.cpp | 12 ++++--- 4 files changed, 108 insertions(+), 69 deletions(-) diff --git a/ha/ha1200.cpp b/ha/ha1200.cpp index 48b8ba3d5..b196f9170 100755 --- a/ha/ha1200.cpp +++ b/ha/ha1200.cpp @@ -94,7 +94,7 @@ protected: bool genera_nomi_output(const char* nome, TFilename& txt, TFilename& tmp) const; bool salva_recordset(TRecordset& recset, const char* nome) const; bool accoda_recordset(TRecordset& recset, const char* nome) const; - const TString& curr_cod_list(const long codcf) const; + bool curr_cod_list(long codcf, TString& list, TString& promo) const; public: }; @@ -229,18 +229,19 @@ void TFile2Txt::fill_anagrafica_cliente(const TISAM_recordset& archivio_clienti, clienti.set_fatt("CodiceFiscale", archivio_clienti.get(CLI_COFI), is_fatt); } -const TString& TFile2Txt::curr_cod_list(const long codcf) const +bool TFile2Txt::curr_cod_list(long codcf, TString& codlist, TString& promo) const { TString16 key; key.format("C|%ld", codcf); - TString4 codlist = cache().get(LF_CFVEN, key, CFV_CODLIST); + const TString4 original = cache().get(LF_CFVEN, key, CFV_CODLIST); + codlist = original; promo.cut(0); bool done = codlist.blank(); while (!done) { done = true; key.format("L||||%s", (const char*)codlist); const TRectype& rec = cache().get(LF_CONDV, key); - const TString4 nxtlist = rec.get(CONDV_CODLISSUCC); - if (nxtlist.full()) + promo = rec.get(CONDV_CODLISSUCC); + if (promo.full()) { TDate datascad = rec.get(CONDV_VALFIN); if (datascad.ok()) @@ -249,13 +250,27 @@ const TString& TFile2Txt::curr_cod_list(const long codcf) const --datascad; if (datascad <= TDate(TODAY)) { - codlist = nxtlist; + codlist = promo; + promo.cut(0); done = false; } } } } - return get_tmp_string() = codlist; + + if (codlist.full() && codlist != original) + { + TLocalisamfile clifo(LF_CFVEN); + clifo.put(CFV_TIPOCF, 'C'); + clifo.put(CFV_CODCF, codcf); + if (clifo.read(_isequal, _lock) == NOERR) + { + clifo.put(CFV_CODLIST, codlist); + clifo.rewrite(); + } + } + + return codlist.full(); } @@ -316,7 +331,9 @@ bool TFile2Txt::genera_clienti_txt(const long da_codcli) clienti.set("CodicePagamento", codpag.right(2)); //Nel campo CodiceListino ci va il codice del Listino Campo associato al cliente in cfven - clienti.set("CodiceListino", curr_cod_list(codcf)); + TString4 listino, promo; curr_cod_list(codcf, listino, promo); + clienti.set("CodiceListino", listino); + clienti.set("CodicePromozione", promo); const TString& str_sconto = archivio_clienti.get(CFV_SCONTO).as_string(); clienti.set("ScontoFineFattura", hd_find_sconto(str_sconto)); @@ -446,6 +463,8 @@ bool TFile2Txt::genera_righelistini_txt() const TDate oggi(TODAY); TEsporta_listini_recordset righe_listini; + TAssoc_array promo; + TISAM_recordset agenti("USE AGENTI"); const long agenti_items = agenti.items(); @@ -458,15 +477,16 @@ bool TFile2Txt::genera_righelistini_txt() TISAM_recordset archivio_rcondv(query); const long archivio_rcondv_items = archivio_rcondv.items(); - for (bool ok = agenti.move_first(); ok; ok = agenti.move_next()) + TProgind progind(agenti_items, "Listini..."); + + for (bool ak = agenti.move_first(); ak; ak = agenti.move_next()) { + if (!progind.addstatus(1)) + break; + const TString4 codage = agenti.get(AGE_CODAGE).as_string().right(3); - TProgind progind(archivio_rcondv_items, "Listini...", false, true); for (bool ok = archivio_rcondv.move_first(); ok; ok = archivio_rcondv.move_next()) { - if (!progind.addstatus(1)) - break; - const TDate datascad = archivio_rcondv.get("CONDV.VALFIN").as_date(); if (datascad.ok() && datascad < oggi) continue; @@ -548,27 +568,42 @@ bool TFile2Txt::genera_contratti_txt() bool TFile2Txt::genera_promozioni_txt() { - TEsporta_contratti_recordset righe_offerte; + TEsporta_offerte_recordset promo; - TString query; - query << "USE RCONDV"; - query << "\nJOIN CONDV INTO TIPO=TIPO TIPOCF=TIPOCF CODCF=CODCF COD=COD"; - query << "\nFROM TIPO=O"; - query << "\nTO TIPO=O"; + TAssoc_array promos; + TDate limite(TODAY); limite -= 31; - TISAM_recordset archivio_rcondv(query); - const long archivio_rcondv_items = archivio_rcondv.items(); + TISAM_recordset listini("USE CONDV\nFROM TIPO=L\nTO TIPO=L"); - TProgind progind(archivio_rcondv_items, "Promozioni...", false, true); - for (bool ok = archivio_rcondv.move_first(); ok; ok = archivio_rcondv.move_next()) + TProgind progind(listini.items(), TR("Promozioni")); + for (bool ok = listini.move_first(); ok; ok = listini.move_next()) { - progind.addstatus(1); - - righe_offerte.new_rec(""); - //non si sa quali campi trasferire! + const TString& succ = listini.get(CONDV_CODLISSUCC).as_string(); + const TDate datascad = listini.get(CONDV_VALFIN).as_date(); + if (succ.full() && datascad >= limite) + promos.add(succ); + } + for (bool ok = listini.move_first(); ok; ok = listini.move_next()) + { + const TString& cod = listini.get(CONDV_COD).as_string(); + if (promos.is_key(cod)) + { + const TDate dataini = listini.get(CONDV_VALIN).as_date(); + TDate datafin = listini.get(CONDV_VALFIN).as_date(); + if (datafin < dataini) + { + datafin = dataini; + datafin.addmonth(3); + } + promo.new_rec(); + promo.set(CONDV_COD, cod); + promo.set(CONDV_CODVAL, cod); + promo.set(CONDV_VALIN, hd_format_date8(dataini)); + promo.set(CONDV_VALFIN, hd_format_date8(datafin)); + } } - return salva_recordset(righe_offerte, "promo"); + return salva_recordset(promo, "promo"); } //prodotti: i commenti del metodo sono nella genera_prodotto_txt() della ha1100 diff --git a/ha/ha1250.cpp b/ha/ha1250.cpp index 82853cb3c..5d220175f 100755 --- a/ha/ha1250.cpp +++ b/ha/ha1250.cpp @@ -371,7 +371,7 @@ TEsporta_clienti_recordset::TEsporta_clienti_recordset(int recsize) : THardy_rec } //..e variazioni clienti TEsporta_clientiVAR_recordset::TEsporta_clientiVAR_recordset() -: TEsporta_clienti_recordset(308) + : TEsporta_clienti_recordset(308) { insert_field("Segno", T_X, 4, 1); //x } @@ -379,7 +379,7 @@ TEsporta_clientiVAR_recordset::TEsporta_clientiVAR_recordset() //Prodotti //-------- TEsporta_prodotti_recordset::TEsporta_prodotti_recordset(int rec_length) -: THardy_recordset(rec_length) + : THardy_recordset(rec_length) { add_field(ANAMAG_CODART, T_X, 1, 5); //x add_field(ANAMAG_DESCR, T_X, 6, 30); //x @@ -395,7 +395,7 @@ TEsporta_prodotti_recordset::TEsporta_prodotti_recordset(int rec_length) } //..e variazioni prodotti TEsporta_prodottiVAR_recordset::TEsporta_prodottiVAR_recordset() -: TEsporta_prodotti_recordset(66) + : TEsporta_prodotti_recordset(66) { insert_field("Segno", T_X, 1, 1); //x } @@ -403,7 +403,7 @@ TEsporta_prodottiVAR_recordset::TEsporta_prodottiVAR_recordset() //Linee //----- TEsporta_linee_recordset::TEsporta_linee_recordset(int rec_length) -: THardy_recordset(rec_length) + : THardy_recordset(rec_length) { add_field("Fascia", T_X, 1, 1); add_field("Descrizione", T_X, 2, 50); @@ -414,7 +414,7 @@ TEsporta_linee_recordset::TEsporta_linee_recordset(int rec_length) //Righe Listini //------------- TEsporta_listini_recordset::TEsporta_listini_recordset(int rec_length) -: THardy_recordset(rec_length) + : THardy_recordset(rec_length) { add_field("CodiceTerminale", T_N, 1, 3); //x add_field(RCONDV_COD, T_X, 4, 3); //x @@ -428,7 +428,7 @@ TEsporta_listini_recordset::TEsporta_listini_recordset(int rec_length) } //..e variazioni listini TEsporta_listiniVAR_recordset::TEsporta_listiniVAR_recordset() -: TEsporta_listini_recordset(39) + : TEsporta_listini_recordset(39) { insert_field("Segno", T_X, 4, 1); //x } @@ -437,10 +437,10 @@ TEsporta_listiniVAR_recordset::TEsporta_listiniVAR_recordset() //Offerte //------- TEsporta_offerte_recordset::TEsporta_offerte_recordset(int rec_length) -: THardy_recordset(rec_length) + : THardy_recordset(rec_length) { add_field(CONDV_COD, T_X, 1, 3); - add_field(CONDV_COD, T_X, 4, 3); + add_field(CONDV_CODVAL, T_X, 4, 3); add_field(CONDV_VALIN, T_X, 7, 8); add_field(CONDV_VALFIN, T_X, 15, 8); add_eol_field(); @@ -504,7 +504,7 @@ TEsporta_sospesiVAR_recordset::TEsporta_sospesiVAR_recordset() //Decodart () //--------------- TEsporta_decodart_recordset::TEsporta_decodart_recordset() -: THardy_recordset(49) + : THardy_recordset(49) { add_field(CODCORR_CODART, T_X, 1, 5); //x add_field(CODCORR_CODCF, T_N, 6, 6); //x @@ -517,10 +517,10 @@ TEsporta_decodart_recordset::TEsporta_decodart_recordset() //Barcode //--------------- TEsporta_barcode_recordset::TEsporta_barcode_recordset(int rec_length) -: THardy_recordset(rec_length) + : THardy_recordset(rec_length) { - add_field(CODCORR_CODARTALT, T_X, 1, 20); //x - add_field(CODCORR_CODART, T_X, 21, 5); //x + add_field(CODCORR_CODARTALT, T_X, 1, 20); //x + add_field(CODCORR_CODART, T_X, 21, 5); //x add_eol_field(); } @@ -528,7 +528,7 @@ TEsporta_barcode_recordset::TEsporta_barcode_recordset(int rec_length) //Attrezzature //--------------- TEsporta_attrezzature_recordset::TEsporta_attrezzature_recordset(int rec_length) -: THardy_recordset(rec_length) + : THardy_recordset(rec_length) { add_field("CodiceTerminale", T_N, 1, 3); add_field("CodiceArticolo", T_X, 4, 5); diff --git a/ha/ha2200.cpp b/ha/ha2200.cpp index 55d0d8cd0..eee0c29a0 100755 --- a/ha/ha2200.cpp +++ b/ha/ha2200.cpp @@ -2,17 +2,16 @@ #include #include #include -#include #include #include -#include +//#include #include #include #include -#include -#include -#include +//#include +//#include +//#include #include "../mg/codcorr.h" #include "../cg/cglib01.h" #include "../ve/velib.h" @@ -87,27 +86,29 @@ bool TFatture_recordset::set(const char* name, const TVariant& value) { if (value.is_date()) { - const TDate date = value.as_date(); - TString8 str; - str.format("%04d%02d%02d", date.year(), date.month(), date.day()); - ok = TAS400_recordset::set(name, TVariant(str)); + TString8 str; str.format("%08ld", value.as_int()); + ok = TAS400_recordset::set(name, str); } else + { if (value.is_real()) { - real r = value.as_real()*1000; + const real r = value.as_real()*1000; TString16 str = r.string(16,0,'0'); if (r>ZERO) str.overwrite("+",0,1); else - if (r