Patch level : 2.2 194
Files correlati : ve7.exe ve7600a.msk jbi_rdoc.trr jbi_tab.trr Ricompilazione Demo : [ ] Commento : Trasferimento a JBI git-svn-id: svn://10.65.10.50/trunk@12587 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4e8f46a544
commit
772ed6ce80
22
ve/jbi_rdoc.trr
Executable file
22
ve/jbi_rdoc.trr
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
1001
|
||||||
|
18
|
||||||
|
CODDITTA|3|5|0|CODICE DITTA
|
||||||
|
TIPO|1|1|0|TIPOLOGIA DOCUMENTO F fattura/R nota di credito/O ordine
|
||||||
|
DATADOC|5|8|0|DATA DOCUMENTO
|
||||||
|
CODDEP|1|5|0|CODICE DEPOSITO
|
||||||
|
CODMAG|1|3|0|CODICE MAGAZZINO
|
||||||
|
GRUPPO|1|5|0|GRUPPO
|
||||||
|
SOTTOGR|1|3|0|SOTTOGRUPPO
|
||||||
|
ZONA|1|3|0|ZONA
|
||||||
|
REGIONE|1|2|0|REGIONE
|
||||||
|
PROV|1|2|0|PTOVINCIA
|
||||||
|
CATMERCLI|1|2|0|CATEGORIA MERCEOLOGICA CLIENTE
|
||||||
|
CODCLI|3|6|0|CODICE CLIENTE
|
||||||
|
CODAG|1|5|0|CODICE AGENTE
|
||||||
|
CODART|1|20|0|CODICE ARTICOLO
|
||||||
|
TIPODOC|1|4|0|TIPO DOCUMENTO
|
||||||
|
QTA|4|15|5|QUANTITA
|
||||||
|
IMPORTO|4|18|5|IMPORTO
|
||||||
|
SCONTATO|4|18|5|IMPORTO SCONTATO
|
||||||
|
1
|
||||||
|
TIPODOC+CODDEP+CODMAG+CODART|X
|
7
ve/jbi_tab.trr
Executable file
7
ve/jbi_tab.trr
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
1002
|
||||||
|
3
|
||||||
|
TIPO|1|3|0|TIPO TABELLA
|
||||||
|
CODICE|1|25|0|CODICE
|
||||||
|
DESCRI|1|70|0|DESCRIZIONE
|
||||||
|
1
|
||||||
|
TIPO+CODICE|X
|
@ -8,6 +8,8 @@ int main( int argc, char** argv )
|
|||||||
|
|
||||||
switch (r)
|
switch (r)
|
||||||
{
|
{
|
||||||
|
case 5:
|
||||||
|
ve7600(argc, argv); break; // trasferimento JBI
|
||||||
case 4:
|
case 4:
|
||||||
ve7500(argc, argv); break; // importazione listini gommisti (michelin,pirelli etc.)
|
ve7500(argc, argv); break; // importazione listini gommisti (michelin,pirelli etc.)
|
||||||
case 3:
|
case 3:
|
||||||
|
1
ve/ve7.h
1
ve/ve7.h
@ -6,5 +6,6 @@ int ve7200 (int, char**);
|
|||||||
int ve7300 (int, char**);
|
int ve7300 (int, char**);
|
||||||
int ve7400 (int, char**);
|
int ve7400 (int, char**);
|
||||||
int ve7500 (int, char**);
|
int ve7500 (int, char**);
|
||||||
|
int ve7600 (int, char**);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
271
ve/ve7600.cpp
Executable file
271
ve/ve7600.cpp
Executable file
@ -0,0 +1,271 @@
|
|||||||
|
#include <automask.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <currency.h>
|
||||||
|
#include <execp.h>
|
||||||
|
#include <printapp.h>
|
||||||
|
#include <progind.h>
|
||||||
|
#include <recarray.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "ve7.h"
|
||||||
|
#include "ve7600a.h"
|
||||||
|
|
||||||
|
#include <..\pr\agenti.h>
|
||||||
|
#include <..\mg\anamag.h>
|
||||||
|
#include <clifo.h>
|
||||||
|
#include <cfven.h>
|
||||||
|
#include <comuni.h>
|
||||||
|
#include <doc.h>
|
||||||
|
#include <rdoc.h>
|
||||||
|
|
||||||
|
#define ALIAS_TIP 201
|
||||||
|
|
||||||
|
class TRDoc2JBI_mask : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TRDoc2JBI_mask();
|
||||||
|
virtual ~TRDoc2JBI_mask(){};
|
||||||
|
};
|
||||||
|
|
||||||
|
TRDoc2JBI_mask::TRDoc2JBI_mask() :TAutomask ("ve7600a")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRDoc2JBI_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TRDoc2JBI : public TSkeleton_application
|
||||||
|
{
|
||||||
|
TRDoc2JBI_mask* _msk;
|
||||||
|
TConfig* _config;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual bool create();
|
||||||
|
virtual bool destroy();
|
||||||
|
virtual void main_loop();
|
||||||
|
void transfer(void);
|
||||||
|
bool insert_tab(TExternisamfile& filetab, const char* tipo, const char* codice, const char* descri);
|
||||||
|
void update_tab(TExternisamfile& filetab, const TRectype rectab);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TRDoc2JBI_mask& mask() { return *_msk; };
|
||||||
|
TRDoc2JBI() {};
|
||||||
|
virtual ~TRDoc2JBI() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TRDoc2JBI::create()
|
||||||
|
{
|
||||||
|
open_files(LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_CLIFO, LF_CFVEN, LF_COMUNI, LF_NDITTE, 0);
|
||||||
|
_msk = new TRDoc2JBI_mask();
|
||||||
|
_config = new TConfig("ve7600.ini");
|
||||||
|
|
||||||
|
return TSkeleton_application::create();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRDoc2JBI::destroy()
|
||||||
|
{
|
||||||
|
delete _config;
|
||||||
|
delete _msk;
|
||||||
|
return TSkeleton_application::destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRDoc2JBI::main_loop()
|
||||||
|
{
|
||||||
|
// preimposto i valori specificati sulla riga di comando oppure faccio partire la maschera
|
||||||
|
KEY key = K_ENTER;
|
||||||
|
if (argc() >= 4)
|
||||||
|
{
|
||||||
|
_msk->set(F_PERCORSO, argv(3));
|
||||||
|
_msk->set(F_ANNO, argv(2));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_msk->set(F_PERCORSO, _config->get("PERCORSO", "PARAMETRI"));
|
||||||
|
_msk->set(F_ANNO, _config->get("ANNO", "PARAMETRI") );
|
||||||
|
key = _msk->run();
|
||||||
|
}
|
||||||
|
if (key == K_ENTER)
|
||||||
|
transfer();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TRDoc2JBI::insert_tab(TExternisamfile& filetab, const char* tipo, const char* codice, const char* descri)
|
||||||
|
{
|
||||||
|
filetab.zero();
|
||||||
|
filetab.put("TIPO", tipo);
|
||||||
|
filetab.put("CODICE", codice);
|
||||||
|
filetab.put("DESCRI", descri);
|
||||||
|
int err = filetab.write();
|
||||||
|
if (err == _isdupkey)
|
||||||
|
err = NOERR;
|
||||||
|
return (err == NOERR);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRDoc2JBI::transfer()
|
||||||
|
{
|
||||||
|
TRelation rel(LF_RIGHEDOC);
|
||||||
|
rel.add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|NDOC==NDOC|PROVV==PROVV");
|
||||||
|
rel.add("%TIP", "CODTAB==TIPODOC", 1, LF_DOC, ALIAS_TIP);
|
||||||
|
|
||||||
|
TRDoc2JBI_mask& m = mask();
|
||||||
|
|
||||||
|
TString expr;
|
||||||
|
const int anno = m.get_int(F_ANNO);
|
||||||
|
_config->set("ANNO", anno, "PARAMETRI");
|
||||||
|
|
||||||
|
//expr.format("34->CODARTMAG != \"\" && 34->ANNO==%d && 33->TIPOCF == \"C\"", anno);
|
||||||
|
expr << "(" << RDOC_CODARTMAG << " != \"\")";
|
||||||
|
expr << " && (" << RDOC_ANNO << " == \"" << anno << "\")";
|
||||||
|
//expr << "&& (33->TIPOCF = \"C\")";
|
||||||
|
|
||||||
|
TCursor cur(&rel, expr, 2);
|
||||||
|
const TString& path = m.get(F_PERCORSO);
|
||||||
|
_config->set("PERCORSO", path, "PARAMETRI");
|
||||||
|
|
||||||
|
TFilename rdocname = path;
|
||||||
|
rdocname << _config->get("RIGHEDOC", "ARCHIVI");
|
||||||
|
rdocname.ext("dbf");
|
||||||
|
TFilename rdoctrr = "jbi_rdoc.trr";
|
||||||
|
rdoctrr.custom_path();
|
||||||
|
TExternisamfile filerdoc(rdocname, rdoctrr);
|
||||||
|
filerdoc.zap();
|
||||||
|
|
||||||
|
TFilename tabname = path;
|
||||||
|
tabname << _config->get("TABELLE", "ARCHIVI");
|
||||||
|
tabname.ext("dbf");
|
||||||
|
TFilename tabtrr = "jbi_tab.trr";
|
||||||
|
tabtrr.custom_path();
|
||||||
|
TExternisamfile filetab(tabname, tabtrr);
|
||||||
|
filetab.zap();
|
||||||
|
|
||||||
|
// aggiungo il record ditta
|
||||||
|
|
||||||
|
TString80 ragsoc = cache().get(LF_NDITTE, get_firm(), "RAGSOC");
|
||||||
|
TString16 firm;
|
||||||
|
firm.format("%d", get_firm());
|
||||||
|
insert_tab(filetab, "DIT", (const char*) firm, ragsoc);
|
||||||
|
|
||||||
|
const long items = cur.items();
|
||||||
|
TProgind p(items, "Elaborazione righe documenti in corso ...", TRUE, TRUE, 10);
|
||||||
|
p.setstatus(1);
|
||||||
|
int err = NOERR;
|
||||||
|
for (cur=0; cur.pos()<items && !p.iscancelled() && err==NOERR; ++(cur))
|
||||||
|
{
|
||||||
|
p.addstatus(1);
|
||||||
|
const TRectype& rec_tipodoc = cur.curr(-ALIAS_TIP);
|
||||||
|
const int tipodoc = rec_tipodoc.get_int("I1");
|
||||||
|
const bool notacredito = rec_tipodoc.get_bool("B7");
|
||||||
|
char tipo = ' ';
|
||||||
|
if (tipodoc == 2)
|
||||||
|
{
|
||||||
|
if (notacredito)
|
||||||
|
tipo = 'R';
|
||||||
|
else
|
||||||
|
tipo = 'F';
|
||||||
|
}
|
||||||
|
else if (tipodoc == 3)
|
||||||
|
tipo = 'O';
|
||||||
|
if (tipo != ' ')
|
||||||
|
{
|
||||||
|
filerdoc.zero();
|
||||||
|
filerdoc.put("CODDITTA", get_firm()); // ditta
|
||||||
|
filerdoc.put("TIPO", tipo); // tipologia documento
|
||||||
|
filerdoc.put("DATADOC", cur.curr(LF_DOC).get(DOC_DATADOC)); // data doc.
|
||||||
|
// record anamag
|
||||||
|
const TRectype& rec_anamag = cache().get(LF_ANAMAG, cur.curr().get(RDOC_CODARTMAG));
|
||||||
|
// record clifo e cfven
|
||||||
|
TToken_string key;
|
||||||
|
key.add(cur.curr(LF_DOC).get(DOC_TIPOCF));
|
||||||
|
key.add(cur.curr(LF_DOC).get(DOC_CODCF));
|
||||||
|
const TRectype& rec_cfven = cache().get(LF_CFVEN, key);
|
||||||
|
const TRectype& rec_clifo = cache().get(LF_CLIFO, key);
|
||||||
|
// record comuni
|
||||||
|
key = "";
|
||||||
|
key.add(rec_clifo.get(CLI_STATOCF));
|
||||||
|
key.add(rec_clifo.get(CLI_COMCF));
|
||||||
|
const TRectype& rec_comuni = cache().get(LF_COMUNI, key);
|
||||||
|
TString16 tmp = cur.curr().get(RDOC_CODMAG);
|
||||||
|
filerdoc.put("CODDEP", tmp); // codice deposito
|
||||||
|
tmp = tmp.left(3);
|
||||||
|
filerdoc.put("CODMAG", tmp); // codice magazzino
|
||||||
|
tmp = rec_anamag.get(ANAMAG_GRMERC);
|
||||||
|
filerdoc.put("SOTTOGR", tmp); // sottogruppo merceologico
|
||||||
|
tmp = tmp.left(3);
|
||||||
|
filerdoc.put("GRUPPO", tmp); //gruppo merceologico
|
||||||
|
tmp = cur.curr(LF_DOC).get(DOC_ZONA);
|
||||||
|
if (tmp.empty())
|
||||||
|
tmp = rec_cfven.get(CFV_CODZONA);
|
||||||
|
filerdoc.put("ZONA", tmp); // zona
|
||||||
|
filerdoc.put("REGIONE", rec_comuni.get(COM_UFFREG)); // regione
|
||||||
|
filerdoc.put("PROV", rec_comuni.get(COM_PROVCOM)); // provincia
|
||||||
|
tmp = cur.curr(LF_DOC).get(DOC_CATVEN);
|
||||||
|
if (tmp.empty())
|
||||||
|
tmp = rec_cfven.get(CFV_CATVEN);
|
||||||
|
filerdoc.put("CATMERCLI", tmp); // cat. merceologica
|
||||||
|
filerdoc.put("CODCLI", cur.curr(LF_DOC).get(DOC_CODCF)); // codice cliente
|
||||||
|
tmp = cur.curr(LF_DOC).get(DOC_CODAG);
|
||||||
|
if (tmp.empty())
|
||||||
|
tmp = rec_cfven.get(CFV_CODAG);
|
||||||
|
filerdoc.put("CODAG", tmp); // codice agente
|
||||||
|
filerdoc.put("CODART", cur.curr().get(RDOC_CODARTMAG)); // codice articolo
|
||||||
|
filerdoc.put("TIPODOC", cur.curr(LF_DOC).get(DOC_TIPODOC)); // tipo documento
|
||||||
|
filerdoc.put("QTA", cur.curr().get(RDOC_QTA)); // quantita
|
||||||
|
filerdoc.put("IMPORTO", "");
|
||||||
|
filerdoc.put("SCONTATO", "");
|
||||||
|
|
||||||
|
update_tab(filetab, filerdoc.curr());
|
||||||
|
|
||||||
|
err = filerdoc.write();
|
||||||
|
}
|
||||||
|
if (err != NOERR)
|
||||||
|
error_box("Errore %d in scrittura file dbf. Elaborazione non terminata.", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TRDoc2JBI::update_tab(TExternisamfile& filetab, const TRectype rectab)
|
||||||
|
{
|
||||||
|
// TIP tipo documento
|
||||||
|
TString80 descr = cache().get("%TIP", rectab.get("TIPODOC"), "S0");
|
||||||
|
insert_tab(filetab, "TIP", rectab.get("TIPODOC"), descr);
|
||||||
|
// AGE agente
|
||||||
|
descr = cache().get(LF_AGENTI, rectab.get("CODAG"), AGE_RAGSOC);
|
||||||
|
insert_tab(filetab, "AGE", rectab.get("CODAG"), descr);
|
||||||
|
// CVE cat.ven.
|
||||||
|
descr = cache().get("%CVE", rectab.get("CATMERCLI"), "S0");
|
||||||
|
insert_tab(filetab, "CVE", rectab.get("CATMERCLI"), descr);
|
||||||
|
// CLI cliente
|
||||||
|
descr = cache().get("LF_CLIFO", rectab.get("CODCLI"), CLI_RAGSOC);
|
||||||
|
insert_tab(filetab, "CLI", rectab.get("CODCLI"), descr);
|
||||||
|
// GRM gruppo merc.
|
||||||
|
descr = cache().get("%GRM", rectab.get("GRUPPO"), "S0");
|
||||||
|
insert_tab(filetab, "GRM", rectab.get("GRUPPO"), descr);
|
||||||
|
// SGM sottogruppo merceol.
|
||||||
|
descr = cache().get("%GRM", rectab.get("SOTTOGR"), "S0");
|
||||||
|
insert_tab(filetab, "SGM", rectab.get("SOTTOGR"), descr);
|
||||||
|
// ART codart
|
||||||
|
descr = cache().get("LF_ANAMAG", rectab.get("CODART"), ANAMAG_DESCR);
|
||||||
|
insert_tab(filetab, "ART", rectab.get("CODART"), descr);
|
||||||
|
// ZON zona
|
||||||
|
descr = cache().get("%ZON", rectab.get("ZONA"), "S0");
|
||||||
|
insert_tab(filetab, "ZON", rectab.get("ZONA"), descr);
|
||||||
|
// RGI regioni
|
||||||
|
descr = cache().get("%RGI", rectab.get("REGIONE"), "S0");
|
||||||
|
insert_tab(filetab, "RGI", rectab.get("REGIONE"), descr);
|
||||||
|
// MAG mag
|
||||||
|
descr = cache().get("%MAG", rectab.get("CODMAG"), "S0");
|
||||||
|
insert_tab(filetab, "MAG", rectab.get("CODMAG"), descr);
|
||||||
|
// DEP dep
|
||||||
|
descr = cache().get("%MAG", rectab.get("CODDEP"), "S0");
|
||||||
|
insert_tab(filetab, "DEP", rectab.get("CODDEP"), descr);
|
||||||
|
}
|
||||||
|
|
||||||
|
int ve7600(int argc, char** argv)
|
||||||
|
{
|
||||||
|
TRDoc2JBI app;
|
||||||
|
app.run(argc, argv, "Trasferimento JBI");
|
||||||
|
return 0;
|
||||||
|
}
|
5
ve/ve7600a.h
Executable file
5
ve/ve7600a.h
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
// trasferimento JBI
|
||||||
|
// definizione campi per maschera di selezione
|
||||||
|
|
||||||
|
#define F_ANNO 101 // anno da trasferire
|
||||||
|
#define F_PERCORSO 102 // percorso dei file .dbf da creare
|
29
ve/ve7600a.uml
Executable file
29
ve/ve7600a.uml
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#include "ve7600a.h"
|
||||||
|
|
||||||
|
|
||||||
|
PAGE "trasferimento JBI" -1 -1 78 5
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ANNO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Anno da trasferire "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_PERCORSO 45 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Cartella di destinazione "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user