3a03066a32
Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 patch 1350 git-svn-id: svn://10.65.10.50/trunk@18385 c028cbd2-c16b-5b4b-a496-9718f37d4682
642 lines
18 KiB
C++
Executable File
642 lines
18 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <execp.h>
|
|
#include <progind.h>
|
|
#include <reprint.h>
|
|
#include <reputils.h>
|
|
#include <utility.h>
|
|
|
|
#include "pg0001.h"
|
|
#include "pg0001600a.h"
|
|
|
|
#include "textset.h"
|
|
|
|
|
|
#include <clifo.h>
|
|
#include <cfven.h>
|
|
#include <comuni.h>
|
|
#include <doc.h>
|
|
#include <rdoc.h>
|
|
#include <causali.h>
|
|
#include <mov.h>
|
|
#include <rmov.h>
|
|
#include <rmoviva.h>
|
|
|
|
#include "..\cg\cglib01.h"
|
|
#include "..\cg\cg2101.h"
|
|
#include "..\ve\velib.h"
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TCLienti_textset
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TClienti_recset : public TAS400_recordset
|
|
{
|
|
TAssoc_array _index;
|
|
|
|
protected:
|
|
void add_field(const char* name = "Filler", char tipo = 'a', int len = 0, int from = -1,
|
|
const char* def = NULL);
|
|
|
|
public:
|
|
TClienti_recset(const char * query);
|
|
};
|
|
|
|
void TClienti_recset::add_field(const char* name, char tipo, int len, int from,
|
|
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);
|
|
}
|
|
|
|
|
|
TClienti_recset::TClienti_recset(const char * query)
|
|
: TAS400_recordset(TString("AS400(3002)\n") << query)
|
|
{
|
|
const char a = 'a';
|
|
const char n = 'n';
|
|
const bool o = true;
|
|
const bool f = false;
|
|
|
|
add_field("FLD001", n, 4, 1); // codice azienda
|
|
add_field("FLD002", a, 2, 5); // filiale
|
|
add_field("FLD003", a, 1, 7); // stato record se A annullata
|
|
add_field(CLI_TIPOPERS, n, 1, 8); // società = 2 persona fisica = 1
|
|
add_field(CLI_RAGSOC, a, 45, 9); // Ragione sociale
|
|
add_field(CLI_INDCF, a, 30, 54); // indirizzo
|
|
add_field(CLI_COMCF, a, 25, 84); // Comune di residenza
|
|
add_field("FLD008", a, 2, 109); // Provincia di residenza
|
|
add_field(CLI_CAPCF, a, 5, 121); // C.a.p.
|
|
add_field(CLI_COFI, a, 16, 126); // Codice fiscale o partita I.v.a
|
|
add_field(CLI_PAIV, a, 11, 142); // Partita I.v.a.
|
|
add_field("FLD012", a, 30, 153); // Indirizzo domicilio fiscale
|
|
add_field("FLD013", a, 25, 183); // Comune domicilio fiscale
|
|
add_field("FLD014", a, 2, 208); // Provincia domicilio fiscale
|
|
add_field("FLD015", a, 5, 220); // C.a.p. domicilio fiscale
|
|
add_field("FLD016", a, 1, 241); // Sesso
|
|
add_field("FLD017", a, 4, 242); // anno di nascita o costituzione
|
|
add_field("FLD018", a, 2, 246); // mese di nascita o costituzione
|
|
add_field("FLD019", a, 2, 248); // giorno di nascita o costituzione
|
|
add_field("FLD020", a, 25, 250); // comune di nascita o costituzione
|
|
add_field("FLD021", a, 2, 275); // provincia di nascita o costituzione
|
|
add_field("FLD022", a, 20, 277); // Cognome ditta individuale
|
|
add_field("FLD023", a, 15, 297); // Nome ditta individuale
|
|
add_field("FLD024", a, 30, 312); // Indirizzo domicilio fiscale
|
|
add_field("FLD025", a, 23, 342); // Comune domicilio fiscale
|
|
add_field("FLD026", a, 5, 375); // C.a.p. domicilio fiscale
|
|
add_field("FLD027", a, 30, 394); // Indirizzo sede legale
|
|
add_field("FLD028", a, 25, 424); // comune sede legale
|
|
add_field("FLD029", a, 2, 449); // provincia sede legale
|
|
add_field("FLD030", a, 5, 461); // c..a.p. sede legale
|
|
add_field(CLI_PTEL, a, 4, 466); // prefisso telefonico sede legale
|
|
add_field(CLI_TEL, a, 10, 470); // numero telefonico sede legale
|
|
add_field("FLD033", a, 2, 480); // provincia costituzione
|
|
add_field("FLD034", n, 1, 494); // Domicilio fiscale diverso da legale se c'è 1 è diverso 0 è uguale}
|
|
add_field("FILLER", n, 2501, 495);
|
|
add_field(CLI_CODCF, n, 5, 2996); // codice cliente
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TMov_textset
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TMov_recset : public TAS400_recordset
|
|
{
|
|
TAssoc_array _index;
|
|
|
|
protected:
|
|
void add_field(const char* name = "Filler", char tipo = 'a', int len = 0, int from = -1,
|
|
const char* def = NULL);
|
|
|
|
public:
|
|
TMov_recset(const char * query);
|
|
};
|
|
|
|
void TMov_recset::add_field(const char* name, char tipo, int len, int from,
|
|
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);
|
|
}
|
|
|
|
|
|
TMov_recset::TMov_recset(const char * query)
|
|
: TAS400_recordset(TString("AS400(285)\n") << query)
|
|
{
|
|
const char a = 'a';
|
|
const char n = 'n';
|
|
const bool o = true;
|
|
const bool f = false;
|
|
|
|
add_field(MOV_NUMDOC, a, 5, 1); // NUMERO DOCUMENTO,
|
|
add_field(MOV_CODCAUS, a, 2, 6); // CAUSALE FATTURA
|
|
add_field("ANNOD", n, 4, 8); // ANNO DATA DOCUMENTO
|
|
add_field("MESED", n, 2, 12); // MEDE DATA DOCUMENTO
|
|
add_field("GIORNOD", n, 2, 14); // GIORNO DATA DOCUMENTO
|
|
add_field(MOV_CODCF, n, 4, 16); // CODICE CLIENTE ??????
|
|
add_field("Filler", n, 20, 2); // CODICE FILIALE
|
|
add_field("IMPONIBILE1", n, 15, 22); // PRIMO IMPONIBILE IVA
|
|
add_field("IMPONIBILE2", n, 15, 37); // SECONDO IMPONIBILE IVA
|
|
add_field("IMPONIBILE3", n, 15, 52); // TERZO IMPONIBILE IVA
|
|
add_field("IMPONIBILE4", n, 15, 67); // QUARTO IMPONIBILE IVA
|
|
add_field("CODIVA1", n, 2, 82); // PRIMA ALIQUOTA IVA
|
|
add_field("CODIVA2", n, 2, 84); // SECCONDA ALIQUOTA IVA,
|
|
add_field("CODIVA3", n, 2, 86); // TERZA ALIQUOTA IVA
|
|
add_field("CODIVA4", n, 3, 88); // QUARTA ALIQUOTA IVA
|
|
add_field("IMPOSTA1", n, 15, 90); // IVA SU PRIMO IMPONIBILE
|
|
add_field("IMPOSTA2", n, 15, 105); // IVA SU SECONDO IMPONIBILE
|
|
add_field("IMPOSTA3", n, 15, 120); // IVA SU TERZO IMPONIBILE
|
|
add_field("IMPOSTA4", n, 15, 135); // IVA SU QUARTO IMPONIBILE
|
|
add_field("FLD019", n, 15, 150); // TOTALE SPESE
|
|
add_field("FLD020", n, 15, 165); // TOTALE COMPETENZE ????? i conti ?
|
|
add_field("FLD021", n, 15, 180); // TOTALE ANTICIPO
|
|
add_field(MOV_RITFIS, n, 15, 195); // TOTALE RITENUTA ACCONTO
|
|
add_field("IMPOSTA", n, 15, 210); // TOTALE IVA
|
|
add_field(MOV_TOTDOC, n, 15, 225); // TOTALE FATTURA
|
|
add_field("MESEC", n, 2, 240); // MESE DI COMPETENZA
|
|
add_field("ANNOC", n, 4, 242); // ANNO DI COMPETENZA
|
|
add_field("FLSEZ", a, 1, 246); // DARE / AVERE = D o A
|
|
add_field("FLD028", a, 1, 247); // RISERVATO FLAG PAGAMENTO ???
|
|
add_field("FLD029", a, 1, 248); // RISERVATO,
|
|
add_field("FLD030", a, 1, 249); // RISERVATO TIPO FATTURAZIONE, ???
|
|
add_field(MOV_CODPAG, a, 3, 250); // CODICE PAGAMENTO
|
|
add_field("FLD032", n, 15, 252); // CDA 2% PER AVVOCATI ???
|
|
add_field("FLD033", a, 1, 267); // SOGGETTO RITENUTA ???
|
|
add_field("FLD034", a, 1, 268); // MODALITA' PAGAMENTO
|
|
add_field("FLD035", a, 1, 269); // PASSATO A COMPENSI A TERZI ???
|
|
add_field("FLD036", a, 7, 270); // RISERVATO
|
|
add_field("FLD037", n, 5, 277); // CODICE AZIENDA CONTABILITA'
|
|
add_field("FLD038", a, 1); // DELEGA ???
|
|
add_field("STATO", a, 1, 283); // STATO MOVIMENTO ???
|
|
}
|
|
|
|
// TAutomask
|
|
|
|
class TPaghe2mov_mask : public TAutomask
|
|
{
|
|
void serialize(bool bSave);
|
|
protected:
|
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
public:
|
|
TPaghe2mov_mask();
|
|
virtual ~TPaghe2mov_mask();
|
|
};
|
|
|
|
TPaghe2mov_mask::TPaghe2mov_mask() : TAutomask("pg0001600a")
|
|
{
|
|
serialize(false);
|
|
}
|
|
|
|
TPaghe2mov_mask::~TPaghe2mov_mask()
|
|
{
|
|
serialize(true);
|
|
}
|
|
|
|
bool TPaghe2mov_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
void TPaghe2mov_mask::serialize(bool bSave)
|
|
{
|
|
const char* defpar = "MAIN";
|
|
TConfig ini("pg0001conf.ini", 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));
|
|
}
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TPaghe2mov application
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TPaghe2mov : public TSkeleton_application
|
|
{
|
|
TPaghe2mov_mask* _m;
|
|
TLog_report* _log;
|
|
|
|
protected:
|
|
virtual const char * extra_modules() const {return "ba";}
|
|
|
|
public:
|
|
virtual bool create();
|
|
virtual bool destroy();
|
|
virtual void main_loop();
|
|
void load_cli();
|
|
void load_mov();
|
|
TPaghe2mov() {}
|
|
};
|
|
|
|
TPaghe2mov& app() { return (TPaghe2mov&) main_app(); }
|
|
|
|
|
|
bool TPaghe2mov::create()
|
|
{
|
|
_m = new TPaghe2mov_mask();
|
|
_m->set_handler(F_INPATH, browse_file_handler);
|
|
return TSkeleton_application::create ();
|
|
}
|
|
|
|
bool TPaghe2mov::destroy()
|
|
{
|
|
delete _m;
|
|
return TApplication::destroy();
|
|
}
|
|
|
|
|
|
|
|
void TPaghe2mov::load_cli()
|
|
{
|
|
TString query("SELECT * FROM ");
|
|
TFilename name = _m->get(F_INPATH);
|
|
const bool aggcli = _m->get_bool(F_AGGCLI);
|
|
|
|
name.add("utenti.txt");
|
|
if (name.exist())
|
|
{
|
|
TLocalisamfile clifo(LF_CLIFO);
|
|
TLocalisamfile cfven(LF_CFVEN);
|
|
|
|
query << name;
|
|
|
|
TClienti_recset clienti(query);
|
|
TProgind pi(clienti.items(), TR("Scansione clienti"), true, true);
|
|
|
|
for (bool ok = clienti.move_first(); ok; ok = clienti.move_next())
|
|
{
|
|
if (!pi.addstatus(1))
|
|
break;
|
|
|
|
clifo.zero();
|
|
clifo.put(CLI_TIPOCF, "C");
|
|
|
|
TString cf(clienti.get(CLI_COFI).as_string());
|
|
TString paiv(clienti.get(CLI_PAIV).as_string());
|
|
|
|
cf.trim();
|
|
paiv.trim();
|
|
|
|
if (clienti.get("FLD003").as_string() != "A")
|
|
{
|
|
long codcf = clienti.get(CLI_CODCF).as_int();
|
|
|
|
clifo.zero();
|
|
clifo.put(CLI_TIPOCF, "C");
|
|
clifo.put(CLI_CODCF, codcf);
|
|
|
|
const bool found = clifo.read(_isequal) == NOERR;
|
|
|
|
if (!found)
|
|
{
|
|
clifo.zero();
|
|
clifo.put(CLI_TIPOCF, "C");
|
|
clifo.put(CLI_CODCF, codcf);
|
|
cfven.zero();
|
|
cfven.put(CFV_TIPOCF, "C");
|
|
cfven.put(CFV_CODCF, codcf);
|
|
cfven.write();
|
|
}
|
|
else
|
|
if (!aggcli)
|
|
continue;
|
|
|
|
clifo.put(CLI_TIPOPERS, clienti.get(CLI_TIPOPERS).as_string());
|
|
clifo.put(CLI_RAGSOC, clienti.get(CLI_RAGSOC).as_string());
|
|
clifo.put(CLI_INDCF, clienti.get(CLI_INDCF).as_string());
|
|
clifo.put(CLI_CAPCF, clienti.get(CLI_CAPCF).as_string());
|
|
|
|
const TString8 cap(clienti.get(CLI_CAPCF).as_string());
|
|
TString80 comune(clienti.get(CLI_COMCF).as_string());
|
|
|
|
comune.trim();
|
|
|
|
const TString& codcom = cap2comune(cap, comune);
|
|
|
|
clifo.put(CLI_COMCF, cap);
|
|
if (codcom.full())
|
|
comune.cut(0);
|
|
clifo.put(CLI_LOCCF, comune);
|
|
clifo.put(CLI_COMCF, codcom);
|
|
clifo.put(CLI_COFI, cf);
|
|
clifo.put(CLI_PAIV, paiv);
|
|
if (found)
|
|
{
|
|
const int err = clifo.rewrite();
|
|
TString msg("Aggiornamento cliente ");
|
|
|
|
msg << clifo.get(CLI_CODCF) << " - " << clienti.get(CLI_RAGSOC).as_string();
|
|
if (err == NOERR)
|
|
_log->log(0, msg);
|
|
else
|
|
{
|
|
msg << " - errore n. " << err;
|
|
_log->log(2, msg);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
const int err = clifo.write();
|
|
TString msg("Inserimento cliente ");
|
|
|
|
msg << clifo.get(CLI_CODCF) << " - " << clienti.get(CLI_RAGSOC).as_string();
|
|
if (err == NOERR)
|
|
_log->log(0, msg);
|
|
else
|
|
{
|
|
msg << " - errore n. " << err;
|
|
_log->log(2, msg);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TPaghe2mov::load_mov()
|
|
{
|
|
TString query("SELECT * FROM ");
|
|
TFilename name = _m->get(F_INPATH);
|
|
|
|
name.add("arfat.txt");
|
|
if (name.exist())
|
|
{
|
|
TLocalisamfile movf(LF_MOV);
|
|
|
|
query << name;
|
|
|
|
TMov_recset movim(query);
|
|
TProgind pi(movim.items(), TR("Scansione movimenti"), true, true);
|
|
const TDate datareg(_m->get_date(F_DATAREG));
|
|
const TDate from(_m->get_date(F_DATAFROM));
|
|
const TDate to(_m->get_date(F_DATATO));
|
|
long numreg = 0L;
|
|
TEsercizi_contabili esc;
|
|
const int annoes = esc.date2esc(datareg);
|
|
TLocalisamfile movimenti(LF_MOV);
|
|
|
|
if (movimenti.last() == NOERR)
|
|
numreg = movimenti.get_long(MOV_NUMREG);
|
|
for (bool ok = movim.move_first(); ok; ok = movim.move_next())
|
|
{
|
|
if (!pi.addstatus(1))
|
|
break;
|
|
|
|
const TDate datadoc(movim.get("GIORNOD").as_int(),
|
|
movim.get("MESED").as_int(),
|
|
movim.get("ANNOD").as_int());
|
|
|
|
if (from.ok() && datadoc < from)
|
|
continue;
|
|
if (to.ok() && datadoc > to)
|
|
continue;
|
|
|
|
TMovimentoPN mov;
|
|
|
|
int cg_rows = 0;
|
|
|
|
TString8 codcaus(movim.get(MOV_CODCAUS).as_string());
|
|
|
|
codcaus.insert("0");
|
|
|
|
const TRectype & rec = cache().get(LF_CAUSALI, codcaus);
|
|
|
|
if (rec.empty())
|
|
{
|
|
TString msg("Causale ");
|
|
|
|
msg << movim.get(MOV_CODCAUS).as_string() << " assente";
|
|
_log->log(2, msg);
|
|
continue;
|
|
}
|
|
|
|
const TCausale caus(codcaus, datareg.year());
|
|
const TString8 codreg = rec.get(CAU_REG);
|
|
TRegistro & reg = caus.reg();
|
|
|
|
mov.lfile().put(MOV_NUMREG, ++numreg);
|
|
mov.lfile().put(MOV_ANNOES, annoes);
|
|
mov.lfile().put(MOV_DATAREG, datareg);
|
|
mov.lfile().put(MOV_ANNOIVA, datareg.year());
|
|
mov.lfile().put(MOV_TIPO, "C");
|
|
mov.lfile().put(MOV_CODCF, movim.get(MOV_CODCF).as_int());
|
|
|
|
mov.lfile().put(MOV_DATADOC, datadoc);
|
|
const TString16 numdoc = movim.get(MOV_NUMDOC).as_string();
|
|
mov.lfile().put(MOV_NUMDOC, numdoc);
|
|
mov.lfile().put(MOV_TIPODOC, caus.tipo_doc());
|
|
const real totdoc = movim.get(MOV_TOTDOC).as_real();
|
|
TRectype & rowtot = mov.cg(cg_rows++);
|
|
|
|
mov.lfile().put(MOV_TOTDOC, totdoc);
|
|
rowtot.put(RMV_SEZIONE, caus.sezione(1));
|
|
TBill c;
|
|
caus.bill(1, c);
|
|
rowtot.put(RMV_GRUPPO, c.gruppo());
|
|
rowtot.put(RMV_CONTO, c.conto());
|
|
rowtot.put(RMV_SOTTOCONTO, movim.get(MOV_CODCF).as_int());
|
|
rowtot.put(RMV_IMPORTO, totdoc);
|
|
rowtot.put(RMV_ROWTYPE, "T");
|
|
|
|
TRectype & rowric = mov.cg(cg_rows++);
|
|
|
|
rowric.put(RMV_SEZIONE, caus.sezione(2));
|
|
TBill r;
|
|
caus.bill(2, r);
|
|
rowric.put(RMV_GRUPPO, r.gruppo());
|
|
rowric.put(RMV_CONTO, r.conto());
|
|
rowric.put(RMV_SOTTOCONTO, r.sottoconto());
|
|
rowric.put(RMV_ROWTYPE, "I");
|
|
|
|
const real ritfis = movim.get(MOV_RITFIS).as_real();
|
|
|
|
if (ritfis != ZERO)
|
|
{
|
|
TBill c;
|
|
TRectype & row = mov.cg(cg_rows++);
|
|
|
|
mov.lfile().put(MOV_RITFIS, ritfis);
|
|
row.put(RMV_SEZIONE, caus.sezione(7));
|
|
caus.bill(7, c);
|
|
row.put(RMV_GRUPPO, c.gruppo());
|
|
row.put(RMV_CONTO, c.conto());
|
|
row.put(RMV_SOTTOCONTO, c.sottoconto());
|
|
row.put(RMV_IMPORTO, ritfis);
|
|
row.put(RMV_ROWTYPE, "F");
|
|
}
|
|
|
|
const real imposta = movim.get("IMPOSTA").as_real();
|
|
|
|
if (imposta != ZERO)
|
|
{
|
|
TBill c;
|
|
TRectype & row = mov.cg(cg_rows++);
|
|
|
|
row.put(RMV_SEZIONE, caus.sezione(3));
|
|
caus.bill(3, c);
|
|
row.put(RMV_GRUPPO, c.gruppo());
|
|
row.put(RMV_CONTO, c.conto());
|
|
row.put(RMV_SOTTOCONTO, c.sottoconto());
|
|
row.put(RMV_IMPORTO, imposta);
|
|
row.put(RMV_ROWTYPE, "D");
|
|
}
|
|
mov.lfile().put(MOV_CODCAUS, codcaus);
|
|
|
|
TString descr("Fattura n.ro ");
|
|
|
|
descr << numdoc << " del " << datadoc;
|
|
mov.lfile().put(MOV_DESCR, descr);
|
|
mov.lfile().put(MOV_REG, codreg);
|
|
int protiva = reg.protocol() + 1;
|
|
mov.lfile().put(MOV_PROTIVA, protiva);
|
|
|
|
TString8 codpag(movim.get(MOV_CODPAG).as_string());
|
|
|
|
if (codpag == "000")
|
|
codpag.cut(0);
|
|
mov.lfile().put(MOV_CODPAG, codpag);
|
|
|
|
const int annoc = movim.get("ANNOC").as_int();
|
|
const int mesec = movim.get("MESEC").as_int();
|
|
|
|
if (annoc != 0 && (annoc != datareg.year() || mesec != datareg.month()))
|
|
mov.lfile().put(MOV_DATACOMP, TDate(1, mesec, annoc));
|
|
else
|
|
mov.lfile().put(MOV_DATACOMP, datareg);
|
|
|
|
real totric;
|
|
for (int i= 1; i <= 4 ; i++)
|
|
{
|
|
TString16 fname("IMPONIBILE");
|
|
|
|
fname << i;
|
|
|
|
const real imp = movim.get(fname).as_real();
|
|
if (imp != ZERO)
|
|
{
|
|
TRectype & iva = mov.iva(i - 1);
|
|
bool swap = caus.sezione(2) == 'D';
|
|
|
|
totric += imp;
|
|
iva.put(RMI_IMPONIBILE, imp);
|
|
fname = "CODIVA";
|
|
fname << i;
|
|
iva.put(RMI_CODIVA, movim.get(fname).as_string());
|
|
fname = "IMPOSTA";
|
|
fname << i;
|
|
|
|
const real imposta = movim.get(fname).as_real();
|
|
|
|
iva.put(RMI_IMPOSTA, imposta);
|
|
iva.put(RMI_GRUPPO, r.gruppo());
|
|
iva.put(RMI_CONTO, r.conto());
|
|
iva.put(RMI_SOTTOCONTO, r.sottoconto());
|
|
iva.put(RMI_RIGAIMP, 2);
|
|
if (imposta != ZERO)
|
|
iva.put(RMI_RIGAIVA, 3);
|
|
}
|
|
}
|
|
rowric.put(RMV_IMPORTO, totric);
|
|
mov.adjust_rowtypes();
|
|
|
|
const int err = mov.write();
|
|
TString msg("Movimento n.ro ");
|
|
|
|
msg << numreg;
|
|
if (err == NOERR)
|
|
{
|
|
reg.update(protiva, datareg);
|
|
_log->log(0, msg);
|
|
}
|
|
else
|
|
{
|
|
msg << " - errore n. " << err;
|
|
_log->log(2, msg);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TPaghe2mov::main_loop()
|
|
{
|
|
// eliminazione files delle elaborazioni precedenti
|
|
TString_array transactions;
|
|
TFilename pgfiles; pgfiles.tempdir();
|
|
pgfiles.add("conde*.ini");
|
|
list_files(pgfiles, transactions);
|
|
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
|
remove_file(*name);
|
|
// main
|
|
while (_m->run() == K_ENTER)
|
|
{
|
|
const char* const title = TR("Importazione clienti");
|
|
|
|
_log = new TLog_report(title);
|
|
load_cli();
|
|
load_mov();
|
|
TReport_book book;
|
|
book.add(*_log);
|
|
book.preview();
|
|
}
|
|
}
|
|
|
|
|
|
int pg0001600(int argc, char* argv[])
|
|
{
|
|
TPaghe2mov app;
|
|
app.run(argc, argv, TR("Ricezione clienti e fatture da paghe"));
|
|
return TRUE;
|
|
}
|
|
|
|
|