Patch level : 12.0 592
Files correlati : bs Commento : Corretto controllo clifo_has_conai e importazione codici varianti git-svn-id: svn://10.65.10.50/branches/R_10_00@24513 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
81f839eafa
commit
13650d7166
@ -181,7 +181,7 @@ void TSknet_sync::load_their_origine(TISAM_recordset& out_set, const char* in_ta
|
|||||||
str << row->get(0) << ',';
|
str << row->get(0) << ',';
|
||||||
str.rtrim(1); // toglie ultima virgola
|
str.rtrim(1); // toglie ultima virgola
|
||||||
str << "\nFROM " << in_table << " WHERE (Origine=" << their_origin() << ") AND " << where_time_import() << ";";
|
str << "\nFROM " << in_table << " WHERE (Origine=" << their_origin() << ") AND " << where_time_import() << ";";
|
||||||
|
//_log->log(0, str);
|
||||||
TODBC_recordset odbc(str);
|
TODBC_recordset odbc(str);
|
||||||
odbc.connect(_dsn, _usr, _psw);
|
odbc.connect(_dsn, _usr, _psw);
|
||||||
const TRecnotype n = odbc.items();
|
const TRecnotype n = odbc.items();
|
||||||
@ -415,6 +415,7 @@ void TSknet_sync::sync_anamag()
|
|||||||
// Sincronizzo le unità di misura
|
// Sincronizzo le unità di misura
|
||||||
{
|
{
|
||||||
query.cut(0) << "SELECT * from tieArticoli where Origine=" << their_origin() << " AND " << where_time_import() << ";";
|
query.cut(0) << "SELECT * from tieArticoli where Origine=" << their_origin() << " AND " << where_time_import() << ";";
|
||||||
|
//_log->log(0, query);
|
||||||
TODBC_recordset odbcunit(query);
|
TODBC_recordset odbcunit(query);
|
||||||
odbcunit.connect(_dsn, _usr, _psw);
|
odbcunit.connect(_dsn, _usr, _psw);
|
||||||
TProgress_monitor p(odbcunit.items(), "Aggiornamento unità di misura");
|
TProgress_monitor p(odbcunit.items(), "Aggiornamento unità di misura");
|
||||||
@ -444,6 +445,7 @@ void TSknet_sync::sync_anamag()
|
|||||||
{
|
{
|
||||||
// Controllo se esistono varianti e le aggiungo
|
// Controllo se esistono varianti e le aggiungo
|
||||||
query.cut(0) << "SELECT * FROM tieArtVarianti where origine=" << their_origin() << " AND " << where_time_import() << ";";
|
query.cut(0) << "SELECT * FROM tieArtVarianti where origine=" << their_origin() << " AND " << where_time_import() << ";";
|
||||||
|
//_log->log(0, query);
|
||||||
TODBC_recordset odbc(query);
|
TODBC_recordset odbc(query);
|
||||||
odbc.connect(_dsn, _usr, _psw);
|
odbc.connect(_dsn, _usr, _psw);
|
||||||
|
|
||||||
@ -477,7 +479,7 @@ void TSknet_sync::sync_anamag()
|
|||||||
// Azzero
|
// Azzero
|
||||||
ccor.first(); // Useless??
|
ccor.first(); // Useless??
|
||||||
rccor.zero();
|
rccor.zero();
|
||||||
bool add = false;
|
bool add = true;
|
||||||
int riga = 1;
|
int riga = 1;
|
||||||
const TString& codpadre = odbc.get("CodPadre").as_string();
|
const TString& codpadre = odbc.get("CodPadre").as_string();
|
||||||
const TString& codarticolo = odbc.get("CodArticolo").as_string();
|
const TString& codarticolo = odbc.get("CodArticolo").as_string();
|
||||||
@ -485,7 +487,6 @@ void TSknet_sync::sync_anamag()
|
|||||||
rccor.put(CODCORR_NRIGA, riga);
|
rccor.put(CODCORR_NRIGA, riga);
|
||||||
if (codpadre != codarticolo && ccor.read(rccor, _isequal) == NOERR)
|
if (codpadre != codarticolo && ccor.read(rccor, _isequal) == NOERR)
|
||||||
{
|
{
|
||||||
add = true;
|
|
||||||
while (add && rccor.get(CODCORR_CODART) == codpadre)
|
while (add && rccor.get(CODCORR_CODART) == codpadre)
|
||||||
{
|
{
|
||||||
riga = rccor.get_int(CODCORR_NRIGA);
|
riga = rccor.get_int(CODCORR_NRIGA);
|
||||||
@ -512,6 +513,7 @@ void TSknet_sync::sync_anamag()
|
|||||||
TLocalisamfile art(LF_ANAMAG);
|
TLocalisamfile art(LF_ANAMAG);
|
||||||
TRectype rart(LF_ANAMAG);
|
TRectype rart(LF_ANAMAG);
|
||||||
query.cut(0) << "SELECT * FROM tieArtCONAI where origine=" << their_origin() << " AND " << where_time_import() << ";";
|
query.cut(0) << "SELECT * FROM tieArtCONAI where origine=" << their_origin() << " AND " << where_time_import() << ";";
|
||||||
|
//_log->log(0, query);
|
||||||
TODBC_recordset odbc(query);
|
TODBC_recordset odbc(query);
|
||||||
odbc.connect(_dsn, _usr, _psw);
|
odbc.connect(_dsn, _usr, _psw);
|
||||||
TProgress_monitor p(odbc.items(), "Aggiornamento CONAI");
|
TProgress_monitor p(odbc.items(), "Aggiornamento CONAI");
|
||||||
@ -727,6 +729,7 @@ void TSknet_sync::load_clifo(const char tipocf)
|
|||||||
|
|
||||||
TFast_isamfile clifo(LF_CLIFO);
|
TFast_isamfile clifo(LF_CLIFO);
|
||||||
|
|
||||||
|
//_log->log(0, str);
|
||||||
TODBC_recordset odbc(str);
|
TODBC_recordset odbc(str);
|
||||||
odbc.connect(_dsn, _usr, _psw);
|
odbc.connect(_dsn, _usr, _psw);
|
||||||
const TRecnotype n = odbc.items();
|
const TRecnotype n = odbc.items();
|
||||||
@ -862,7 +865,7 @@ void TSknet_sync::load_clifo(const char tipocf)
|
|||||||
split_phone(odbc, "CellulareSMS", clifo, CLI_PTEL3, CLI_TEL3);
|
split_phone(odbc, "CellulareSMS", clifo, CLI_PTEL3, CLI_TEL3);
|
||||||
split_phone(odbc, "Fax", clifo, CLI_PFAX, CLI_FAX);
|
split_phone(odbc, "Fax", clifo, CLI_PFAX, CLI_FAX);
|
||||||
clifo.put(CLI_MAIL, odbc.get("EMail").as_string());
|
clifo.put(CLI_MAIL, odbc.get("EMail").as_string());
|
||||||
clifo.put(CLI_CODPAG, odbc.get("Cli_CodPagamento").as_string());
|
clifo.put(CLI_CODPAG, odbc.get(tipocf == 'F' ? "For_CodPagamento" : "Cli_CodPagamento").as_string());
|
||||||
|
|
||||||
if (_hasConai)
|
if (_hasConai)
|
||||||
{
|
{
|
||||||
@ -916,7 +919,7 @@ void TSknet_sync::load_clifo(const char tipocf)
|
|||||||
cab = odbc.get("For_Cab").as_string();
|
cab = odbc.get("For_Cab").as_string();
|
||||||
contcor = odbc.get("For_ContoCorr").as_string();
|
contcor = odbc.get("For_ContoCorr").as_string();
|
||||||
}
|
}
|
||||||
if (!abi.blank() && !cab.blank() && !contcor.blank())
|
if (!abi.blank() && !cab.blank())
|
||||||
{
|
{
|
||||||
int err = 1;
|
int err = 1;
|
||||||
// Calcolo il CIN
|
// Calcolo il CIN
|
||||||
@ -958,13 +961,15 @@ void TSknet_sync::load_clifo(const char tipocf)
|
|||||||
cfb.put("NUMCC", contcor);
|
cfb.put("NUMCC", contcor);
|
||||||
cfb.put("IBAN", iban);
|
cfb.put("IBAN", iban);
|
||||||
}
|
}
|
||||||
else if (!odbc.get("Cli_ContoCorr").as_string().blank())
|
else
|
||||||
{
|
{
|
||||||
TString msg; msg << "L'IBAN del contatto " << tipocf << " " << codcf << "non è corretto, non ho sovrascritto nulla";
|
TString msg; msg << "L'IBAN del contatto " << tipocf << " " << codcf << "non è corretto, verranno importati solo ABI e CAB";
|
||||||
|
cfb.put("NUMCC", "");
|
||||||
|
cfb.put("IBAN", "");
|
||||||
_log->log(1, msg);
|
_log->log(1, msg);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
cfb.write_rewrite();
|
cfb.write_rewrite();
|
||||||
}
|
}
|
||||||
// Always true
|
// Always true
|
||||||
cfv.put(CFV_RAGGEFF, true);
|
cfv.put(CFV_RAGGEFF, true);
|
||||||
@ -1131,6 +1136,7 @@ void TSknet_sync::clean()
|
|||||||
if (ini_get_bool(CONFIG_DITTA, "BS", "SKSyncUMS"))
|
if (ini_get_bool(CONFIG_DITTA, "BS", "SKSyncUMS"))
|
||||||
str << "DELETE FROM tieUntMisura WHERE Origine=" << their_origin() << " AND " << where_time_delete() << ";\n";
|
str << "DELETE FROM tieUntMisura WHERE Origine=" << their_origin() << " AND " << where_time_delete() << ";\n";
|
||||||
|
|
||||||
|
//_log->log(0, str);
|
||||||
voldemort.exec(str); // Elimina tutte le anagrafiche importate da BeeStore
|
voldemort.exec(str); // Elimina tutte le anagrafiche importate da BeeStore
|
||||||
voldemort.commit();
|
voldemort.commit();
|
||||||
}
|
}
|
||||||
@ -1139,14 +1145,14 @@ void TSknet_sync::clean()
|
|||||||
void TSknet_sync::set_time()
|
void TSknet_sync::set_time()
|
||||||
{
|
{
|
||||||
// Prelevo il tempo dell'ultima importazione
|
// Prelevo il tempo dell'ultima importazione
|
||||||
sprintf_s(_lastUpdate, sizeof(_lastUpdate), ini_get_string(CONFIG_DITTA, "BS", "LAST_IMPORT", "1990-01-01 00:00:00.000"));
|
sprintf_s(_lastUpdate, sizeof(_lastUpdate), ini_get_string(CONFIG_DITTA, "BS", "LAST_IMPORT", "19900101 00:00:00.000"));
|
||||||
|
|
||||||
// Preparo il tempo attuale
|
// Preparo il tempo attuale
|
||||||
time_t rt = time(NULL);
|
time_t rt = time(NULL);
|
||||||
struct tm * now = localtime(&rt);
|
struct tm * now = localtime(&rt);
|
||||||
|
|
||||||
sprintf_s(_thisUpdate, sizeof(_thisUpdate),
|
sprintf_s(_thisUpdate, sizeof(_thisUpdate),
|
||||||
"%d-%02d-%02d %02d:%02d:%02d.999",
|
"%d%02d%02d %02d:%02d:%02d.999",
|
||||||
now->tm_year + 1900,
|
now->tm_year + 1900,
|
||||||
now->tm_mon + 1,
|
now->tm_mon + 1,
|
||||||
now->tm_mday,
|
now->tm_mday,
|
||||||
@ -1169,6 +1175,13 @@ const TString TSknet_sync::where_time_delete()
|
|||||||
return time_delete;
|
return time_delete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const bool TSknet_sync::clifo_has_conai(const TString4& tipocf, const long codcf)
|
||||||
|
{
|
||||||
|
TString keyCli; keyCli << tipocf << "|" << codcf;
|
||||||
|
TRectype clifo = cache().get(LF_CFVEN, keyCli);
|
||||||
|
return clifo.get_bool("ADDCONAI") || !clifo.get("PRODCONAI").blank();
|
||||||
|
}
|
||||||
|
|
||||||
bool TSknet_sync::save_and_delete_movmag(TMov_mag*& doc) const
|
bool TSknet_sync::save_and_delete_movmag(TMov_mag*& doc) const
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
@ -1248,7 +1261,7 @@ void TSknet_sync::sync_doc()
|
|||||||
str << "WHERE tieTBolFat.Origine = " << their_origin() << " AND tieTBolFat." << where_time_import();
|
str << "WHERE tieTBolFat.Origine = " << their_origin() << " AND tieTBolFat." << where_time_import();
|
||||||
//str << "WHERE tieDMovMag.Origine = " << their_origin() << " AND tieDMovMag.TipoTestata = 2"; // verificare
|
//str << "WHERE tieDMovMag.Origine = " << their_origin() << " AND tieDMovMag.TipoTestata = 2"; // verificare
|
||||||
str << "\nORDER BY tieTBolFat.Cod_PK,tieDMovMag.NumRiga";
|
str << "\nORDER BY tieTBolFat.Cod_PK,tieDMovMag.NumRiga";
|
||||||
|
//_log->log(0, str);
|
||||||
TODBC_recordset docs(str);
|
TODBC_recordset docs(str);
|
||||||
docs.connect(_dsn, _usr, _psw);
|
docs.connect(_dsn, _usr, _psw);
|
||||||
TProgress_monitor pi(docs.items(), str);
|
TProgress_monitor pi(docs.items(), str);
|
||||||
@ -1513,8 +1526,7 @@ void TSknet_sync::sync_doc()
|
|||||||
|
|
||||||
|
|
||||||
// "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET"
|
// "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET"
|
||||||
TString keyCli; keyCli << tipocf << "|" << codcf;
|
if (_hasConai && clifo_has_conai(tipocf, codcf))
|
||||||
if (_hasConai && cache().get(LF_CFVEN, keyCli, "ADDCONAI") == "X")
|
|
||||||
{
|
{
|
||||||
// In base al conai che ha abilitato controllo
|
// In base al conai che ha abilitato controllo
|
||||||
if (ini_get_bool(CONFIG_DITTA, "ve", "CONFACC")) // Acciaio
|
if (ini_get_bool(CONFIG_DITTA, "ve", "CONFACC")) // Acciaio
|
||||||
|
@ -97,6 +97,7 @@ private:
|
|||||||
void set_time();
|
void set_time();
|
||||||
const TString where_time_import();
|
const TString where_time_import();
|
||||||
const TString where_time_delete();
|
const TString where_time_delete();
|
||||||
|
const bool clifo_has_conai(const TString4& tipocf, const long codcf);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool save_and_delete_movmag(TMov_mag*& doc) const;
|
bool save_and_delete_movmag(TMov_mag*& doc) const;
|
||||||
|
@ -1,95 +1,95 @@
|
|||||||
// gestione tabelle passaggio pack
|
// gestione tabelle passaggio pack
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <tabapp.h>
|
#include <tabapp.h>
|
||||||
|
|
||||||
class TMask_tabtp : public TAutomask
|
class TMask_tabtp : public TAutomask
|
||||||
{
|
{
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
public:
|
public:
|
||||||
TMask_tabtp(const char* name);
|
TMask_tabtp(const char* name);
|
||||||
virtual ~TMask_tabtp();
|
virtual ~TMask_tabtp();
|
||||||
};
|
};
|
||||||
|
|
||||||
TMask_tabtp::TMask_tabtp(const char* name) : TAutomask(name)
|
TMask_tabtp::TMask_tabtp(const char* name) : TAutomask(name)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
TMask_tabtp::~TMask_tabtp()
|
TMask_tabtp::~TMask_tabtp()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMask_tabtp::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TMask_tabtp::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Tab_app_sk : public Tab_application
|
class Tab_app_sk : public Tab_application
|
||||||
{
|
{
|
||||||
protected: // TRelation_application
|
protected: // TRelation_application
|
||||||
virtual bool user_destroy();
|
virtual bool user_destroy();
|
||||||
virtual bool user_create();
|
virtual bool user_create();
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
|
|
||||||
virtual TString& get_mask_name(TString& name) const;
|
virtual TString& get_mask_name(TString& name) const;
|
||||||
virtual TMask* set_mask(TMask * m = NULL);
|
virtual TMask* set_mask(TMask * m = NULL);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Tab_app_sk();
|
Tab_app_sk();
|
||||||
virtual ~Tab_app_sk() {}
|
virtual ~Tab_app_sk() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
HIDDEN inline Tab_app_sk& app() { return (Tab_app_sk&)main_app(); }
|
HIDDEN inline Tab_app_sk& app() { return (Tab_app_sk&)main_app(); }
|
||||||
|
|
||||||
// costruttore
|
// costruttore
|
||||||
Tab_app_sk::Tab_app_sk() {}
|
Tab_app_sk::Tab_app_sk() {}
|
||||||
|
|
||||||
TString& Tab_app_sk::get_mask_name(TString& name) const
|
TString& Tab_app_sk::get_mask_name(TString& name) const
|
||||||
{
|
{
|
||||||
name = get_tabname();
|
name = get_tabname();
|
||||||
if (name[0] == '%')
|
if (name[0] == '%')
|
||||||
name = name.mid(1);
|
name = name.mid(1);
|
||||||
name.insert("bstb", 0);
|
name.insert("bstb", 0);
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
TMask* Tab_app_sk::set_mask(TMask* m)
|
TMask* Tab_app_sk::set_mask(TMask* m)
|
||||||
{
|
{
|
||||||
if (m == NULL)
|
if (m == NULL)
|
||||||
{
|
{
|
||||||
TFilename name; get_mask_name(name);
|
TFilename name; get_mask_name(name);
|
||||||
m = new TMask_tabtp(name);
|
m = new TMask_tabtp(name);
|
||||||
}
|
}
|
||||||
return TTable_application::set_mask(m);
|
return TTable_application::set_mask(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tab_app_sk::user_create()
|
bool Tab_app_sk::user_create()
|
||||||
{
|
{
|
||||||
bool ok = Tab_application::user_create();
|
bool ok = Tab_application::user_create();
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
TMask& mask = *set_mask();
|
TMask& mask = *set_mask();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tab_app_sk::user_destroy()
|
bool Tab_app_sk::user_destroy()
|
||||||
{
|
{
|
||||||
return Tab_application::user_destroy();
|
return Tab_application::user_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tab_app_sk::rewrite(const TMask& m)
|
int Tab_app_sk::rewrite(const TMask& m)
|
||||||
{
|
{
|
||||||
return Tab_application::rewrite(m);
|
return Tab_application::rewrite(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bs0400(int argc, char* argv[])
|
int bs0400(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
Tab_app_sk a;
|
Tab_app_sk a;
|
||||||
a.run(argc, argv, TR("Tabella"));
|
a.run(argc, argv, TR("Tabella"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#define FLD_TABTPI_CODTAB 101
|
#define FLD_TABTPI_CODTAB 101
|
||||||
#define FLD_TABTPI_DESCR 102
|
#define FLD_TABTPI_DESCR 102
|
||||||
#define FLD_TABTPI_CODIVA 103
|
#define FLD_TABTPI_CODIVA 103
|
||||||
|
@ -1,49 +1,49 @@
|
|||||||
#include "bstbski.h"
|
#include "bstbski.h"
|
||||||
|
|
||||||
TOOLBAR "topbar" 0 0 0 2
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
#include <relapbar.h>
|
#include <relapbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Conversione tabella IVA SKNET" 0 2 0 0
|
PAGE "Conversione tabella IVA SKNET" 0 2 0 0
|
||||||
|
|
||||||
STRING FLD_TABTPI_CODTAB 15
|
STRING FLD_TABTPI_CODTAB 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 1 "Cod. IVA SKNET "
|
PROMPT 3 1 "Cod. IVA SKNET "
|
||||||
FIELD CODTAB
|
FIELD CODTAB
|
||||||
KEY 1
|
KEY 1
|
||||||
USE %SKI
|
USE %SKI
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
INPUT CODTAB FLD_TABTPI_CODTAB
|
INPUT CODTAB FLD_TABTPI_CODTAB
|
||||||
DISPLAY "Cod. IVA SKNET@15" CODTAB
|
DISPLAY "Cod. IVA SKNET@15" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT FLD_TABTPI_CODTAB CODTAB
|
OUTPUT FLD_TABTPI_CODTAB CODTAB
|
||||||
OUTPUT FLD_TABTPI_DESCR S0
|
OUTPUT FLD_TABTPI_DESCR S0
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING FLD_TABTPI_DESCR 50
|
STRING FLD_TABTPI_DESCR 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 2 "Descrizione "
|
PROMPT 3 2 "Descrizione "
|
||||||
USE %TPI
|
USE %TPI
|
||||||
KEY 2
|
KEY 2
|
||||||
FIELD S0
|
FIELD S0
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING FLD_TABTPI_CODIVA 4
|
STRING FLD_TABTPI_CODIVA 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 3 "Cod. corrispondente "
|
PROMPT 3 3 "Cod. corrispondente "
|
||||||
HELP "Codice IVA"
|
HELP "Codice IVA"
|
||||||
FIELD S6
|
FIELD S6
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
USE %IVA KEY 1
|
USE %IVA KEY 1
|
||||||
INPUT CODTAB FLD_TABTPI_CODIVA
|
INPUT CODTAB FLD_TABTPI_CODIVA
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Codice IVA@50" S0
|
DISPLAY "Codice IVA@50" S0
|
||||||
OUTPUT FLD_TABTPI_CODIVA CODTAB
|
OUTPUT FLD_TABTPI_CODIVA CODTAB
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user