Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@21807 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 2011-03-18 12:20:00 +00:00
parent bb5905b448
commit a43ea43565

View File

@ -5,6 +5,7 @@
#include <recset.h>
#include <reputils.h>
#include <textset.h>
#include <utility.h>
#include <doc.h>
#include <rdoc.h>
@ -17,23 +18,6 @@
const char* const APPNAME = TR("Esselunga: generazione file Privat");
///////////////////////////////////////////////////////////
// TEsselunga_recordset: serve per potre scrivere il primo record che e' diverso dagli altri
///////////////////////////////////////////////////////////
class TEsselunga_recordset : public TAS400_recordset
{
protected:
//esportazione
void add_field(const char* name, const char* tipo, int pos, int len);
void insert_field(const char* name, const char* tipo, int pos, int len);
void add_eol_field();
//importazione
void add_trc_field(const char* tr, const char* name, const char* tipo, int pos, int len);
public:
TEsselunga_recordset(const int rec_length);
};
///////////////////////////////////////////////////////////
// TAutomask
///////////////////////////////////////////////////////////
@ -119,7 +103,7 @@ public:
};
TPrivat_recordset::TPrivat_recordset()
: TAS400_recordset("AS400(51)")
: TAS400_recordset("AS400(53)")
{
create_field("CDC", -1, 3, _intfld); // centro di costo
create_field("CODART", -1, 6, _longfld); // codice articolo
@ -130,6 +114,7 @@ TPrivat_recordset::TPrivat_recordset()
create_field("QTACONS", -1, 7, _realfld); // qta consegnata
create_field("QTARESA", -1, 7, _realfld); // qta resa
create_field("CODDIP", -1, 1, _alfafld); // codice dipendenza
create_field("FINE-REC", -1, 2, _alfafld, true, TVariant("\r\n")); // a capo
}
///////////////////////////////////////
@ -141,7 +126,8 @@ protected:
long genera_recordset(const TMask& mask, TISAM_recordset& recset);
void elabora(const TMask& mask);
void check_date(const TDate& datafine, TDate& dataini);
long check_cliente(const long codcf);
long check_cliente(const long codcf, const TString4 dipendenza);
TFilename scrivi_testata(const TMask& mask);
public:
virtual void main_loop();
@ -202,22 +188,45 @@ long THardy_esselunga::genera_recordset(const TMask& mask, TISAM_recordset& recs
recset.set_var("#DATAFIN", datafin);
return recset.items();
}
TFilename THardy_esselunga::scrivi_testata(const TMask& mask)
{
const TString4 dipendenza = mask.get(F_DIPENDENZA);
TConfig config(CONFIG_DITTA, "ha");
TFilename file_privat = config.get("Esselunga_Path");
if (dipendenza[0] == 'D')
file_privat.add("CDMI");
else
file_privat.add("CDFI");
file_privat.ext("txt");
ofstream file_output(file_privat);
TString record(260);
// tipo record/filler/tot_record/progr_record
record = "PVT*?*001001";
// nome del file
record << file_privat.name();
// identificativo mittente
record.overwrite(config.get("Esselunga_PIvaEsselunga"), 85);
record.overwrite(config.get("Esselunga_TipoEmissione"), 120);
// identificativo destinatario
record.overwrite(config.get("Esselunga_PIvaHardy"), 138);
record.overwrite(config.get("Esselunga_TipoEmissione"), 173);
// formato (Ascii)
record.overwrite("A", 191);
// identificativo univoco del documento
record.overwrite("0000000000000001", 243);
file_output << record << endl;
file_output.close();
return file_privat;
}
void THardy_esselunga::elabora(const TMask& mask)
{
TLog_report log;
// lettura dei dati fissi da configurazione
TConfig config(CONFIG_DITTA, "ha");
const TString16 piva_esselunga = config.get("Esselunga_PIvaEsselunga");
const TString16 piva_hardy = config.get("Esselunga_PIvaHardy");
const TString16 cod_hardy = config.get("Esselunga_CodHardy");
const TString16 tipo_emissione = config.get("Esselunga_TipoEmissione");
const TString4 dipendenza = mask.get(F_DIPENDENZA);
TFilename file_privat = config.get("Esselunga_Path");
if (dipendenza[0] == 'D')
file_privat.add("CDMI");
else
file_privat.add("CDFI");
TFilename file_privat = scrivi_testata(mask);
TISAM_recordset recset("");
const long items = genera_recordset(mask, recset);
if (items == 0)
@ -242,33 +251,46 @@ void THardy_esselunga::elabora(const TMask& mask)
TString80 codart_esselunga = ""; // decodifica tramite cache()
privat.new_rec("");
privat.set("CDC", TVariant(codcf_esselunga));
/*
privat.set("CODART",
privat.set("CODFORN",
privat.set("TIPOBOLLA",
privat.set("NUMBOLLA",
privat.set("DATABOLLA",
privat.set("QTACONS",
privat.set("QTARESA",
*/
privat.set("CODART", rigadoc->get(RDOC_CODART));
privat.set("CODFORN", cod_hardy);
//privat.set("TIPOBOLLA",
//privat.set("NUMBOLLA",
privat.set("DATABOLLA", recset.get(DOC_DATADOC));
privat.set("QTACONS", rigadoc->get(RDOC_QTA));
//privat.set("QTARESA",);
privat.set("CODDIP", TVariant(dipendenza));
} //FOR_EACH...
delete doc;
} // if check_cliente...
} //for (bool ok = recset.move_first()...
//se elaborazione definitiva -> cambia lo stato ai documenti di vendita elaborati, mettendolo uguale..
//..a quello deciso in configurazione
const bool definitivo = mask.get_bool(F_DEFINITIVO);
TFilename tempfile;
tempfile.temp();
privat.save_as(tempfile, fmt_text);
fcopy(tempfile, file_privat, true);
// memorizzo su campo virtuale che il doc. e' stato inviato
const bool definitivo = mask.get_bool(F_DEFINITIVO);
if (definitivo)
{
}
log.print_or_preview();
}
long THardy_esselunga::check_cliente(const long codcf)
long THardy_esselunga::check_cliente(const long codcf, const TString4 dipendenza)
{
return true;
long codcf_hardy = -1;
TString key;
key.format("%ld", codcf);
const TRectype rec_cliente = cache().get("&CEL", key);
const bool invio = rec_cliente.get_bool("B0");
if (invio)
{
const char dip_cliente = rec_cliente.get("S1")[0];
if (dip_cliente == dipendenza[0])
codcf_hardy = rec_cliente.get_long("I0");
}
return codcf_hardy;
}
void THardy_esselunga::main_loop()