Patch level : 10 personalizzazione per SRM
Files correlati : Ricompilazione Demo : [ ] Commento : tabella di modulo CAF clieni/articoli/fornitori per SRM git-svn-id: svn://10.65.10.50/branches/R_10_00@21198 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
48e96c22c9
commit
f3cf3eccf8
21
ps/pd0610.cpp
Executable file
21
ps/pd0610.cpp
Executable file
@ -0,0 +1,21 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "pd0610.h"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
const int s = (argc > 1) ? argv[1][1] - '0' : 0;
|
||||
|
||||
switch (s)
|
||||
{
|
||||
case 0 :
|
||||
default: pd0610100(argc,argv); // Tabella Clienti/Articoli per SRM
|
||||
break;
|
||||
}
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
3
ps/pd0610.h
Executable file
3
ps/pd0610.h
Executable file
@ -0,0 +1,3 @@
|
||||
int pd0610100(int argc, char* argv[]);
|
||||
|
||||
|
219
ps/pd0610100.cpp
Executable file
219
ps/pd0610100.cpp
Executable file
@ -0,0 +1,219 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <recset.h>
|
||||
#include <relation.h>
|
||||
#include <tabmod.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "pd0610100a.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Tabella clienti/articoli/fornitori
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TTabmod_caf_msk: public TAutomask
|
||||
{
|
||||
protected:
|
||||
void riempi_sheet();
|
||||
void aggiungi_riga();
|
||||
void registra();
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
public:
|
||||
TTabmod_caf_msk();
|
||||
};
|
||||
|
||||
void TTabmod_caf_msk::riempi_sheet()
|
||||
{
|
||||
const long cliente = get_long(F_CLIENTE);
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
sheet.destroy();
|
||||
if (cliente <= 0)
|
||||
{
|
||||
sheet.force_update();
|
||||
return;
|
||||
}
|
||||
TString8 codcli;
|
||||
codcli.format("%06ld", cliente);
|
||||
TString query;
|
||||
query << "USE &CAF\n"
|
||||
<< "FROM CODTAB=\"" << codcli << "\"\n"
|
||||
<< "TO CODTAB=\"" << codcli << "\"";
|
||||
TISAM_recordset caf_query(query);
|
||||
for (bool ok = caf_query.move_first(); ok; ok = caf_query.move_next())
|
||||
{
|
||||
const TRectype& caf = caf_query.cursor()->curr();
|
||||
const TString80 codtab = caf.get("CODTAB");
|
||||
const TString8 forn1 = caf.get("I0");
|
||||
const TString8 forn2 = caf.get("I1");
|
||||
TToken_string& row = sheet.row(-1);
|
||||
row.add(codtab.left(6), sheet.cid2index(S_CLIENTE));
|
||||
row.add(codtab.mid(6), sheet.cid2index(S_ARTICOLO));
|
||||
row.add(forn1, sheet.cid2index(S_FORN1));
|
||||
row.add(forn2, sheet.cid2index(S_FORN2));
|
||||
sheet.check_row(sheet.items()-1);
|
||||
}
|
||||
sheet.force_update();
|
||||
}
|
||||
|
||||
void TTabmod_caf_msk::aggiungi_riga()
|
||||
{
|
||||
const TString8 cliente = get(F_CLIENTE);
|
||||
if (cliente.empty())
|
||||
return;
|
||||
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
TToken_string& row = sheet.row(-1);
|
||||
row.add(cliente, sheet.cid2index(S_CLIENTE));
|
||||
sheet.force_update();
|
||||
}
|
||||
|
||||
void TTabmod_caf_msk::registra()
|
||||
{
|
||||
TModule_table caf("&CAF");
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
const int last_item = sheet.cid2index(S_FORN1)+1;
|
||||
|
||||
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
||||
{
|
||||
TToken_string& row = *(TToken_string*)riga;
|
||||
TString80 codtab;
|
||||
const long codcli = atol(row.get(sheet.cid2index(S_CLIENTE)));
|
||||
codtab.format("%06ld", codcli);
|
||||
codtab << row.get(sheet.cid2index(S_ARTICOLO));
|
||||
const int items = row.items();
|
||||
if (items < last_item)
|
||||
{
|
||||
caf.put("CODTAB", codtab);
|
||||
caf.remove();
|
||||
}
|
||||
else
|
||||
{
|
||||
const long forn1 = atol(row.get(sheet.cid2index(S_FORN1)));
|
||||
const long forn2 = atol(row.get(sheet.cid2index(S_FORN2)));
|
||||
caf.put("CODTAB", codtab);
|
||||
caf.put("I0", forn1);
|
||||
caf.put("I1", forn2);
|
||||
caf.rewrite_write();
|
||||
}
|
||||
}
|
||||
riempi_sheet();
|
||||
}
|
||||
|
||||
bool TTabmod_caf_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch(o.dlg())
|
||||
{
|
||||
case DLG_CANCEL:
|
||||
if(e == fe_button && jolly == 0)
|
||||
{
|
||||
reset(F_CLIENTE);
|
||||
reset(F_RAGSOC);
|
||||
sfield(F_SHEET).destroy();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
if(e == fe_button)
|
||||
registra();
|
||||
break;
|
||||
case DLG_DELREC:
|
||||
if(e == fe_button && jolly == 1)
|
||||
{
|
||||
TMask& msk = sfield(F_SHEET).sheet_mask();
|
||||
msk.reset(S_FORN1);
|
||||
msk.reset(S_RAGSOC1);
|
||||
msk.reset(S_FORN2);
|
||||
msk.reset(S_RAGSOC2);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case F_CLIENTE:
|
||||
if(e == fe_modify)
|
||||
riempi_sheet();
|
||||
break;
|
||||
case F_SHEET:
|
||||
if(e == se_query_add)
|
||||
{
|
||||
aggiungi_riga();
|
||||
return false;
|
||||
}
|
||||
if(e == se_query_del)
|
||||
{
|
||||
TSheet_field& sheet = (TSheet_field&)o;
|
||||
TToken_string& row = sheet.row(jolly);
|
||||
row.add("0", sheet.cid2index(S_FORN1));
|
||||
row.add("0", sheet.cid2index(S_FORN2));
|
||||
sheet.force_update(jolly);
|
||||
TButton_field& button = (TButton_field&)sheet.sheet_mask().field(DLG_DELREC);
|
||||
return on_field_event(button, fe_button, 1);
|
||||
}
|
||||
break;
|
||||
case S_ARTICOLO:
|
||||
if(e == fe_modify)
|
||||
{
|
||||
TSheet_field& sheet = sfield(F_SHEET);
|
||||
const int rsel = sheet.selected();
|
||||
const TString& codart = o.get();
|
||||
|
||||
FOR_EACH_SHEET_ROW(sheet, r, riga)
|
||||
{
|
||||
if (r == rsel)
|
||||
continue;
|
||||
|
||||
TToken_string& row = *(TToken_string*)riga;
|
||||
if (row.get(sheet.cid2index(S_ARTICOLO)) == codart)
|
||||
{
|
||||
TString msg;
|
||||
msg << "Attenzione: esiste già una riga con articolo " << codart;
|
||||
warning_box(msg);
|
||||
|
||||
sheet.select(rsel);
|
||||
TMask& rmsk = sheet.sheet_mask();
|
||||
rmsk.set(S_ARTICOLO, "");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TTabmod_caf_msk::TTabmod_caf_msk() : TAutomask("pd0610100a")
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TTabmod_caf_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TTabmod_caf_app: public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
virtual bool check_autorization() const {return false;}
|
||||
virtual const char * extra_modules() const {return "ve";}
|
||||
virtual void main_loop();
|
||||
void elabora();
|
||||
};
|
||||
|
||||
void TTabmod_caf_app::elabora()
|
||||
{
|
||||
}
|
||||
|
||||
void TTabmod_caf_app::main_loop()
|
||||
{
|
||||
TTabmod_caf_msk m;
|
||||
while (m.run() == K_ENTER)
|
||||
{
|
||||
elabora();
|
||||
}
|
||||
}
|
||||
|
||||
int pd0610100(int argc, char* argv[])
|
||||
{
|
||||
TTabmod_caf_app app;
|
||||
app.run(argc, argv, TR("Tabella Clienti/Articoli/Fornitori"));
|
||||
return 0;
|
||||
}
|
12
ps/pd0610100a.h
Executable file
12
ps/pd0610100a.h
Executable file
@ -0,0 +1,12 @@
|
||||
//Definizione campi per maschera pd0610100a
|
||||
#define F_CLIENTE 201
|
||||
#define F_RAGSOC 202
|
||||
#define F_SHEET 203
|
||||
|
||||
#define S_CLIENTE 101
|
||||
#define S_ARTICOLO 102
|
||||
#define S_DESART 103
|
||||
#define S_FORN1 104
|
||||
#define S_RAGSOC1 105
|
||||
#define S_FORN2 106
|
||||
#define S_RAGSOC2 107
|
167
ps/pd0610100a.uml
Executable file
167
ps/pd0610100a.uml
Executable file
@ -0,0 +1,167 @@
|
||||
#include "pd0610100a.h"
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC
|
||||
BEGIN
|
||||
PROMPT 1 1 "Salva"
|
||||
PICTURE TOOL_SAVEREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL
|
||||
BEGIN
|
||||
PROMPT 1 1 "Annulla"
|
||||
PICTURE TOOL_CANCEL
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Clienti/Articoli/Fornitori" -1 -1 80 20
|
||||
|
||||
NUMBER F_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 2 1 "Cod. cliente "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT CODCF F_CLIENTE
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
OUTPUT F_CLIENTE CODCF
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 25 1 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C" SELECT
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET 80 10
|
||||
BEGIN
|
||||
PROMPT 2 3 "Articoli/Fornitori"
|
||||
ITEM "Cliente@6"
|
||||
ITEM "Cod.articolo@20"
|
||||
ITEM "Descrizione@45"
|
||||
ITEM "Fornitore 1"
|
||||
ITEM "Ragione sociale@45"
|
||||
ITEM "Fornitore 2"
|
||||
ITEM "Ragione sociale@45"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Articoli/Fornitori" -1 -1 80 18
|
||||
|
||||
NUMBER S_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 2 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING S_ARTICOLO 20
|
||||
BEGIN
|
||||
PROMPT 2 3 "Cod. art. "
|
||||
FLAG "UG"
|
||||
USE LF_ANAMAG
|
||||
INPUT CODART S_ARTICOLO
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@45" DESCR
|
||||
OUTPUT S_ARTICOLO CODART
|
||||
OUTPUT S_DESART DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING S_DESART 50 45
|
||||
BEGIN
|
||||
PROMPT 2 4 "Des. art. "
|
||||
USE LF_ANAMAG KEY 2
|
||||
INPUT DESCR S_DESART
|
||||
DISPLAY "Descrizione@45" DESCR
|
||||
DISPLAY "Codice@20" CODART
|
||||
COPY OUTPUT S_ARTICOLO
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER S_FORN1 6
|
||||
BEGIN
|
||||
PROMPT 2 5 "Fornit. 1 "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F" SELECT
|
||||
INPUT CODCF S_FORN1
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
OUTPUT S_FORN1 CODCF
|
||||
OUTPUT S_RAGSOC1 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING S_RAGSOC1 50 45
|
||||
BEGIN
|
||||
PROMPT 25 5 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F" SELECT
|
||||
INPUT RAGSOC S_RAGSOC1
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT S_FORN1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER S_FORN2 6
|
||||
BEGIN
|
||||
PROMPT 2 6 "Fornit. 2 "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F" SELECT
|
||||
INPUT CODCF S_FORN2
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
OUTPUT S_FORN2 CODCF
|
||||
OUTPUT S_RAGSOC2 RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING S_RAGSOC2 50 45
|
||||
BEGIN
|
||||
PROMPT 25 6 ""
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F" SELECT
|
||||
INPUT RAGSOC S_RAGSOC2
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
COPY OUTPUT S_FORN2
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Elimina"
|
||||
PICTURE BMP_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 3 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user