Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@22119 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2011-05-13 14:23:11 +00:00
parent 0c63e653dc
commit 4f42826012
5 changed files with 242 additions and 1 deletions

View File

@ -9,6 +9,7 @@ int main(int argc, char** argv)
{
case 0: ps1002100(argc, argv); break; //gestione rapida(?) delle righe documento Euroforesi
case 1: ps1002200(argc, argv); break; //importazione da terminale della produzione e aggiornamento BEM Euroforesi
case 2: ps1002300(argc, argv); break; //rilevazione produzione da bolle Euroforesi
default: ps1002100(argc, argv); break;
}
exit(0);

View File

@ -1,2 +1,3 @@
int ps1002100(int argc, char* argv[]);
int ps1002200(int argc, char* argv[]);
int ps1002200(int argc, char* argv[]);
int ps1002300(int argc, char* argv[]);

170
ps/ps1002300.cpp Executable file
View File

@ -0,0 +1,170 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <progind.h>
#include <relation.h>
#include <textset.h>
#include <rdoc.h>
#include "ps1002.h"
#include "ps1002300a.h"
/////////////////////////////////////
// Maschera
////////////////////////////////////
class TRileva_produzione_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
bool elabora();
TRileva_produzione_msk();
};
bool TRileva_produzione_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_ELABORA:
if (e == fe_button)
{
elabora();
return true;
}
break;
case F_DADATA:
case F_ADATA:
if (e == fe_close)
{
const TDate dadata = o.get();
}
break;
default: break;
}
return true;
}
bool TRileva_produzione_msk::elabora()
{
TString query;
query << "USE RDOC KEY 4";
query << "\nSELECT (DOC.CODNUM=#CODNUM)&&(BETWEEN(DOC.DATADOC,#DADATA,#ADATA))&&((CODCMS!=\"\")||(FASCMS!=\"\"))";
query << "\nJOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC";
query << "\nFROM DAPROVV=D DAANNO=#ANNO DACODNUM=BEM";
query << "\nTO DAPROVV=D DAANNO=#ANNO DACODNUM=BEM";
TISAM_recordset recset(query);
recset.set_var("#CODNUM", get(F_CODNUM));
recset.set_var("#DADATA", get_date(F_DADATA));
recset.set_var("#ADATA", get_date(F_ADATA));
const long anno = get_date(F_DADATA).year();
recset.set_var("#ANNO", anno);
const long items = recset.items();
const TDate dataprod = get_date(F_DATAPROD);
TProgind pi(items, TR("Scansione righe documento in corso..."), true, true);
TRectype& bolla_rec = recset.cursor()->curr(); //record corrente del recordset
TLocalisamfile rdoc(LF_RIGHEDOC); //file delle righe documento con le BEM da aggiornare
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{
if (!pi.addstatus(1))
break;
//prende la quantita' dalla riga della bolla
const real bolla_qta = bolla_rec.get_real(RDOC_QTA);
if (bolla_qta > ZERO)
{
#ifdef DBG
const TString& bolla_codnum = bolla_rec.get(RDOC_CODNUM);
const int bolla_anno = bolla_rec.get_int(RDOC_ANNO);
const long bolla_ndoc = bolla_rec.get_long(RDOC_NDOC);
const int bolla_nriga = bolla_rec.get_int(RDOC_NRIGA);
#endif
//servono anche lavorazione e colore (almeno uno dei due c'e' in base alla query)
const TString& bolla_lav = bolla_rec.get(RDOC_CODCMS);
const TString& bolla_col = bolla_rec.get(RDOC_FASCMS);
//adesso prende la riga documento della BEM e aggiorna i valori se deve
TRectype& bem_rec = rdoc.curr();
const TString& bem_codnum = bolla_rec.get(RDOC_DACODNUM); //se non fosse BEM sarebbe un errore!!!
bem_rec.put(RDOC_CODNUM, bem_codnum);
const int bem_anno = bolla_rec.get_int(RDOC_DAANNO);
bem_rec.put(RDOC_ANNO, bem_anno);
bem_rec.put(RDOC_PROVV, 'D');
const long bem_ndoc = bolla_rec.get_long(RDOC_DANDOC);
bem_rec.put(RDOC_NDOC, bem_ndoc);
//occhio alla riga, raga! DAIDRIGA sulla rigabolla deve essere uguale a IDRIGA sulla rigabem, NON a NRIGA che è aleatorio!
const int bem_nriga = bolla_rec.get_int(RDOC_DAIDRIGA);
bem_rec.put(RDOC_IDRIGA, bem_nriga);
if (bem_rec.read(rdoc) == NOERR)
{
const real bem_old_qta = bem_rec.get_real(RDOC_QTA);
//solo le BEM a quantita' nulla possono essere aggiornate (senno' ci verrebbe del casino)
if (bem_old_qta == ZERO)
{
if (bolla_lav.full()) //lavorazione
{
bem_rec.put(RDOC_CODCMS, bolla_lav);
bem_rec.put(RDOC_QTAGG2, bolla_qta);
bem_rec.put(RDOC_CODAGG2, dataprod);
}
if (bolla_col.full()) //colore
{
bem_rec.put(RDOC_FASCMS, bolla_col);
bem_rec.put(RDOC_QTAGG1, bolla_qta);
bem_rec.put(RDOC_DATACONS, dataprod);
}
const int err = bem_rec.rewrite(rdoc);
if (err != NOERR)
return false;
}
} //if(bem_rec.read(rdoc)...
} // if (bolla_qta > ZERO)...
} //for (bool ok = recset.move_first()...
return true;
}
TRileva_produzione_msk::TRileva_produzione_msk()
: TAutomask ("ps1002300a")
{}
/////////////////////////////////////
// Applicazione
////////////////////////////////////
class TRileva_produzione : public TSkeleton_application
{
protected:
virtual bool check_autorization() const { return false; }
virtual const char* extra_modules() const { return "ve"; }
virtual void main_loop();
virtual bool create();
};
void TRileva_produzione::main_loop()
{
TRileva_produzione_msk mask;
mask.run();
}
bool TRileva_produzione::create()
{
return TSkeleton_application::create();
}
int ps1002300 (int argc, char* argv[])
{
TRileva_produzione main_app;
main_app.run(argc, argv, TR("Rileva produzione da bolle"));
return true;
}

5
ps/ps1002300a.h Executable file
View File

@ -0,0 +1,5 @@
#define F_CODNUM 201
#define F_DESNUM 202
#define F_DADATA 203
#define F_ADATA 204
#define F_DATAPROD 205

64
ps/ps1002300a.uml Executable file
View File

@ -0,0 +1,64 @@
#include "ps1002300a.h"
PAGE "Rilevazione produzione da bolle" -1 -1 78 12
STRING F_CODNUM 4
BEGIN
PROMPT 1 1 "Num. bolle "
USE %NUM
INPUT CODTAB F_CODNUM
DISPLAY "Codice@8" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODNUM CODTAB
OUTPUT F_DESNUM S0
CHECKTYPE REQUIRED
FLAGS "U"
END
STRING F_DESNUM 50
BEGIN
PROMPT 23 1 ""
USE %NUM KEY 2
INPUT S0 F_DESNUM
DISPLAY "Descrizione@50" S0
DISPLAY "Codice@8" CODTAB
COPY OUTPUT F_CODNUM
CHECKTYPE NORMAL
END
DATE F_DADATA
BEGIN
PROMPT 1 3 "Dal "
FLAGS "A"
CHECKTYPE REQUIRED
END
DATE F_ADATA
BEGIN
PROMPT 20 3 "Al "
FLAGS "A"
CHECKTYPE REQUIRED
END
DATE F_DATAPROD
BEGIN
PROMPT 1 5 "Data produzione "
CHECKTYPE REQUIRED
END
BUTTON DLG_ELABORA 10 2
BEGIN
PROMPT -12 7 "~Elabora"
PICTURE BMP_ELABORA
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 7 "Fine"
MESSAGE EXIT,K_QUIT
PICTURE BMP_QUIT
END
ENDPAGE
ENDMASK