Patch level : 10.0 patch 535

Files correlati     : lv2 lv2400a.msk
Ricompilazione Demo : [ ]
Commento            :
Corretta la stampa automatica da doc a doc in lv2900

Implementata la stampa automatica da doc a doc in lv2400


git-svn-id: svn://10.65.10.50/trunk@19695 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-12-01 13:43:04 +00:00
parent f1b1a1ae3a
commit 4ea5ca71ed
4 changed files with 62 additions and 8 deletions

View File

@ -1,5 +1,6 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h> #include <automask.h>
#include <execp.h>
#include <progind.h> #include <progind.h>
#include <reputils.h> #include <reputils.h>
#include <reprint.h> #include <reprint.h>
@ -27,7 +28,7 @@ class TGenera_documenti_msk : public TAutomask
{ {
public: public:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
TGenera_documenti_msk (const char* name) : TAutomask(name) {} TGenera_documenti_msk (const char* name) : TAutomask(name) {set(F_STAMPA, 'X');}
}; };
//ON_FIELD_EVENT: questo metodo gestisce i vari eventi che si verificano sui campi della maschera //ON_FIELD_EVENT: questo metodo gestisce i vari eventi che si verificano sui campi della maschera
@ -51,7 +52,7 @@ class TGenera_documenti_app : public TSkeleton_application
private: private:
//Metodi per la generazione dei documenti //Metodi per la generazione dei documenti
bool crea_documento(const TISAM_recordset& plan, TLog_report& rep, int& numdocgen); bool crea_documento(const TISAM_recordset& plan, TLog_report& rep, int& numdocgen, TAssoc_array& documenti);
void crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc, TLog_report& rep); void crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc, TLog_report& rep);
//Metodi per il recupero di codnum, tpdoc, stato //Metodi per il recupero di codnum, tpdoc, stato
bool numerazione_ddt(TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const; bool numerazione_ddt(TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const;
@ -116,7 +117,7 @@ bool TGenera_documenti_app::destroy()
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
//CREA_DOCUMENTO: metodo che crea un nuovo documento di trasporto dai dati salvati //CREA_DOCUMENTO: metodo che crea un nuovo documento di trasporto dai dati salvati
bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_report& rep, int& numdocgen) bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_report& rep, int& numdocgen, TAssoc_array& documenti)
{ {
//recupero i dati di interesse dalla maschera //recupero i dati di interesse dalla maschera
const TDate datagen(TODAY); const TDate datagen(TODAY);
@ -148,7 +149,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
TString4 statoi; TString4 statoi;
TString4 statof; TString4 statof;
//Cerco il tipo documento da generaresul contratto; se non lo trovo lo cerco in configurazione. //Cerco il tipo documento da generare sul contratto; se non lo trovo lo cerco in configurazione.
//Se non trovo quale documento generare, evito il resto dell'elaborazione //Se non trovo quale documento generare, evito il resto dell'elaborazione
if(tcont.get(LVCONDV_CODNUM).full() && _buono == 'C') if(tcont.get(LVCONDV_CODNUM).full() && _buono == 'C')
{ {
@ -236,6 +237,11 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
f.put(LVRCONSPLAN_CODNUM, codnum); f.put(LVRCONSPLAN_CODNUM, codnum);
f.put(LVRCONSPLAN_NDOC, _ndoc); f.put(LVRCONSPLAN_NDOC, _ndoc);
f.rewrite(); f.rewrite();
//tengo traccia dei documenti che sto generando, per poterli stampare dopo
TDoc_key kdoc(doc.get_int(DOC_ANNO), doc.get(DOC_CODNUM), doc.get_int(DOC_NDOC));
if (!documenti.is_key(kdoc))
documenti.add(kdoc, kdoc);
} }
} }
return err == NOERR; return err == NOERR;
@ -761,6 +767,8 @@ bool TGenera_documenti_app::transfer()
int numdocgen = 0; int numdocgen = 0;
TAssoc_array documenti;
for (dadata; dadata <= adata; ++dadata) for (dadata; dadata <= adata; ++dadata)
{ {
//per ogni data cerco i documenti e per ogni documento cerco i dati del passaggio //per ogni data cerco i documenti e per ogni documento cerco i dati del passaggio
@ -808,11 +816,33 @@ bool TGenera_documenti_app::transfer()
{ {
_quantita.destroy(); _quantita.destroy();
_quantita_ritirata.destroy(); _quantita_ritirata.destroy();
crea_documento(plan, rep, numdocgen); crea_documento(plan, rep, numdocgen, documenti);
} }
} }
} }
if (_msk->get_bool(F_STAMPA))
{
//preparo il pezzo fisso della linea di comando per richiamare la stampa dei documenti
TDoc_key kd(documenti.get_hashobj()->key());
const TString4 codnum = kd.codnum();
const int anno = kd.anno();
const char provv = kd.provv();
TDoc_key& dk1 = *(TDoc_key*)documenti.first_item();
const int dandoc = dk1.ndoc();
TDoc_key& dk2 = *(TDoc_key*)documenti.last_item();
const int andoc = dk2.ndoc();
//lancia la stampa dei documenti ve1 -2 da documento a documento
TString80 str;
str << "ve1 -2 " << codnum << ' ' << anno << ' ' << provv << ' ' << dandoc << '-' << andoc << " S D";
TExternal_app stampa(str);
stampa.run();
}
if (adata < TODAY && _msk->get_int(F_TPGEN) == 0) if (adata < TODAY && _msk->get_int(F_TPGEN) == 0)
warning_box(TR("Non è stato possibile generare documenti con data prevista consegna nel passato")); warning_box(TR("Non è stato possibile generare documenti con data prevista consegna nel passato"));
else else

View File

@ -9,3 +9,4 @@
#define F_DESCRAUT 109 #define F_DESCRAUT 109
#define F_CODCF 110 #define F_CODCF 110
#define F_RAGSOCCLI 111 #define F_RAGSOCCLI 111
#define F_STAMPA 112

View File

@ -118,5 +118,15 @@ BEGIN
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 1 9 "@bParametri di stampa"
END
BOOLEAN F_STAMPA
BEGIN
PROMPT 2 10 "Stampa automatica buoni"
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -216,7 +216,20 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo
const int anno = kd.anno(); const int anno = kd.anno();
const char provv = kd.provv(); const char provv = kd.provv();
//lancia la stampa dei documenti ve1 -2 per ogni documento preparato TDoc_key& dk1 = *(TDoc_key*)documenti.first_item();
const int dandoc = dk1.ndoc();
TDoc_key& dk2 = *(TDoc_key*)documenti.last_item();
const int andoc = dk2.ndoc();
//lancia la stampa dei documenti ve1 -2 da documento a documento
TString80 str;
str << "ve1 -2 " << codnum << ' ' << anno << ' ' << provv << ' ' << dandoc << '-' << andoc << " S D";
TExternal_app stampa(str);
stampa.run();
/*//lancia la stampa dei documenti ve1 -2 per ogni documento preparato
TString80 str; TString80 str;
str << "ve1 -2 " << codnum << ' ' << anno << ' ' << provv << ' '; str << "ve1 -2 " << codnum << ' ' << anno << ' ' << provv << ' ';
@ -230,7 +243,7 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo
TExternal_app stampa(lcom); TExternal_app stampa(lcom);
stampa.run(); stampa.run();
} }*/
} }
message_box(TR("Generazione dei documenti terminata")); message_box(TR("Generazione dei documenti terminata"));
} }