git-svn-id: svn://10.65.10.50/branches/R_10_00@22741 c028cbd2-c16b-5b4b-a496-9718f37d4682

This commit is contained in:
guy 2012-10-26 08:33:06 +00:00
parent 02a750c7b1
commit b7b44916a5
4 changed files with 108 additions and 69 deletions

View File

@ -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

View File

@ -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);

View File

@ -2,17 +2,16 @@
#include <automask.h>
#include <progind.h>
#include <recarray.h>
#include <recset.h>
#include <reputils.h>
#include <textset.h>
#include <utility.h>
//#include <utility.h>
#include <nditte.h>
#include <anagr.h>
#include <comuni.h>
#include <clifo.h>
#include <doc.h>
#include <rdoc.h>
//#include <clifo.h>
//#include <doc.h>
//#include <rdoc.h>
#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<ZERO)
str.overwrite("-",0,1);
else
str.overwrite(" ",0,1);
ok = TAS400_recordset::set(name, TVariant(str));
{
if (r<ZERO)
str.overwrite("-",0,1);
else
str.overwrite(" ",0,1);
}
ok = TAS400_recordset::set(name, str);
}
else
ok = TAS400_recordset::set(name, value);
}
}
return ok;
}
@ -146,11 +147,12 @@ TFatture_recordset::TFatture_recordset()
// dati di configurazione
TConfig config(CONFIG_DITTA, "ha");
const TString80 piva_hardy = config.get("Esselunga_PIvaHardy");
const TString80 piva_esselunga = config.get("Esselunga_PIvaEsselunga");
const TString8 tipo_emissione = config.get("Esselunga_TipoEmissione");
const long codcli_esselunga = config.get_long("Esselunga_CodEsselunga");
const TString80 cod_hardy = config.get("Esselunga_CodHardy");
TString16 piva_esselunga = config.get("Esselunga_PIvaEsselunga");
piva_esselunga << "N"; // 27-09-2012
// record cliente Esselunga
TToken_string key;
key.add("C"); key.add(codcli_esselunga);
@ -274,7 +276,7 @@ TFatture_recordset::TFatture_recordset()
// *** Sezione di dettaglio fattura ***
// Record DET: identificazione, quantita'e prezzi articolo
// Record DET: identificazione, quantità e prezzi articolo
add_field("DET.TIPOREC", AN, 3, 1, true, "DET");
add_field("DET.NUMRIGA", NU, 6, 4, true);
add_field("DET.IDSOTTOR", AN, 3, 10);
@ -721,12 +723,12 @@ TString4 THardy_esselunga_fat::check_cliente(const long codcf)
TString8 key; key << codcf;
const TRectype& rec_cliente = cache().get("&CEL", key);
const bool invio = rec_cliente.get_bool("B0");
const char dipendenza = rec_cliente.get("S1")[0];
if (invio)
{
codcf_hardy << dipendenza;
codcf_hardy << format("%03d", rec_cliente.get_long("I0"));
}
{
const char dipendenza = rec_cliente.get("S1")[0];
const long clifo = rec_cliente.get_long("I0");
codcf_hardy.format("%c%03d", dipendenza, clifo);
}
return codcf_hardy;
}

View File

@ -245,7 +245,7 @@ void TGestione_attrezzature_mask::fill_sheet_storico(const TString& codattr)
TToken_string& row = sf_righe.row(-1); //riga sheet da riempire
const long line_clifo = rec.get_long("I0");
//se il clifo presente sulla riga e' diverso da quello attuale la riga assumera' un vago colore pervinca
//se il clifo presente sulla riga è diverso da quello attuale la riga assumerà un vago colore pervinca
if (line_clifo != present_clifo)
sf_righe.set_back_and_fore_color(DISABLED_BACK_COLOR, DISABLED_COLOR, sf_righe.items()-1);
@ -267,6 +267,9 @@ void TGestione_attrezzature_mask::fill_sheet_storico(const TString& codattr)
sf_righe.sort(sort_by_data);
sf_righe.show();
sf_righe.force_update();
//una volta caricato lo sheet deve risultare immacolato!
_sheet_dirty = false;
}
@ -504,7 +507,7 @@ bool TGestione_attrezzature_mask::on_field_event(TOperable_field& o, TField_even
int can_write = tab_his.write();
if (can_write != NOERR)
return warning_box(TR("Impossibile aggiungere l'attrezzatura! Risulta gia' presente."));
return warning_box(TR("Impossibile aggiungere l'attrezzatura! Risulta già presente."));
set(F_CODCF, codcf, true);
set(F_CODART, full_matricola.left(20), true);
@ -517,19 +520,18 @@ bool TGestione_attrezzature_mask::on_field_event(TOperable_field& o, TField_even
break;
case DLG_SAVEREC:
if (e == fe_button && check_fields())
{
write();
}
break;
case DLG_CANCEL:
if (e == fe_button && jolly == 0) //il jolly=0 significa che si riferisce alla maschera principale!..
{ //..se non ci fosse azzererebbe tutto anche quando si fa annulla sulla maschera di riga!
//nel caso l'utonto clicchi su ANNULLA dopo aver fatto modifiche sara' meglio chiedere conferma se le vuole mantenere
save_if_dirty();
//azzera i campi della maschera
reset();
_sheet_dirty = false;
TTreelist_field& tf = (TTreelist_field&)field(F_ATTREZZATURE);
TCoffee_tree* ct = (TCoffee_tree*)tf.tree();
if (ct != NULL)