2007-03-16 13:33:09 +00:00
|
|
|
|
#include "pg0001.h"
|
|
|
|
|
#include "pg0001200a.h"
|
|
|
|
|
|
|
|
|
|
#include <automask.h>
|
|
|
|
|
#include <progind.h>
|
|
|
|
|
#include <reprint.h>
|
|
|
|
|
|
|
|
|
|
#include <clifo.h>
|
|
|
|
|
#include <mov.h>
|
|
|
|
|
#include <rmov.h>
|
|
|
|
|
#include <rmoviva.h>
|
2007-03-30 13:51:17 +00:00
|
|
|
|
/*#include <anagr.h>
|
|
|
|
|
#include <anafis.h>
|
|
|
|
|
#include <comuni.h>
|
|
|
|
|
#include <causali.h>
|
|
|
|
|
#include <nditte.h>
|
|
|
|
|
#include <multirel.h>*/
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
#include "..\tc\tc0701.h"
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TClifo_recset
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
class TClifo_recset : public TAS400_recordset
|
|
|
|
|
{
|
|
|
|
|
TAssoc_array _index;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void add_field(const char* name = "Filler", int from = -1, char tipo = 'a',
|
|
|
|
|
int len = 0, const char* def = NULL);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
bool find(char tipocf, long codcf);
|
2007-09-17 15:33:04 +00:00
|
|
|
|
virtual const TVariant& get(const char* column_name) const;
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
|
|
|
|
TClifo_recset(const char * query);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void TClifo_recset::add_field(const char* name, int from, char tipo, int len, const char* def)
|
|
|
|
|
{
|
|
|
|
|
const bool required = false;
|
|
|
|
|
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
|
|
|
|
|
const int pos = from - 1;
|
|
|
|
|
if (def && *def)
|
|
|
|
|
{
|
|
|
|
|
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
|
|
|
|
|
TVariant var(def); var.convert_to(t);
|
|
|
|
|
create_field(name, pos, len, t, required, var);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
create_field(name, pos, len, t, required);
|
|
|
|
|
}
|
|
|
|
|
|
2007-09-17 15:33:04 +00:00
|
|
|
|
const TVariant& TClifo_recset::get(const char* column_name) const
|
|
|
|
|
{
|
|
|
|
|
TFixed_string fname(column_name);
|
|
|
|
|
|
|
|
|
|
if (fname == CLI_COFI)
|
|
|
|
|
{
|
|
|
|
|
TVariant& var = get_tmp_var();
|
|
|
|
|
TString80 s(TAS400_recordset::get(fname).as_string());
|
|
|
|
|
|
|
|
|
|
var.set(s.trim());
|
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
return TAS400_recordset::get(fname);
|
|
|
|
|
}
|
|
|
|
|
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
|
|
|
|
TClifo_recset::TClifo_recset(const char * query)
|
|
|
|
|
: TAS400_recordset(TString("AS400(213)\n") << query)
|
|
|
|
|
{
|
|
|
|
|
const char a = 'a';
|
|
|
|
|
const char n = 'n';
|
|
|
|
|
const bool o = true;
|
|
|
|
|
const bool f = false;
|
|
|
|
|
|
|
|
|
|
add_field(CLI_TIPOCF, 1, a, 1);
|
|
|
|
|
add_field(CLI_CODCF, 2, n, 6);
|
|
|
|
|
add_field("LIBERO", 8, a, 10);
|
|
|
|
|
add_field(CLI_RAGSOC, 18, a, 50);
|
|
|
|
|
add_field(CLI_INDCF, 68, a, 30);
|
|
|
|
|
add_field(CLI_CAPCF, 98, n, 5);
|
|
|
|
|
add_field(CLI_LOCCF, 103, a, 25);
|
|
|
|
|
add_field("PROV", 128, a, 2);
|
|
|
|
|
add_field("LIBERO2", 130, a, 9);
|
|
|
|
|
add_field(CLI_COFI, 139, a, 16);
|
2007-09-17 15:33:04 +00:00
|
|
|
|
add_field("LIBERO3", 155, a, 45);
|
|
|
|
|
add_field(CLI_PAIV, 201, a, 11);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
add_field("FINE-RECORD", 211, a, 2, "\r\n"); // terminatore record
|
|
|
|
|
|
|
|
|
|
TString16 pos, key;
|
|
|
|
|
|
|
|
|
|
for (bool ok = move_first(); ok; ok = move_next())
|
|
|
|
|
{
|
|
|
|
|
pos.format("%ld", current_row());
|
|
|
|
|
key.format("%c|%ld", get(CLI_TIPOCF).as_string()[0], get(CLI_CODCF).as_int());
|
|
|
|
|
|
|
|
|
|
_index.add(key, pos);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TClifo_recset::find(char tipocf, long codcf)
|
|
|
|
|
{
|
|
|
|
|
TString16 key;
|
|
|
|
|
|
|
|
|
|
key.format("%c|%ld", tipocf, codcf);
|
|
|
|
|
|
|
|
|
|
TString * s = (TString *) _index.objptr(key);
|
|
|
|
|
long pos = 0L;
|
|
|
|
|
const bool ok = s && s->full();
|
|
|
|
|
|
|
|
|
|
if (ok)
|
|
|
|
|
pos = atoi(*s);
|
|
|
|
|
move_to(pos);
|
|
|
|
|
return ok;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class TMov_recset;
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TIVA_recset
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
class TIVA_recset : public TAS400_recordset
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
TRecnotype _first, _last;
|
|
|
|
|
long _numreg;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void add_field(const char* name = "Filler", int from = -1, char tipo = 'a',
|
|
|
|
|
int len = 0, const char* def = NULL);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
bool find(long numreg);
|
|
|
|
|
virtual const TVariant& get(const char* column_name) const;
|
|
|
|
|
virtual bool move_to(TRecnotype pos);
|
|
|
|
|
|
|
|
|
|
TIVA_recset(TMov_recset & mov);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TRMov_recset
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
class TRMov_recset : public TAS400_recordset
|
|
|
|
|
{
|
|
|
|
|
TRecnotype _first, _last;
|
|
|
|
|
long _numreg;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
void add_field(const char* name = "Filler", int from = -1, char tipo = 'a',
|
|
|
|
|
int len = 0, const char* def = NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
bool find(long numreg);
|
|
|
|
|
virtual const TVariant& get(const char* column_name) const;
|
|
|
|
|
virtual bool move_to(TRecnotype pos);
|
|
|
|
|
|
|
|
|
|
TRMov_recset(TMov_recset & mov);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TMov_recset
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
class TMov_recset : public TAS400_recordset
|
|
|
|
|
{
|
2007-09-17 15:33:04 +00:00
|
|
|
|
bool _indetraibile;
|
2007-03-16 13:33:09 +00:00
|
|
|
|
protected:
|
|
|
|
|
void add_field(const char* name = "Filler", int from = -1, char tipo = 'a',
|
|
|
|
|
int len = 0, const char* def = NULL);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
bool vendite() const { return get("TIPOR").as_int() == 2;}
|
|
|
|
|
bool acquisti() const { return !vendite();}
|
|
|
|
|
bool fattura() const { return get("TIPOM").as_int() == 0;}
|
|
|
|
|
bool nota_credito() const { return !fattura();}
|
|
|
|
|
virtual const TVariant& get(const char* column_name) const;
|
2007-09-17 15:33:04 +00:00
|
|
|
|
bool indetraibile() const { return _indetraibile;}
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
|
|
|
|
TMov_recset(const char * query, TArray & recsets);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void TMov_recset::add_field(const char* name, int from, char tipo, int len, const char* def)
|
|
|
|
|
{
|
|
|
|
|
const bool required = false;
|
|
|
|
|
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
|
|
|
|
|
const int pos = from - 1;
|
|
|
|
|
|
|
|
|
|
if (def && *def)
|
|
|
|
|
{
|
|
|
|
|
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
|
|
|
|
|
TVariant var(def); var.convert_to(t);
|
|
|
|
|
create_field(name, pos, len, t, required, var);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
create_field(name, pos, len, t, required);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const TVariant& TMov_recset::get(const char* column_name) const
|
|
|
|
|
{
|
|
|
|
|
TString16 fname(column_name);
|
|
|
|
|
TVariant& var = get_tmp_var();
|
|
|
|
|
|
|
|
|
|
if (fname == MOV_TIPO)
|
|
|
|
|
{
|
|
|
|
|
var = vendite() ? "C" : "F";
|
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (fname == MOV_REG)
|
|
|
|
|
{
|
|
|
|
|
var = vendite() ? "V00" : "A00";
|
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (fname == MOV_CODCF)
|
|
|
|
|
{
|
|
|
|
|
if (vendite())
|
|
|
|
|
fname = fattura() ? "S1" : "S2";
|
|
|
|
|
else
|
|
|
|
|
fname = fattura() ? "S2" : "S1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (fname == MOV_CODCAUS)
|
|
|
|
|
{
|
2007-09-17 15:33:04 +00:00
|
|
|
|
((TMov_recset *)this)->_indetraibile = TAS400_recordset::get(fname).as_int() == 4;
|
2007-03-16 13:33:09 +00:00
|
|
|
|
int ccaus;
|
|
|
|
|
|
|
|
|
|
if (vendite())
|
|
|
|
|
ccaus = fattura() ? 1 : 2;
|
|
|
|
|
else
|
|
|
|
|
ccaus = fattura() ? 11 : 12;
|
|
|
|
|
var.set(ccaus);
|
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var = TAS400_recordset::get(fname);
|
|
|
|
|
|
|
|
|
|
if (fname == MOV_DATAREG || fname == MOV_DATADOC)
|
|
|
|
|
{
|
|
|
|
|
const TDate d(atol(var.as_string()) + 20000000L);
|
|
|
|
|
|
|
|
|
|
var.set(d);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (fname == MOV_TOTDOC || fname == RMI_IMPONIBILE ||
|
|
|
|
|
fname == RMI_IMPOSTA)
|
|
|
|
|
{
|
|
|
|
|
const real r = var.as_real() / CENTO;
|
|
|
|
|
|
|
|
|
|
var.set(r);
|
|
|
|
|
}
|
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TMov_recset::TMov_recset(const char * query, TArray & recsets)
|
2007-09-17 15:33:04 +00:00
|
|
|
|
: TAS400_recordset(TString("AS400(543)\n") << query),
|
|
|
|
|
_indetraibile(false)
|
2007-03-16 13:33:09 +00:00
|
|
|
|
{
|
|
|
|
|
const char a = 'a';
|
|
|
|
|
const char n = 'n';
|
|
|
|
|
|
|
|
|
|
add_field("TIPOR", 1, n, 1);
|
|
|
|
|
add_field("L00", 2, a, 6);
|
|
|
|
|
add_field("L01", 8, n, 1);
|
|
|
|
|
add_field("L02", 9, n, 4);
|
|
|
|
|
add_field("NUMREG", 13, n, 7);
|
|
|
|
|
add_field("L03", 20, n, 2);
|
|
|
|
|
add_field("PROG", 22, n, 1);
|
|
|
|
|
add_field("L04", 23, n, 2);
|
|
|
|
|
add_field("L05", 25, a, 2);
|
|
|
|
|
add_field(MOV_DATAREG, 27, a, 6);
|
2007-03-30 13:51:17 +00:00
|
|
|
|
add_field("L07", 33, a, 6);
|
|
|
|
|
add_field("L08", 39, a, 1);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
add_field(MOV_PROTIVA, 40, n, 7);
|
|
|
|
|
add_field(MOV_NUMDOC, 47, n, 9);
|
2007-03-30 13:51:17 +00:00
|
|
|
|
add_field(MOV_DATADOC, 56, a, 6);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
add_field("L09", 62, a, 1);
|
|
|
|
|
add_field(MOV_CODCAUS, 63, n, 2);
|
|
|
|
|
add_field(RMI_CODIVA, 65, n, 2);
|
|
|
|
|
add_field("TIPOM", 67, n, 1);
|
|
|
|
|
add_field("L10", 68, a, 18);
|
|
|
|
|
add_field("G1", 86, a, 2);
|
|
|
|
|
add_field("C1", 88, a, 2);
|
|
|
|
|
add_field("S1", 90, n, 7);
|
|
|
|
|
add_field("L11", 97, n, 6);
|
|
|
|
|
add_field("G2", 103, a, 2);
|
|
|
|
|
add_field("C2", 105, a, 2);
|
|
|
|
|
add_field("S2", 107, n, 7);
|
|
|
|
|
add_field("L12", 114, n, 6);
|
|
|
|
|
add_field("G3", 120, a, 2);
|
|
|
|
|
add_field("C3", 122, a, 2);
|
|
|
|
|
add_field("S3", 124, n, 7);
|
|
|
|
|
add_field("L13", 131, a, 152);
|
|
|
|
|
add_field("ANNO", 283, n, 4);
|
|
|
|
|
add_field("NUMDOC1", 287, a, 13);
|
|
|
|
|
add_field("L15", 300, a, 18);
|
|
|
|
|
add_field("CODICEE", 318, a, 1);
|
|
|
|
|
add_field("L16", 319, a, 29);
|
|
|
|
|
add_field("L17", 348, a, 20);
|
|
|
|
|
add_field("L18", 368, a, 68);
|
|
|
|
|
add_field("L19", 131, a, 152);
|
|
|
|
|
add_field("L20", 436, n, 1);
|
|
|
|
|
add_field("L21", 437, a, 24);
|
|
|
|
|
add_field("L22", 461, a, 39);
|
|
|
|
|
add_field("ANNULLATO", 500, a, 1);
|
|
|
|
|
add_field("L23", 501, a, 5);
|
|
|
|
|
add_field(RMI_IMPONIBILE, 506, n, 11);
|
|
|
|
|
add_field(RMI_IMPOSTA, 517, n, 9);
|
|
|
|
|
add_field(MOV_TOTDOC, 526, n, 11);
|
|
|
|
|
add_field("L24", 537, n, 5);
|
|
|
|
|
add_field("FINE-RECORD", 541, a, 2, "\r\n"); // terminatore record
|
|
|
|
|
|
|
|
|
|
bool ok;
|
|
|
|
|
|
|
|
|
|
for (ok = move_last(); ok;)
|
|
|
|
|
{
|
|
|
|
|
const int p = current_row();
|
|
|
|
|
|
|
|
|
|
if (get("ANNULLATO").as_string()[0] == 'A')
|
|
|
|
|
{
|
|
|
|
|
destroy(p);
|
|
|
|
|
if (p <= last())
|
|
|
|
|
move_to(p);
|
|
|
|
|
else
|
|
|
|
|
move_last();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
ok = move_prev();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
long numreg = 0L;
|
|
|
|
|
|
|
|
|
|
for (ok = move_first(); ok; ok = move_next())
|
|
|
|
|
{
|
|
|
|
|
if (get("PROG").as_int() == 1)
|
|
|
|
|
numreg++;
|
|
|
|
|
set(MOV_NUMREG, numreg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
recsets.add(new TIVA_recset(*this), LF_RMOVIVA);
|
|
|
|
|
recsets.add(new TRMov_recset(*this), LF_RMOV);
|
|
|
|
|
|
|
|
|
|
for (ok = move_last(); ok;)
|
|
|
|
|
{
|
|
|
|
|
const int p = current_row();
|
|
|
|
|
|
|
|
|
|
if (get("PROG").as_int() > 1)
|
|
|
|
|
{
|
|
|
|
|
destroy(p);
|
|
|
|
|
if (p <= last())
|
|
|
|
|
move_to(p);
|
|
|
|
|
else
|
|
|
|
|
move_last();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
ok = move_prev();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TIVA_recset
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
void TIVA_recset::add_field(const char* name, int from, char tipo, int len, const char* def)
|
|
|
|
|
{
|
|
|
|
|
const bool required = false;
|
|
|
|
|
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
|
|
|
|
|
const int pos = from - 1;
|
|
|
|
|
|
|
|
|
|
if (def && *def)
|
|
|
|
|
{
|
|
|
|
|
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
|
|
|
|
|
TVariant var(def); var.convert_to(t);
|
|
|
|
|
create_field(name, pos, len, t, required, var);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
create_field(name, pos, len, t, required);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TIVA_recset::find(long numreg)
|
|
|
|
|
{
|
|
|
|
|
if (numreg != _numreg)
|
|
|
|
|
{
|
|
|
|
|
_first = _last = -1L;
|
|
|
|
|
|
|
|
|
|
bool ok = false;
|
|
|
|
|
TRecnotype f = 0L, l = last();
|
|
|
|
|
TRecnotype pos = f + (l - f) / 2;
|
|
|
|
|
|
|
|
|
|
while (!ok && f <= l)
|
|
|
|
|
{
|
|
|
|
|
TAS400_recordset::move_to(pos);
|
|
|
|
|
|
|
|
|
|
const long n = get(RMI_NUMREG).as_int();
|
|
|
|
|
|
|
|
|
|
if (n > numreg)
|
|
|
|
|
l = pos - 1;
|
|
|
|
|
else
|
|
|
|
|
if (n < numreg)
|
|
|
|
|
f = pos + 1;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
f = pos;
|
|
|
|
|
ok = true;
|
|
|
|
|
}
|
|
|
|
|
pos = f + (l - f) / 2;
|
|
|
|
|
}
|
|
|
|
|
if (ok)
|
|
|
|
|
{
|
|
|
|
|
bool ok1 = TAS400_recordset::move_to(f);
|
|
|
|
|
|
|
|
|
|
while (ok1 && numreg == get(RMV_NUMREG).as_int())
|
|
|
|
|
{
|
|
|
|
|
f = current_row();
|
|
|
|
|
ok1 = TAS400_recordset::move_prev();
|
|
|
|
|
}
|
|
|
|
|
ok1 = TAS400_recordset::move_to(f);
|
|
|
|
|
while (ok1 && numreg == get(RMV_NUMREG).as_int())
|
|
|
|
|
{
|
|
|
|
|
l = current_row();
|
|
|
|
|
ok1 = TAS400_recordset::move_next();
|
|
|
|
|
}
|
|
|
|
|
_first = f;
|
|
|
|
|
_last = l;
|
|
|
|
|
_numreg = numreg;
|
|
|
|
|
}
|
|
|
|
|
return ok;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const TVariant& TIVA_recset::get(const char* column_name) const
|
|
|
|
|
{
|
2007-03-30 13:51:17 +00:00
|
|
|
|
const TFixed_string fname(column_name);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
|
|
|
|
if (fname == RMI_IMPONIBILE || fname == RMI_IMPOSTA)
|
|
|
|
|
{
|
|
|
|
|
TVariant& var = get_tmp_var();
|
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
var.set(TAS400_recordset::get(fname).as_real() / CENTO);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
return TAS400_recordset::get(fname);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TIVA_recset::move_to(TRecnotype pos)
|
|
|
|
|
{
|
|
|
|
|
if (_first < 0L)
|
|
|
|
|
return TAS400_recordset::move_to(pos);
|
|
|
|
|
if (pos == 0L)
|
|
|
|
|
pos = _first;
|
|
|
|
|
if (pos <= _last)
|
|
|
|
|
return TAS400_recordset::move_to(pos);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TIVA_recset::TIVA_recset(TMov_recset & mov)
|
|
|
|
|
:TAS400_recordset("AS400(60)\n"),
|
|
|
|
|
_first(-1L), _last(-1L), _numreg(-1L)
|
|
|
|
|
{
|
|
|
|
|
const char a = 'a';
|
|
|
|
|
const char n = 'n';
|
|
|
|
|
TVariant var;
|
|
|
|
|
|
|
|
|
|
add_field(RMI_NUMREG, 1, n, 7);
|
|
|
|
|
add_field(RMI_NUMRIG, 8, n, 3);
|
|
|
|
|
add_field(RMI_CODIVA, 11, n, 3);
|
|
|
|
|
add_field(RMI_IMPONIBILE, 14, n, 15); // 18
|
|
|
|
|
add_field(RMI_IMPOSTA, 29, n, 15); // 18
|
|
|
|
|
add_field(RMI_TIPODET, 44, n, 1);
|
|
|
|
|
add_field(RMI_TIPOCR, 45, n, 1);
|
|
|
|
|
add_field(RMI_INTRA, 46, a, 1);
|
|
|
|
|
add_field(RMI_TIPOATT, 47, n, 1);
|
|
|
|
|
add_field(RMI_TIPOC, 48, a, 1);
|
|
|
|
|
add_field(RMI_GRUPPO, 49, n, 3);
|
|
|
|
|
add_field(RMI_CONTO, 52, n, 3); // 18
|
|
|
|
|
add_field(RMI_SOTTOCONTO, 55, n, 6);
|
|
|
|
|
TString4 fgr, fco, fso;
|
|
|
|
|
|
|
|
|
|
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
|
|
|
|
|
{
|
|
|
|
|
new_rec();
|
|
|
|
|
set(RMI_NUMREG, mov.get(MOV_NUMREG));
|
|
|
|
|
set(RMI_NUMRIG, mov.get("PROG"));
|
|
|
|
|
|
|
|
|
|
int civa = mov.get(RMI_CODIVA).as_int();
|
2007-09-17 15:33:04 +00:00
|
|
|
|
int ccaus = mov.get(MOV_CODCAUS).as_int();
|
|
|
|
|
const bool indetraibile = mov.indetraibile();
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
|
|
|
|
if (civa == 0)
|
|
|
|
|
civa = 310;
|
2007-09-17 15:33:04 +00:00
|
|
|
|
else
|
|
|
|
|
if (indetraibile)
|
|
|
|
|
set(RMI_TIPODET, "9");
|
2007-03-16 13:33:09 +00:00
|
|
|
|
var.set(civa);
|
|
|
|
|
set(RMI_CODIVA, var);
|
|
|
|
|
set(RMI_IMPONIBILE, mov.TAS400_recordset::get(RMI_IMPONIBILE));
|
|
|
|
|
set(RMI_IMPOSTA, mov.TAS400_recordset::get(RMI_IMPOSTA));
|
|
|
|
|
if (mov.vendite())
|
|
|
|
|
{
|
|
|
|
|
if (mov.fattura())
|
|
|
|
|
{
|
|
|
|
|
fgr = "G2"; fco = "C2"; fso = "S2";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fgr = "G1"; fco = "C1"; fso = "S1";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (mov.fattura())
|
|
|
|
|
{
|
|
|
|
|
fgr = "G1"; fco = "C1"; fso = "S1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fgr = "G2"; fco = "C2"; fso = "S2";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
set(RMI_GRUPPO, mov.get(fgr));
|
|
|
|
|
set(RMI_CONTO, mov.get(fco));
|
|
|
|
|
set(RMI_SOTTOCONTO,mov.get(fso));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TRMov_recset
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
void TRMov_recset::add_field(const char* name, int from, char tipo, int len, const char* def)
|
|
|
|
|
{
|
|
|
|
|
const bool required = false;
|
|
|
|
|
const TFieldtypes t = tipo == 'n' ? _longzerofld : _alfafld;
|
|
|
|
|
const int pos = from - 1;
|
|
|
|
|
|
|
|
|
|
if (def && *def)
|
|
|
|
|
{
|
|
|
|
|
CHECKS(def == NULL || (int)strlen(def) <= len, "Invalid default value ", def);
|
|
|
|
|
TVariant var(def); var.convert_to(t);
|
|
|
|
|
create_field(name, pos, len, t, required, var);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
create_field(name, pos, len, t, required);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TRMov_recset::find(long numreg)
|
|
|
|
|
{
|
|
|
|
|
if (numreg != _numreg)
|
|
|
|
|
{
|
|
|
|
|
_first = _last = -1L;
|
|
|
|
|
|
|
|
|
|
bool ok = false;
|
|
|
|
|
TRecnotype f = 0L, l= last();
|
|
|
|
|
TRecnotype pos = f + (l - f) / 2;
|
|
|
|
|
|
|
|
|
|
while (!ok && f <= l)
|
|
|
|
|
{
|
|
|
|
|
TAS400_recordset::move_to(pos);
|
|
|
|
|
|
|
|
|
|
const long n = get(RMV_NUMREG).as_int();
|
|
|
|
|
|
|
|
|
|
if (n > numreg)
|
|
|
|
|
l = pos - 1;
|
|
|
|
|
else
|
|
|
|
|
if (n < numreg)
|
|
|
|
|
f = pos + 1;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
f = pos;
|
|
|
|
|
ok = true;
|
|
|
|
|
}
|
|
|
|
|
pos = f + (l - f) / 2;
|
|
|
|
|
}
|
|
|
|
|
if (ok)
|
|
|
|
|
{
|
|
|
|
|
bool ok1 = TAS400_recordset::move_to(f);
|
|
|
|
|
|
|
|
|
|
while (ok1 && numreg == get(RMV_NUMREG).as_int())
|
|
|
|
|
{
|
|
|
|
|
f = current_row();
|
|
|
|
|
ok1 = TAS400_recordset::move_prev();
|
|
|
|
|
}
|
|
|
|
|
ok1 = TAS400_recordset::move_to(f);
|
|
|
|
|
while (ok1 && numreg == get(RMV_NUMREG).as_int())
|
|
|
|
|
{
|
|
|
|
|
l = current_row();
|
|
|
|
|
ok1 =TAS400_recordset:: move_next();
|
|
|
|
|
}
|
|
|
|
|
_first = f;
|
|
|
|
|
_last = l;
|
|
|
|
|
_numreg = numreg;
|
|
|
|
|
}
|
|
|
|
|
return ok;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const TVariant& TRMov_recset::get(const char* column_name) const
|
|
|
|
|
{
|
2007-03-30 13:51:17 +00:00
|
|
|
|
const TFixed_string fname(column_name);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
if (fname == RMV_IMPORTO)
|
2007-03-16 13:33:09 +00:00
|
|
|
|
{
|
|
|
|
|
TVariant& var = get_tmp_var();
|
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
var.set(TAS400_recordset::get(fname).as_real() / CENTO);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
return var;
|
|
|
|
|
}
|
|
|
|
|
return TAS400_recordset::get(fname);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TRMov_recset::move_to(TRecnotype pos)
|
|
|
|
|
{
|
|
|
|
|
if (_first < 0L)
|
|
|
|
|
return TAS400_recordset::move_to(pos);
|
|
|
|
|
if (pos == 0L)
|
|
|
|
|
pos = _first;
|
|
|
|
|
if (pos <= _last)
|
|
|
|
|
return TAS400_recordset::move_to(pos);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TRMov_recset::TRMov_recset(TMov_recset & mov)
|
|
|
|
|
:TAS400_recordset("AS400(99)\n"),
|
|
|
|
|
_first(-1L), _last(-1L), _numreg(-1L)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
const char a = 'a';
|
|
|
|
|
const char n = 'n';
|
|
|
|
|
TVariant var;
|
|
|
|
|
int row = 1;
|
|
|
|
|
TString4 fgr, fco, fso;
|
|
|
|
|
TVariant sez, tipo;
|
|
|
|
|
|
|
|
|
|
add_field(RMV_NUMREG, 1, n, 7);
|
|
|
|
|
add_field(RMV_NUMRIG, 8, n, 3);
|
|
|
|
|
add_field(RMV_SEZIONE, 11, a, 1);
|
|
|
|
|
add_field(RMV_TIPOC, 12, a, 1);
|
|
|
|
|
add_field(RMV_GRUPPO, 13, n, 3);
|
|
|
|
|
add_field(RMV_CONTO, 16, n, 3);
|
|
|
|
|
add_field(RMV_SOTTOCONTO, 19, n, 6);
|
|
|
|
|
add_field(RMV_DESCR, 25, a, 50);
|
|
|
|
|
add_field(RMV_IMPORTO, 85, n, 15); // 18
|
|
|
|
|
|
|
|
|
|
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
|
|
|
|
|
{
|
|
|
|
|
const int prog = mov.get("PROG").as_int();
|
|
|
|
|
|
|
|
|
|
if (prog == 1)
|
|
|
|
|
{
|
|
|
|
|
row = 1;
|
|
|
|
|
|
|
|
|
|
// 1o conto cliente/fornitore solo sul primo record
|
|
|
|
|
new_rec();
|
|
|
|
|
set(RMV_NUMREG, mov.get(MOV_NUMREG));
|
|
|
|
|
|
|
|
|
|
var.set(row++);
|
|
|
|
|
set(RMV_NUMRIG, var);
|
|
|
|
|
if (mov.vendite())
|
|
|
|
|
{
|
|
|
|
|
if (mov.fattura())
|
|
|
|
|
{
|
|
|
|
|
fgr = "G1"; fco = "C1"; fso = "S1";
|
|
|
|
|
sez = "D";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fgr = "G2"; fco = "C2"; fso = "S2";
|
|
|
|
|
sez = "A";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (mov.fattura())
|
|
|
|
|
{
|
|
|
|
|
fgr = "G2"; fco = "C2"; fso = "S2";
|
|
|
|
|
sez = "A";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fgr = "G1"; fco = "C1"; fso = "S1";
|
|
|
|
|
sez = "D";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
set(RMV_SEZIONE, sez);
|
|
|
|
|
tipo = mov.vendite() ? "C" : "F";
|
|
|
|
|
set(RMV_TIPOC, tipo);
|
|
|
|
|
set(RMV_GRUPPO, mov.get(fgr));
|
|
|
|
|
set(RMV_CONTO, mov.get(fco));
|
|
|
|
|
set(RMV_SOTTOCONTO,mov.get(fso));
|
|
|
|
|
set(RMV_IMPORTO, mov.TAS400_recordset::get(MOV_TOTDOC));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
int i = 0;
|
|
|
|
|
|
|
|
|
|
// 2o conto costo/ricavo
|
2007-09-17 15:33:04 +00:00
|
|
|
|
int ccaus = mov.get(MOV_CODCAUS).as_int();
|
|
|
|
|
const bool indetraibile = mov.indetraibile();
|
|
|
|
|
|
2007-03-16 13:33:09 +00:00
|
|
|
|
new_rec();
|
|
|
|
|
set(RMV_NUMREG, mov.get(MOV_NUMREG));
|
|
|
|
|
var.set(row++);
|
|
|
|
|
set(RMV_NUMRIG, var);
|
|
|
|
|
if (mov.vendite())
|
|
|
|
|
{
|
2007-09-17 15:33:04 +00:00
|
|
|
|
sez = "A"; // trucco perch<63> non si pu<70> usare test_swap
|
2007-03-16 13:33:09 +00:00
|
|
|
|
if (mov.fattura())
|
|
|
|
|
{
|
|
|
|
|
fgr = "G2"; fco = "C2"; fso = "S2";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fgr = "G1"; fco = "C1"; fso = "S1";
|
|
|
|
|
sez = "D";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2007-09-17 15:33:04 +00:00
|
|
|
|
sez = "D"; // trucco perch<63> non si pu<70> usare test_swap
|
2007-03-16 13:33:09 +00:00
|
|
|
|
if (mov.fattura())
|
|
|
|
|
{
|
|
|
|
|
fgr = "G1"; fco = "C1"; fso = "S1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fgr = "G2"; fco = "C2"; fso = "S2";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
set(RMV_SEZIONE, sez);
|
|
|
|
|
set(RMV_GRUPPO, mov.get(fgr));
|
|
|
|
|
set(RMV_CONTO, mov.get(fco));
|
|
|
|
|
set(RMV_SOTTOCONTO,mov.get(fso));
|
2007-09-17 15:33:04 +00:00
|
|
|
|
|
|
|
|
|
real importo = mov.TAS400_recordset::get(RMI_IMPONIBILE).as_real();
|
|
|
|
|
|
|
|
|
|
if (indetraibile)
|
|
|
|
|
importo += mov.TAS400_recordset::get(RMI_IMPOSTA).as_real();
|
|
|
|
|
|
|
|
|
|
set(RMV_IMPORTO, importo);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
|
|
|
|
// 3o conto IVA
|
2007-09-17 15:33:04 +00:00
|
|
|
|
if (!indetraibile && !mov.TAS400_recordset::get(RMI_IMPOSTA).as_real().is_zero())
|
2007-03-16 13:33:09 +00:00
|
|
|
|
{
|
|
|
|
|
new_rec();
|
|
|
|
|
set(RMV_NUMREG, mov.get(MOV_NUMREG));
|
|
|
|
|
var.set(row++);
|
|
|
|
|
set(RMV_NUMRIG, var);
|
|
|
|
|
if (mov.vendite())
|
|
|
|
|
sez = mov.fattura() ? "A" : "D";
|
|
|
|
|
else
|
|
|
|
|
sez = mov.fattura() ? "D" : "A";
|
|
|
|
|
set(RMV_SEZIONE, sez);
|
|
|
|
|
set(RMV_GRUPPO, mov.get("G3"));
|
|
|
|
|
set(RMV_CONTO, mov.get("C3"));
|
|
|
|
|
set(RMV_SOTTOCONTO,mov.get("S3"));
|
|
|
|
|
set(RMV_IMPORTO, mov.TAS400_recordset::get(RMI_IMPOSTA));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
int i = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TMaestri_mask
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
class TMaestri_mask : public TAutomask
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
|
void serialize(bool bSave);
|
|
|
|
|
protected:
|
|
|
|
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
|
|
|
public:
|
|
|
|
|
TMaestri_mask();
|
|
|
|
|
virtual ~TMaestri_mask();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
TMaestri_mask::TMaestri_mask() : TAutomask("pg0001200a")
|
|
|
|
|
{
|
|
|
|
|
serialize(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TMaestri_mask::~TMaestri_mask()
|
|
|
|
|
{
|
|
|
|
|
serialize(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TMaestri_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
|
|
|
|
{
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
|
|
|
|
|
{
|
|
|
|
|
if (k == K_F9)
|
|
|
|
|
{
|
|
|
|
|
FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC));
|
|
|
|
|
strcpy(fs.type, "");
|
|
|
|
|
strcpy(fs.name, f.get());
|
|
|
|
|
xvt_fsys_get_default_dir(&fs.dir);
|
|
|
|
|
xvt_fsys_save_dir();
|
|
|
|
|
if (xvt_dm_post_file_open(&fs, TR("Selezione file")) == FL_OK)
|
|
|
|
|
{
|
|
|
|
|
TFilename n;
|
|
|
|
|
xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(n.size()), n.size());
|
|
|
|
|
n.add(fs.name);
|
|
|
|
|
f.set(n);
|
|
|
|
|
}
|
|
|
|
|
xvt_fsys_restore_dir();
|
|
|
|
|
f.set_focus();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TMaestri_mask::serialize(bool bSave)
|
|
|
|
|
{
|
|
|
|
|
const char* defpar = "tc";
|
|
|
|
|
TConfig ini(CONFIG_DITTA, defpar);
|
|
|
|
|
for (int i = fields()-1; i >= 0; i--)
|
|
|
|
|
{
|
|
|
|
|
TMask_field& f = fld(i);
|
|
|
|
|
const TFieldref* fr = f.field();
|
|
|
|
|
if (fr != NULL)
|
|
|
|
|
{
|
|
|
|
|
if (bSave)
|
|
|
|
|
fr->write(ini, defpar, f.get());
|
|
|
|
|
else
|
|
|
|
|
f.set(fr->read(ini, defpar));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
// TMaestri_sender
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
|
class TMaestri_sender : public TTS_sender
|
|
|
|
|
{
|
|
|
|
|
TMaestri_mask * _mask;
|
|
|
|
|
|
|
|
|
|
protected:
|
2007-03-30 13:51:17 +00:00
|
|
|
|
virtual TRecordset & movrecset();
|
2007-03-16 13:33:09 +00:00
|
|
|
|
virtual TRecordset & rmovrecset(const TRecordset & mov);
|
|
|
|
|
virtual TRecordset & rivarecset(const TRecordset & mov);
|
|
|
|
|
virtual const TRecordset & clirecset(const char tipocf, const long codcf);
|
|
|
|
|
virtual const char * decode_causale(const TRecordset& mov);
|
2007-03-30 13:51:17 +00:00
|
|
|
|
virtual TMask & get_mask();
|
2007-03-16 13:33:09 +00:00
|
|
|
|
virtual const char * extra_modules() const {return "ba";}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual void update_parameters(const TMask & m, TRecordset & mov) {}
|
|
|
|
|
TMaestri_sender() : _mask(NULL) {}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
TMaestri_sender& app() { return (TMaestri_sender&)main_app(); }
|
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
TMask & TMaestri_sender::get_mask()
|
2007-03-16 13:33:09 +00:00
|
|
|
|
{
|
|
|
|
|
if (_mask == NULL)
|
|
|
|
|
_mask = new TMaestri_mask;
|
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
return * _mask;
|
2007-03-16 13:33:09 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const char * TMaestri_sender::decode_causale(const TRecordset& mov)
|
|
|
|
|
{
|
|
|
|
|
const int codcaus = mov.get(MOV_CODCAUS).as_int();
|
|
|
|
|
|
|
|
|
|
switch (codcaus)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
return "Fattura di vendita";
|
|
|
|
|
case 2:
|
|
|
|
|
return "Nota di credito a cliente";
|
|
|
|
|
case 11:
|
|
|
|
|
return "Fattura di acquisto";
|
|
|
|
|
case 12:
|
|
|
|
|
return "Nota di credito da fornitore";
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
TRecordset & TMaestri_sender::movrecset()
|
2007-03-16 13:33:09 +00:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
TRecordset * mov = get_recset(LF_MOV);
|
|
|
|
|
|
|
|
|
|
if (mov == NULL)
|
|
|
|
|
{
|
|
|
|
|
TString query("SELECT * FROM ");
|
2007-03-30 13:51:17 +00:00
|
|
|
|
TMask & m = get_mask();
|
|
|
|
|
TFilename name = m.get(F_INPATH);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
name.add(m.get(F_INFILEM));
|
2007-03-16 13:33:09 +00:00
|
|
|
|
query << name;
|
|
|
|
|
|
|
|
|
|
mov = set_recset(LF_MOV, new TMov_recset(query, recsets()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *mov;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TRecordset & TMaestri_sender::rmovrecset(const TRecordset & mov)
|
|
|
|
|
{
|
|
|
|
|
TRMov_recset * rmov = (TRMov_recset *) get_recset(LF_RMOV);
|
|
|
|
|
CHECK(rmov != NULL, "Recordset righe contabili non inizializzato");
|
|
|
|
|
long numreg = mov.get(MOV_NUMREG).as_int();
|
|
|
|
|
|
|
|
|
|
rmov->find(numreg);
|
|
|
|
|
return *rmov;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TRecordset & TMaestri_sender::rivarecset(const TRecordset & mov)
|
|
|
|
|
{
|
|
|
|
|
TIVA_recset * rmoviva = (TIVA_recset *) get_recset(LF_RMOVIVA);
|
|
|
|
|
CHECK(rmoviva != NULL, "Recordset righe IVA non inizializzato");
|
|
|
|
|
long numreg = mov.get(MOV_NUMREG).as_int();
|
|
|
|
|
|
|
|
|
|
rmoviva->find(numreg);
|
|
|
|
|
return *rmoviva;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const TRecordset& TMaestri_sender::clirecset(const char tipocf, const long codcf)
|
|
|
|
|
{
|
|
|
|
|
TClifo_recset * clifo = (TClifo_recset *) get_recset(LF_CLIFO);
|
|
|
|
|
|
|
|
|
|
if (clifo == NULL)
|
|
|
|
|
{
|
|
|
|
|
TString query("SELECT * FROM ");
|
2007-03-30 13:51:17 +00:00
|
|
|
|
TMask & m = get_mask();
|
|
|
|
|
TFilename name = m.get(F_INPATH);
|
2007-03-16 13:33:09 +00:00
|
|
|
|
|
2007-03-30 13:51:17 +00:00
|
|
|
|
name.add(m.get(F_INFILEA));
|
2007-03-16 13:33:09 +00:00
|
|
|
|
query << name;
|
|
|
|
|
|
|
|
|
|
clifo = (TClifo_recset *) set_recset(LF_CLIFO, new TClifo_recset(query));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!clifo->find(tipocf, codcf))
|
|
|
|
|
{
|
|
|
|
|
TString msg(tipocf == 'C' ? "Cliente " : "Fornitore ");
|
|
|
|
|
|
|
|
|
|
msg << codcf << " assente";
|
|
|
|
|
app().log(2, msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *clifo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int pg0001200(int argc, char* argv[])
|
|
|
|
|
{
|
|
|
|
|
TMaestri_sender app;
|
|
|
|
|
app.run(argc, argv, "Invio a TeamSystem");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|