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:
parent
0c63e653dc
commit
4f42826012
@ -9,6 +9,7 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
case 0: ps1002100(argc, argv); break; //gestione rapida(?) delle righe documento Euroforesi
|
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 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;
|
default: ps1002100(argc, argv); break;
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
int ps1002100(int argc, char* argv[]);
|
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
170
ps/ps1002300.cpp
Executable 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
5
ps/ps1002300a.h
Executable 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
64
ps/ps1002300a.uml
Executable 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
|
Loading…
x
Reference in New Issue
Block a user