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)
|
||||
{
|
||||
case 5:
|
||||
ve7600(argc, argv); break; // trasferimento JBI
|
||||
case 4:
|
||||
ve7500(argc, argv); break; // importazione listini gommisti (michelin,pirelli etc.)
|
||||
case 3:
|
||||
|
1
ve/ve7.h
1
ve/ve7.h
@ -6,5 +6,6 @@ int ve7200 (int, char**);
|
||||
int ve7300 (int, char**);
|
||||
int ve7400 (int, char**);
|
||||
int ve7500 (int, char**);
|
||||
int ve7600 (int, char**);
|
||||
|
||||
#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