From ab57d73bc0b0081caf7314da38bccfe5106ab951 Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 20 Dec 2007 11:21:38 +0000 Subject: [PATCH] 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 --- ps/pd0777100a.ini | 141 ++++++++++++++++++++++++++++ ps/ps0430.cpp | 19 ++++ ps/ps0430.h | 2 + ps/ps0430100.cpp | 227 ++++++++++++++++++++++++++++++++++++++++++++++ ps/ps0430100a.h | 16 ++++ ps/ps0430100a.uml | 116 +++++++++++++++++++++++ ps/ps0430200.cpp | 96 ++++++++++++++++++++ ps/ps0430200a.h | 22 +++++ ps/ps0430200a.uml | 225 +++++++++++++++++++++++++++++++++++++++++++++ ps/pt0001.cpp | 16 ++++ ps/pt0001.h | 1 + ps/pt000100.cpp | 60 ++++++++++++ ps/pt0001100.cpp | 58 ++++++++++++ 13 files changed, 999 insertions(+) create mode 100755 ps/pd0777100a.ini create mode 100755 ps/ps0430.cpp create mode 100755 ps/ps0430.h create mode 100755 ps/ps0430100.cpp create mode 100755 ps/ps0430100a.h create mode 100755 ps/ps0430100a.uml create mode 100755 ps/ps0430200.cpp create mode 100755 ps/ps0430200a.h create mode 100755 ps/ps0430200a.uml create mode 100755 ps/pt0001.cpp create mode 100755 ps/pt0001.h create mode 100755 ps/pt000100.cpp create mode 100755 ps/pt0001100.cpp diff --git a/ps/pd0777100a.ini b/ps/pd0777100a.ini new file mode 100755 index 000000000..a440cd332 --- /dev/null +++ b/ps/pd0777100a.ini @@ -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 + diff --git a/ps/ps0430.cpp b/ps/ps0430.cpp new file mode 100755 index 000000000..d923e7f0e --- /dev/null +++ b/ps/ps0430.cpp @@ -0,0 +1,19 @@ +#include + +#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; +} \ No newline at end of file diff --git a/ps/ps0430.h b/ps/ps0430.h new file mode 100755 index 000000000..fa4a1241d --- /dev/null +++ b/ps/ps0430.h @@ -0,0 +1,2 @@ +int ps0430100(int argc, char* argv[]); +int ps0430200(int argc, char* argv[]); diff --git a/ps/ps0430100.cpp b/ps/ps0430100.cpp new file mode 100755 index 000000000..76b22e6b7 --- /dev/null +++ b/ps/ps0430100.cpp @@ -0,0 +1,227 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#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; +} diff --git a/ps/ps0430100a.h b/ps/ps0430100a.h new file mode 100755 index 000000000..66123ccb1 --- /dev/null +++ b/ps/ps0430100a.h @@ -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 diff --git a/ps/ps0430100a.uml b/ps/ps0430100a.uml new file mode 100755 index 000000000..49456f695 --- /dev/null +++ b/ps/ps0430100a.uml @@ -0,0 +1,116 @@ +#include "ps0430100a.h" + +TOOLBAR "" 0 -2 0 2 +#include +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 \ No newline at end of file diff --git a/ps/ps0430200.cpp b/ps/ps0430200.cpp new file mode 100755 index 000000000..65af0d9a4 --- /dev/null +++ b/ps/ps0430200.cpp @@ -0,0 +1,96 @@ +#include +#include +#include + +#include +#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; +} diff --git a/ps/ps0430200a.h b/ps/ps0430200a.h new file mode 100755 index 000000000..70fb4faff --- /dev/null +++ b/ps/ps0430200a.h @@ -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 + diff --git a/ps/ps0430200a.uml b/ps/ps0430200a.uml new file mode 100755 index 000000000..faa7a71f0 --- /dev/null +++ b/ps/ps0430200a.uml @@ -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 diff --git a/ps/pt0001.cpp b/ps/pt0001.cpp new file mode 100755 index 000000000..daa188c79 --- /dev/null +++ b/ps/pt0001.cpp @@ -0,0 +1,16 @@ +#include + +#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; +} \ No newline at end of file diff --git a/ps/pt0001.h b/ps/pt0001.h new file mode 100755 index 000000000..3b1b2ec7b --- /dev/null +++ b/ps/pt0001.h @@ -0,0 +1 @@ +int pt0001100(int argc, char* argv[]); diff --git a/ps/pt000100.cpp b/ps/pt000100.cpp new file mode 100755 index 000000000..f1da0c045 --- /dev/null +++ b/ps/pt000100.cpp @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include + +#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; +} diff --git a/ps/pt0001100.cpp b/ps/pt0001100.cpp new file mode 100755 index 000000000..ebcbbfe48 --- /dev/null +++ b/ps/pt0001100.cpp @@ -0,0 +1,58 @@ +#include +#include +#include +#include +#include +#include + +#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; +}