Patch level :4.0/10.0
Files correlati : Ricompilazione Demo : [ ] Commento :aggiunti sorgenti di programmi personalizzati sul main_trunk git-svn-id: svn://10.65.10.50/trunk@15931 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
edd1a66d5e
commit
ab57d73bc0
141
ps/pd0777100a.ini
Executable file
141
ps/pd0777100a.ini
Executable file
@ -0,0 +1,141 @@
|
|||||||
|
[MAIN]
|
||||||
|
DECSEP =
|
||||||
|
FIELDSEP =
|
||||||
|
RECORDSEP = \n
|
||||||
|
RECORDSIZE = 0
|
||||||
|
SKIPLINES = 0
|
||||||
|
TYPEFIELD = -1
|
||||||
|
TYPELEN = -1
|
||||||
|
TYPEPOS = -1
|
||||||
|
|
||||||
|
[TYPE FISSO]
|
||||||
|
ALIGN =
|
||||||
|
DATA =
|
||||||
|
DECIMAL = 0
|
||||||
|
FILLER = ' '
|
||||||
|
LENGTH = 0
|
||||||
|
PICTURE =
|
||||||
|
|
||||||
|
[TYPE DATA]
|
||||||
|
ALIGN =
|
||||||
|
DATA = D
|
||||||
|
DECIMAL = 0
|
||||||
|
FILLER =
|
||||||
|
LENGTH = 8
|
||||||
|
PICTURE =
|
||||||
|
|
||||||
|
[TYPE NUMERO]
|
||||||
|
ALIGN = R
|
||||||
|
DATA =
|
||||||
|
DECIMAL = 0
|
||||||
|
FILLER = '0'
|
||||||
|
LENGTH = 0
|
||||||
|
PICTURE =
|
||||||
|
|
||||||
|
[TYPE IMPORTO]
|
||||||
|
ALIGN = R
|
||||||
|
DATA =
|
||||||
|
DECIMAL = 2
|
||||||
|
FILLER = '0'
|
||||||
|
LENGTH = 13
|
||||||
|
PICTURE =
|
||||||
|
|
||||||
|
[TYPE STRINGA]
|
||||||
|
ALIGN = L
|
||||||
|
DATA = S
|
||||||
|
DECIMAL = 0
|
||||||
|
FILLER = ' '
|
||||||
|
LENGTH = 0
|
||||||
|
PICTURE =
|
||||||
|
|
||||||
|
[RECORD]
|
||||||
|
NAME(0) = CODICE AZIENDA
|
||||||
|
TYPE(0) = NUMERO
|
||||||
|
POSITION(0) = 0
|
||||||
|
LENGTH(0) = 4
|
||||||
|
|
||||||
|
NAME(1) = CODICE DIPENDENTE
|
||||||
|
TYPE(1) = NUMERO
|
||||||
|
POSITION(1) = 4
|
||||||
|
LENGTH(1) = 6
|
||||||
|
|
||||||
|
NAME(2) = VOCE
|
||||||
|
TYPE(2) = NUMERO
|
||||||
|
POSITION(2) = 10
|
||||||
|
LENGTH(2) = 4
|
||||||
|
|
||||||
|
NAME(3) = TIPO VOCE
|
||||||
|
TYPE(3) = STRINGA
|
||||||
|
POSITION(3) = 14
|
||||||
|
LENGTH(3) = 1
|
||||||
|
|
||||||
|
NAME(4) = QUOTA VOCE
|
||||||
|
TYPE(4) = NUMERO
|
||||||
|
POSITION(4) = 15
|
||||||
|
LENGTH(4) = 6
|
||||||
|
DECIMAL(4) = 2
|
||||||
|
|
||||||
|
NAME(5) = VALORE VOCE
|
||||||
|
TYPE(5) = NUMERO
|
||||||
|
POSITION(5) = 21
|
||||||
|
LENGTH(5) = 13
|
||||||
|
DECIMAL(5) = 2
|
||||||
|
MESSAGE(5) = _IMPORTO
|
||||||
|
|
||||||
|
NAME(6) = IMPORTO UNITARIO
|
||||||
|
TYPE(6) = IMPORTO
|
||||||
|
POSITION(6) = 34
|
||||||
|
LENGTH(6) = 13
|
||||||
|
DECIMAL(6) = 2
|
||||||
|
MESSAGE(6) = _IMPORTO
|
||||||
|
|
||||||
|
NAME(7) = CONTO DARE
|
||||||
|
TYPE(7) = STRINGA
|
||||||
|
POSITION(7) = 47
|
||||||
|
LENGTH(7) = 14
|
||||||
|
|
||||||
|
NAME(8) = CONTO AVERE
|
||||||
|
TYPE(8) = STRINGA
|
||||||
|
POSITION(8) = 61
|
||||||
|
LENGTH(8) = 14
|
||||||
|
|
||||||
|
NAME(9) = CENTRO DI COSTO
|
||||||
|
TYPE(9) = STRINGA
|
||||||
|
POSITION(9) = 75
|
||||||
|
LENGTH(9) = 12
|
||||||
|
|
||||||
|
NAME(10) = SEDE DI LAVORO
|
||||||
|
TYPE(10) = STRINGA
|
||||||
|
POSITION(10) = 87
|
||||||
|
LENGTH(10) = 2
|
||||||
|
|
||||||
|
NAME(11) = SEDE INPS
|
||||||
|
TYPE(11) = STRINGA
|
||||||
|
POSITION(11) = 89
|
||||||
|
LENGTH(11) = 2
|
||||||
|
|
||||||
|
NAME(12) = QUALIFICA
|
||||||
|
TYPE(12) = STRINGA
|
||||||
|
POSITION(12) = 91
|
||||||
|
LENGTH(12) = 1
|
||||||
|
|
||||||
|
NAME(13) = POSIZIONE INAIL
|
||||||
|
TYPE(13) = STRINGA
|
||||||
|
POSITION(13) = 92
|
||||||
|
LENGTH(13) = 2
|
||||||
|
|
||||||
|
NAME(14) = VARIABILE
|
||||||
|
TYPE(14) = STRINGA
|
||||||
|
POSITION(14) = 94
|
||||||
|
LENGTH(14) = 40
|
||||||
|
|
||||||
|
NAME(15) = CONTRATTO
|
||||||
|
TYPE(15) = STRINGA
|
||||||
|
POSITION(15) = 134
|
||||||
|
LENGTH(15) = 2
|
||||||
|
|
||||||
|
NAME(16) = FILLER
|
||||||
|
TYPE(16) = STRINGA
|
||||||
|
POSITION(16) = 136
|
||||||
|
LENGTH(16) = 6
|
||||||
|
|
19
ps/ps0430.cpp
Executable file
19
ps/ps0430.cpp
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#include <xvt.h>
|
||||||
|
|
||||||
|
#include "ps0430.h"
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
||||||
|
switch(n)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
ps0430100(argc, argv); break;
|
||||||
|
case 1:
|
||||||
|
ps0430200(argc, argv); break;
|
||||||
|
default:
|
||||||
|
ps0430100(argc, argv); break;
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
return 0;
|
||||||
|
}
|
2
ps/ps0430.h
Executable file
2
ps/ps0430.h
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
int ps0430100(int argc, char* argv[]);
|
||||||
|
int ps0430200(int argc, char* argv[]);
|
227
ps/ps0430100.cpp
Executable file
227
ps/ps0430100.cpp
Executable file
@ -0,0 +1,227 @@
|
|||||||
|
#include <automask.h>
|
||||||
|
#include <defmask.h>
|
||||||
|
#include <msksheet.h>
|
||||||
|
#include <mask.h>
|
||||||
|
#include <recarray.h>
|
||||||
|
#include <recset.h>
|
||||||
|
#include <tabapp.h>
|
||||||
|
|
||||||
|
#include <multirel.h>
|
||||||
|
#include "../mg/anamag.h"
|
||||||
|
#include "ps0430100a.h"
|
||||||
|
|
||||||
|
#define FILE_KEY "ACM"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TArt_mask maschera
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TArt_mask : public TAutomask
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
TArt_mask() : TAutomask("ps0430100a") {}
|
||||||
|
~TArt_mask() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TArt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_SET:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TSheet_field & sf = sfield(F_ARTICLES);
|
||||||
|
const long items = sf.items();
|
||||||
|
bool select = true;
|
||||||
|
const int cid = sf.cid2index(F_ATTIVO);
|
||||||
|
int i ;
|
||||||
|
|
||||||
|
for (i = 0; select && i < items; i++)
|
||||||
|
select = *sf.row (i).get(cid) <= ' ';
|
||||||
|
|
||||||
|
const TString4 val(select ? "X" : " ");
|
||||||
|
|
||||||
|
for (i = 0; i < items; i++)
|
||||||
|
sf.row(i).add(val, cid);
|
||||||
|
sf.force_update();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case F_RESET:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
TSheet_field & sf = sfield(F_ARTICLES);
|
||||||
|
const long items = sf.items();
|
||||||
|
|
||||||
|
for (int i = 0; i < items; i++)
|
||||||
|
{
|
||||||
|
TToken_string & row = sf.row(i);
|
||||||
|
|
||||||
|
row.add(" ", sf.cid2index(F_ATTIVO));
|
||||||
|
}
|
||||||
|
sf.force_update();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TRelArticoli_multirel_app : public TMultirel_application
|
||||||
|
{
|
||||||
|
TISAM_recordset _recset;
|
||||||
|
TArt_mask * _mask;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void get_mask_name(TString& tabname) const;
|
||||||
|
//magico metodo per impedire la navigazione su tabelle diverse da quella corrente del cursore
|
||||||
|
virtual bool has_filtered_cursor() const { return true; }
|
||||||
|
virtual bool user_create();
|
||||||
|
virtual bool user_destroy() ;
|
||||||
|
virtual int read(TMask& m);
|
||||||
|
virtual int rewrite(const TMask& m);
|
||||||
|
virtual int write(const TMask& m) { return rewrite(m);}
|
||||||
|
virtual bool remove();
|
||||||
|
virtual void init_insert_mode(TMask& m) { read(m); }
|
||||||
|
virtual bool find(word key = 0);
|
||||||
|
virtual TMask* get_mask(int mode = MODE_QUERY) { return (TMask *) _mask;}
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual const char * extra_modules() const {return "ba";}
|
||||||
|
|
||||||
|
TRelArticoli_multirel_app() : _recset("USE ANAMAG KEY 1") {}
|
||||||
|
virtual ~TRelArticoli_multirel_app() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
void TRelArticoli_multirel_app::get_mask_name(TString& tabname) const
|
||||||
|
{
|
||||||
|
tabname = "ps0430100a";
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRelArticoli_multirel_app::user_create()
|
||||||
|
{
|
||||||
|
bool ok = TMultirel_application::user_create();
|
||||||
|
_mask = new TArt_mask;
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRelArticoli_multirel_app::user_destroy()
|
||||||
|
{
|
||||||
|
/* prefix().close_closeable_isamfiles();
|
||||||
|
|
||||||
|
TSystemisamfile multirel(LF_MULTIREL);
|
||||||
|
|
||||||
|
multirel.pack(); */
|
||||||
|
delete _mask;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TRelArticoli_multirel_app::read(TMask& m)
|
||||||
|
{
|
||||||
|
const TRectype & curr = get_relation()->lfile().curr();
|
||||||
|
TSheet_field & sf = m.sfield(F_ARTICLES);
|
||||||
|
TLocalisamfile multirel(LF_MULTIREL);
|
||||||
|
const TString user(m.get(F_USER));
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
sf.destroy();
|
||||||
|
for (bool ok = _recset.move_first(); ok; ok = _recset.move_next())
|
||||||
|
{
|
||||||
|
TToken_string & row = sf.row(i++);
|
||||||
|
const TString & codart = _recset.get(ANAMAG_CODART).as_string();
|
||||||
|
|
||||||
|
row.add(codart, sf.cid2index(F_CODART));
|
||||||
|
row.add(_recset.get(ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
|
||||||
|
row.add(_recset.get(ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
|
||||||
|
row.add(_recset.get(ANAMAG_CODFORN).as_string(), sf.cid2index(F_CODFORN));
|
||||||
|
TToken_string key; key.format("F|%ld", _recset.get(ANAMAG_CODFORN).as_int());
|
||||||
|
|
||||||
|
row.add(cache().get(LF_CLIFO, key, "RAGSOC"), sf.cid2index(F_RAGSOC));
|
||||||
|
|
||||||
|
multirel.put(MULTI_COD, FILE_KEY);
|
||||||
|
multirel.put(MULTI_FIRST, user);
|
||||||
|
multirel.put(MULTI_SECOND, codart);
|
||||||
|
if (multirel.read(_isequal) == NOERR)
|
||||||
|
row.add("X", sf.cid2index(F_ATTIVO));
|
||||||
|
else
|
||||||
|
row.add(" ", sf.cid2index(F_ATTIVO));
|
||||||
|
}
|
||||||
|
return NOERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TRelArticoli_multirel_app::rewrite(const TMask& m)
|
||||||
|
{
|
||||||
|
int err = NOERR;
|
||||||
|
TSheet_field & sf = m.sfield(F_ARTICLES);
|
||||||
|
int i = 0;
|
||||||
|
TLocalisamfile multirel(LF_MULTIREL);
|
||||||
|
const TString user(m.get(F_USER));
|
||||||
|
|
||||||
|
for (bool ok = _recset.move_first(); err == NOERR && ok; ok = _recset.move_next())
|
||||||
|
{
|
||||||
|
TToken_string & row = sf.row(i++);
|
||||||
|
bool selected = *row.get(sf.cid2index(F_ATTIVO)) > ' ';
|
||||||
|
|
||||||
|
multirel.zero();
|
||||||
|
multirel.put(MULTI_COD, FILE_KEY);
|
||||||
|
multirel.put(MULTI_FIRST, user);
|
||||||
|
multirel.put(MULTI_SECOND, row.get(sf.cid2index(F_CODART)));
|
||||||
|
bool exist = multirel.read(_isequal) == NOERR;
|
||||||
|
|
||||||
|
if (exist && !selected)
|
||||||
|
err = multirel.remove();
|
||||||
|
else
|
||||||
|
if (!exist && selected)
|
||||||
|
{
|
||||||
|
multirel.zero();
|
||||||
|
multirel.put(MULTI_COD, FILE_KEY);
|
||||||
|
multirel.put(MULTI_FIRST, user);
|
||||||
|
multirel.put(MULTI_SECOND, row.get(sf.cid2index(F_CODART)));
|
||||||
|
err = multirel.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get_relation()->read(_isgteq);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRelArticoli_multirel_app::remove()
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
TLocalisamfile multirel(LF_MULTIREL);
|
||||||
|
const TString user(get_mask(MODE_MOD)->get(F_USER));
|
||||||
|
|
||||||
|
multirel.put(MULTI_COD, FILE_KEY);
|
||||||
|
multirel.put(MULTI_FIRST, user);
|
||||||
|
|
||||||
|
for (err = multirel.read(_isgteq); err == NOERR && user == multirel.get(MULTI_FIRST); multirel.next())
|
||||||
|
err = multirel.remove();
|
||||||
|
return err == NOERR || err == _iseof;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRelArticoli_multirel_app::find(word key)
|
||||||
|
{
|
||||||
|
bool ok = false;
|
||||||
|
const TString& user = get_mask(MODE_QUERY)->get(F_USER);
|
||||||
|
|
||||||
|
if (user.full())
|
||||||
|
{
|
||||||
|
TLocalisamfile multirel(LF_MULTIREL);
|
||||||
|
|
||||||
|
multirel.put(MULTI_COD, FILE_KEY);
|
||||||
|
multirel.put(MULTI_FIRST, user);
|
||||||
|
ok = (multirel.read(_isgteq) == NOERR) && (user == multirel.get(MULTI_FIRST));
|
||||||
|
}
|
||||||
|
if (ok)
|
||||||
|
get_relation()->read(_isgteq);
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ps0430100(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TRelArticoli_multirel_app a;
|
||||||
|
a.run(argc, argv, TR("Tabella"));
|
||||||
|
return 0;
|
||||||
|
}
|
16
ps/ps0430100a.h
Executable file
16
ps/ps0430100a.h
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
// Defines per maschera
|
||||||
|
|
||||||
|
#define F_COD 149
|
||||||
|
#define F_CODTAB 150
|
||||||
|
#define F_USER 151
|
||||||
|
#define F_DUSER 152
|
||||||
|
#define F_ARTICLES 153
|
||||||
|
#define F_SET 154
|
||||||
|
#define F_RESET 155
|
||||||
|
|
||||||
|
#define F_CODART 101
|
||||||
|
#define F_DESCR 102
|
||||||
|
#define F_ATTIVO 103
|
||||||
|
#define F_DESCRAGG 104
|
||||||
|
#define F_CODFORN 105
|
||||||
|
#define F_RAGSOC 106
|
116
ps/ps0430100a.uml
Executable file
116
ps/ps0430100a.uml
Executable file
@ -0,0 +1,116 @@
|
|||||||
|
#include "ps0430100a.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -2 0 2
|
||||||
|
#include <toolbar.h>
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Relazioni utenti Articoli" -1 -1 80 20
|
||||||
|
|
||||||
|
LIST F_COD 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 50 ""
|
||||||
|
ITEM "ATM|ATM"
|
||||||
|
FIELD COD
|
||||||
|
FLAGS "H"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODTAB 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 50 ""
|
||||||
|
USE LF_MULTIREL
|
||||||
|
INPUT COD F_COD SELECT
|
||||||
|
INPUT FIRST F_CODTAB
|
||||||
|
DISPLAY "Codice" FIRST
|
||||||
|
DISPLAY "Descrizione@60" DATA
|
||||||
|
DISPLAY "Causale Collegata" SECOND
|
||||||
|
OUTPUT F_CODTAB FIRST
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD FIRST
|
||||||
|
FLAGS "H"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER 8
|
||||||
|
BEGIN
|
||||||
|
PROMPT 4 2 "Utente "
|
||||||
|
FLAGS "U"
|
||||||
|
// FIELD FIRST
|
||||||
|
KEY 1
|
||||||
|
USE LF_USER SELECT ISGROUP!="X"
|
||||||
|
INPUT USERNAME F_USER
|
||||||
|
DISPLAY "Utente@8" USERNAME
|
||||||
|
DISPLAY "Gruppo@8" GROUPNAME
|
||||||
|
DISPLAY "Descrizione@50" USERDESC
|
||||||
|
OUTPUT F_USER USERNAME
|
||||||
|
OUTPUT F_DUSER USERDESC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
MESSAGE COPY,F_CODTAB
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DUSER 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_ARTICLES 85 -3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "Articoli"
|
||||||
|
ITEM "Codice@20"
|
||||||
|
ITEM "Descrizione@45"
|
||||||
|
ITEM "Attivo"
|
||||||
|
ITEM "Descrizione fornitore@45"
|
||||||
|
ITEM "Codice Fonitore"
|
||||||
|
ITEM "Ragione sociale@45"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON F_SET 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -11 -1 "~Tutti"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "Righe" -1 -1 80 18
|
||||||
|
|
||||||
|
STRING F_CODART 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Codice "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCR 50 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_ATTIVO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Attivo per questo utente"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRAGG 50 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 " "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODFORN 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 " "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 " "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
96
ps/ps0430200.cpp
Executable file
96
ps/ps0430200.cpp
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <relation.h>
|
||||||
|
|
||||||
|
#include <multirel.h>
|
||||||
|
#include "../mg/anamag.h"
|
||||||
|
|
||||||
|
#include "ps0430200a.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// TUser_mask maschera
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TUser_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool get_user_ini(TFilename& name) const;
|
||||||
|
TUser_mask() : TAutomask("ps0430200a") {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TUser_mask::get_user_ini(TFilename& name) const
|
||||||
|
{
|
||||||
|
name = prefix().get_studio();
|
||||||
|
name.add("config");
|
||||||
|
name.add(get(F_USER));
|
||||||
|
name.ext("ini");
|
||||||
|
return name.exist();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TUser_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_USER:
|
||||||
|
if (e == fe_modify)
|
||||||
|
{
|
||||||
|
const char* const defpar = "or";
|
||||||
|
TFilename inipath; get_user_ini(inipath);
|
||||||
|
TConfig userconf(inipath, defpar);
|
||||||
|
|
||||||
|
for (int i = o.mask().fields()-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
TMask_field& f = o.mask().fld(i);
|
||||||
|
const TFieldref* fr = f.field();
|
||||||
|
|
||||||
|
if (fr != NULL)
|
||||||
|
{
|
||||||
|
f.set(fr->read(userconf, defpar));
|
||||||
|
f.check();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TUser_set_app : public TSkeleton_application
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual const char * extra_modules() const {return "ba";}
|
||||||
|
virtual void main_loop();
|
||||||
|
};
|
||||||
|
|
||||||
|
void TUser_set_app::main_loop()
|
||||||
|
{
|
||||||
|
TUser_mask mask;
|
||||||
|
|
||||||
|
while (mask.run() == K_ENTER)
|
||||||
|
{
|
||||||
|
const char* const defpar = "or";
|
||||||
|
TFilename inipath; mask.get_user_ini(inipath);
|
||||||
|
TConfig userconf(inipath, defpar);
|
||||||
|
|
||||||
|
for (int i = mask.fields()-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
const TMask_field& f = mask.fld(i);
|
||||||
|
const TFieldref* fr = f.field();
|
||||||
|
if (fr != NULL)
|
||||||
|
fr->write(userconf, defpar, f.get());
|
||||||
|
}
|
||||||
|
mask.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int ps0430200(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TUser_set_app a;
|
||||||
|
a.run(argc, argv, TR("Configurazione campi per utente"));
|
||||||
|
return 0;
|
||||||
|
}
|
22
ps/ps0430200a.h
Executable file
22
ps/ps0430200a.h
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
// Defines per maschera
|
||||||
|
|
||||||
|
#define F_USER 101
|
||||||
|
#define F_DUSER 102
|
||||||
|
#define F_GRMERC 103
|
||||||
|
#define F_DGRMERC 104
|
||||||
|
#define F_SGRMERC 105
|
||||||
|
#define F_DSGRMERC 106
|
||||||
|
#define F_SOTTOSCORTA 107
|
||||||
|
#define F_ARTICLES 108
|
||||||
|
#define F_CODNUM 109
|
||||||
|
#define F_DESNUM 110
|
||||||
|
#define F_TIPODOC 111
|
||||||
|
#define F_DESTIPODOC 112
|
||||||
|
#define F_MAG 113
|
||||||
|
#define F_DESMAG 114
|
||||||
|
#define F_DEP 115
|
||||||
|
#define F_DESDEP 116
|
||||||
|
#define F_PREZZO 117
|
||||||
|
#define F_CDCT 118
|
||||||
|
#define F_FSCT 119
|
||||||
|
|
225
ps/ps0430200a.uml
Executable file
225
ps/ps0430200a.uml
Executable file
@ -0,0 +1,225 @@
|
|||||||
|
#include "ps0430200a.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -3 0 3
|
||||||
|
|
||||||
|
BUTTON DLG_SAVEREC 11 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
PICTURE BMP_SAVEREC
|
||||||
|
PICTURE BMP_SAVERECDN
|
||||||
|
MESSAGE EXIT,K_ENTER
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 11 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Configurazione campi per utente" 0 0 0 -3
|
||||||
|
|
||||||
|
STRING F_USER 8
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Utente "
|
||||||
|
FLAGS "U"
|
||||||
|
KEY 1
|
||||||
|
USE LF_USER SELECT ISGROUP!="X"
|
||||||
|
INPUT USERNAME F_USER
|
||||||
|
DISPLAY "Utente@8" USERNAME
|
||||||
|
DISPLAY "Gruppo@8" GROUPNAME
|
||||||
|
DISPLAY "Descrizione@50" USERDESC
|
||||||
|
OUTPUT F_USER USERNAME
|
||||||
|
OUTPUT F_DUSER USERDESC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DUSER 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_GRMERC 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Gruppo merc. "
|
||||||
|
FLAG "U"
|
||||||
|
USE GMC KEY 1 SELECT CODTAB[4,5]==""
|
||||||
|
INPUT CODTAB F_GRMERC
|
||||||
|
DISPLAY "Codice" CODTAB[1,3]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRMERC CODTAB[1,3]
|
||||||
|
OUTPUT F_DGRMERC S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
FIELD OR14_GRM
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DGRMERC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 4 ""
|
||||||
|
USE GMC KEY 2 SELECT CODTAB[4,5]==""
|
||||||
|
INPUT S0 F_DGRMERC
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRMERC CODTAB[1,3]
|
||||||
|
OUTPUT F_DGRMERC S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SGRMERC 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Sottogr.merc ."
|
||||||
|
FLAG "U"
|
||||||
|
USE GMC
|
||||||
|
INPUT CODTAB[1,3] F_GRMERC
|
||||||
|
INPUT CODTAB[4,5] F_SGRMERC
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRMERC CODTAB[1,3]
|
||||||
|
OUTPUT F_SGRMERC CODTAB[4,5]
|
||||||
|
OUTPUT F_DSGRMERC S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FIELD OR14_SGR
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DSGRMERC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 6 ""
|
||||||
|
USE GMC KEY 2 SELECT CODTAB[4,5] != ""
|
||||||
|
INPUT S0 F_DSGRMERC
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_SGRMERC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CDCT 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "CDC/Commessa "
|
||||||
|
FLAGS "UZ"
|
||||||
|
USE CMS
|
||||||
|
INPUT CODTAB F_CDCT
|
||||||
|
DISPLAY "Codice@20" CODTAB
|
||||||
|
DISPLAY "Descrizione@70" S0
|
||||||
|
OUTPUT F_CDCT CODTAB
|
||||||
|
FILED OR14_CDCT
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_FSCT 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 8 "Fase "
|
||||||
|
FLAGS "UZ"
|
||||||
|
USE FSC
|
||||||
|
INPUT CODTAB F_FSCT
|
||||||
|
DISPLAY "Codice@20" CODTAB
|
||||||
|
DISPLAY "Descrizione@70" S0
|
||||||
|
OUTPUT F_FSCT CODTAB
|
||||||
|
FIELD OR14_FSCT
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODNUM 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Numerazione "
|
||||||
|
USE %NUM
|
||||||
|
INPUT CODTAB F_CODNUM
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODNUM CODTAB
|
||||||
|
OUTPUT F_DESNUM S0
|
||||||
|
FLAG "UG"
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FIELD OR14_NUM
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESNUM 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 10 ""
|
||||||
|
USE %NUM KEY 2
|
||||||
|
INPUT S0 F_DESNUM
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_CODNUM
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODOC 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Tipo "
|
||||||
|
USE %TIP
|
||||||
|
INPUT CODTAB F_TIPODOC
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_TIPODOC CODTAB
|
||||||
|
OUTPUT F_DESTIPODOC S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAG "UG"
|
||||||
|
FIELD OR14_TIP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESTIPODOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 12 ""
|
||||||
|
USE %TIP KEY 2
|
||||||
|
INPUT S0 F_DESTIPODOC
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_TIPODOC
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_MAG 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Magazzino "
|
||||||
|
FLAGS "UG"
|
||||||
|
USE MAG SELECT CODTAB[4,5]==""
|
||||||
|
INPUT CODTAB F_MAG
|
||||||
|
DISPLAY "Codice " CODTAB[1,3]
|
||||||
|
DISPLAY "Denominazione mag.@50 " S0
|
||||||
|
OUTPUT F_MAG CODTAB[1,3]
|
||||||
|
OUTPUT F_DESMAG S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FIELD OR14_MAG
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESMAG 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 14 ""
|
||||||
|
USE MAG KEY 2 SELECT CODTAB[4,5]==""
|
||||||
|
INPUT S0 F_DESMAG
|
||||||
|
DISPLAY "Denominazione magazzino@50" S0
|
||||||
|
DISPLAY "Cod. magazzino" CODTAB[1,3]
|
||||||
|
DISPLAY "Cod. deposito" CODTAB[4,5]
|
||||||
|
COPY OUTPUT F_MAG
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DEP 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Deposito "
|
||||||
|
FLAGS "U"
|
||||||
|
USE MAG SELECT CODTAB[4,5]!=""
|
||||||
|
INPUT CODTAB[1,3] F_MAG
|
||||||
|
INPUT CODTAB[4,5] F_DEP
|
||||||
|
DISPLAY "Codice " CODTAB
|
||||||
|
DISPLAY "Denominazione dep.@50 " S0
|
||||||
|
OUTPUT F_MAG CODTAB[1,3]
|
||||||
|
OUTPUT F_DEP CODTAB[4,5]
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
FIELD OR14_DEP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESDEP 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 16 ""
|
||||||
|
USE MAG KEY 2 SELECT CODTAB[4,5]!=""
|
||||||
|
INPUT S0 F_DESDEP
|
||||||
|
COPY DISPLAY F_DESMAG
|
||||||
|
OUTPUT F_DEP CODTAB[4,5]
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
16
ps/pt0001.cpp
Executable file
16
ps/pt0001.cpp
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#include <xvt.h>
|
||||||
|
|
||||||
|
#include "pt0001.h"
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
||||||
|
switch(n)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
pt0001100(argc, argv); break; // settaggio clienti non in allegato
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
return 0;
|
||||||
|
}
|
1
ps/pt0001.h
Executable file
1
ps/pt0001.h
Executable file
@ -0,0 +1 @@
|
|||||||
|
int pt0001100(int argc, char* argv[]);
|
60
ps/pt000100.cpp
Executable file
60
ps/pt000100.cpp
Executable file
@ -0,0 +1,60 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "clifo.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------
|
||||||
|
// TSkeleton_application
|
||||||
|
//----------------------------------
|
||||||
|
class TClienti0001 : public TSkeleton_application
|
||||||
|
{
|
||||||
|
virtual const char * extra_modules() const {return "ba";}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
virtual void main_loop();
|
||||||
|
|
||||||
|
TClienti0001() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
TClienti0001& app() { return (TClienti0001&) main_app(); }
|
||||||
|
|
||||||
|
|
||||||
|
bool TClienti0001::create()
|
||||||
|
{
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TClienti0001::destroy()
|
||||||
|
{
|
||||||
|
return TApplication::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void TClienti0001::main_loop()
|
||||||
|
{
|
||||||
|
TCursor clienti(new TRelation(LF_CLIENTI));
|
||||||
|
TRectype from(clienti.curr());
|
||||||
|
from.put(CF_TIPOCF, 'C');
|
||||||
|
clienti.setregion(from, from);
|
||||||
|
for (clienti = 0L; clienti.pos() < items; ++clienti)
|
||||||
|
{
|
||||||
|
clienti.curr().put(CF_ALLEG, '6');
|
||||||
|
clienti.curr().rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int pt0001100 (int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TClienti0001 main_app;
|
||||||
|
main_app.run(argc, argv, TR("Settaggio clienti non in allegato"));
|
||||||
|
return TRUE;
|
||||||
|
}
|
58
ps/pt0001100.cpp
Executable file
58
ps/pt0001100.cpp
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#include <applicat.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "clifo.h"
|
||||||
|
|
||||||
|
//----------------------------------
|
||||||
|
// TSkeleton_application
|
||||||
|
//----------------------------------
|
||||||
|
class TClienti0001 : public TSkeleton_application
|
||||||
|
{
|
||||||
|
virtual const char * extra_modules() const {return "ba";}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
virtual void main_loop();
|
||||||
|
|
||||||
|
TClienti0001() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
TClienti0001& app() { return (TClienti0001&) main_app(); }
|
||||||
|
|
||||||
|
bool TClienti0001::create()
|
||||||
|
{
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TClienti0001::destroy()
|
||||||
|
{
|
||||||
|
return TApplication::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TClienti0001::main_loop()
|
||||||
|
{
|
||||||
|
TCursor clienti(new TRelation(LF_CLIFO));
|
||||||
|
TRectype from(clienti.curr());
|
||||||
|
from.put(CLI_TIPOCF, 'C');
|
||||||
|
clienti.setregion(from, from);
|
||||||
|
const long items = clienti.items();
|
||||||
|
for (clienti = 0L; clienti.pos() < items; ++clienti)
|
||||||
|
{
|
||||||
|
clienti.curr().put(CLI_ALLEG, '6');
|
||||||
|
clienti.file().rewrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int pt0001100 (int argc, char* argv[])
|
||||||
|
{
|
||||||
|
TClienti0001 main_app;
|
||||||
|
main_app.run(argc, argv, TR("Settaggio clienti non in allegato"));
|
||||||
|
return TRUE;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user