d5861b30c0
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 1.7 aga patch 102 sul main trunk git-svn-id: svn://10.65.10.50/trunk@9769 c028cbd2-c16b-5b4b-a496-9718f37d4682
235 lines
5.7 KiB
C++
Executable File
235 lines
5.7 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <execp.h>
|
|
#include <progind.h>
|
|
#include <relation.h>
|
|
|
|
#include "baeur.h"
|
|
#include "../mg/mglib.h"
|
|
#include "../cg/cglib01.h"
|
|
#include "../ve/velib.h"
|
|
|
|
#include <doc.h>
|
|
#include <rdoc.h>
|
|
|
|
class TArticolo_euro : public TArticolo_giacenza
|
|
{
|
|
public:
|
|
bool adjust_storico(const int anno);
|
|
|
|
TArticolo_euro(const char* codice = NULL) : TArticolo_giacenza(codice) {}
|
|
TArticolo_euro(const TRectype& rec) : TArticolo_giacenza(rec) {}
|
|
virtual ~TArticolo_euro() {}
|
|
};
|
|
|
|
bool TArticolo_euro::adjust_storico(const int anno)
|
|
|
|
{
|
|
bool updated = FALSE;
|
|
TAssoc_array values;
|
|
TString16 annoes; annoes << anno;
|
|
TRecord_array & s = storico(annoes);
|
|
const int sto_items = s.rows();
|
|
|
|
for (int i = 1; i <= sto_items; i++)
|
|
{
|
|
TRectype & rec = s[i];
|
|
TString16 codmag(rec.get(STOMAG_CODMAG));
|
|
real val = rec.get_real(STOMAG_VALORE);
|
|
val *= rec.get_real(STOMAG_QUANT);
|
|
real * tot = (real *)values.objptr(codmag);
|
|
|
|
if (tot == NULL)
|
|
{
|
|
tot = new real;
|
|
values.add(codmag, tot);
|
|
}
|
|
*tot += val;
|
|
}
|
|
|
|
TRecord_array & m = mag(annoes);
|
|
const int mag_items = m.rows();
|
|
|
|
for (i = 1; i <= mag_items; i++)
|
|
{
|
|
TRectype & rec = m[i];
|
|
TString16 codmag(rec.get(MAG_CODMAG));
|
|
const real val = rec.get_real(MAG_VALRIM);
|
|
real * tot = (real *)values.objptr(codmag);
|
|
|
|
if (tot == NULL)
|
|
{
|
|
tot = new real;
|
|
values.add(codmag, tot);
|
|
}
|
|
*tot -= val;
|
|
}
|
|
|
|
for (i = 1; i <= mag_items; i++)
|
|
{
|
|
TRectype & rec = m[i];
|
|
TString16 codmag(rec.get(MAG_CODMAG));
|
|
real val = rec.get_real(MAG_VALRIM);
|
|
real * corr = (real *)values.objptr(codmag);
|
|
|
|
if (corr != NULL & *corr != ZERO)
|
|
{
|
|
corr->round(TCurrency::get_firm_dec(FALSE));
|
|
val += *corr;
|
|
rec.put(MAG_VALRIM, val);
|
|
updated = TRUE;
|
|
*corr = ZERO;
|
|
}
|
|
}
|
|
|
|
return updated;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Main app
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TEuro06_app : public TEuro_app
|
|
{
|
|
protected:
|
|
virtual bool create();
|
|
virtual void main_loop();
|
|
void update_stomag();
|
|
|
|
public:
|
|
};
|
|
|
|
inline TEuro06_app& app() { return (TEuro06_app&)main_app(); }
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// Main
|
|
///////////////////////////////////////////////////////////
|
|
|
|
bool TEuro06_app::create()
|
|
{
|
|
if (!dbf_exists(LF_ANAMAG) || !dbf_exists(LF_STOMAG) || !dbf_exists(LF_MOVMAG))
|
|
return FALSE;
|
|
|
|
TEuro_app::create();
|
|
bool ok = goto_euro(get_firm());
|
|
open_files(LF_TAB, LF_TABCOM, LF_STOMAG, LF_DOC, LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, 0);
|
|
open_files(LF_SCONTI, LF_UMART, LF_CLIFO, LF_CFVEN, LF_INDSP, LF_OCCAS, LF_PCON, 0);
|
|
open_files(LF_MOVMAG, LF_RMOVMAG, LF_MAG, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_ATTIV, LF_CAUSALI, 0);
|
|
return ok;
|
|
}
|
|
|
|
void TEuro06_app::update_stomag()
|
|
{
|
|
TEsercizi_contabili e;
|
|
|
|
TRelation amag(LF_ANAMAG);
|
|
TCursor c(&amag);
|
|
TArticolo_euro * a = new TArticolo_euro();
|
|
TString str;
|
|
str << "Aggiornamento storico di magazzino ...";
|
|
|
|
amag.lfile().set_curr(a);
|
|
const long items = c.items();
|
|
TProgind pi(items, str, FALSE, TRUE);
|
|
|
|
for (c = 0L; c.pos() < items; ++c)
|
|
{
|
|
pi.addstatus(1);
|
|
TArticolo_euro & curr_art = (TArticolo_euro &) c.curr();
|
|
|
|
for (int codes = e.first(); codes > 0; codes = e.next(codes))
|
|
{
|
|
if (curr_art.adjust_storico(codes))
|
|
curr_art.rewrite();
|
|
}
|
|
}
|
|
}
|
|
|
|
void TEuro06_app::main_loop()
|
|
{
|
|
TDate apertura(1,1,2002);
|
|
const long firm = get_firm();
|
|
TFilename dati, datie;
|
|
get_aree_dati(dati, datie);
|
|
|
|
TString8 ditta;
|
|
ditta.format("%05ldA", firm);
|
|
|
|
TFilename inie = datie;
|
|
inie.add(ditta);
|
|
inie.add("prassid.ini");
|
|
|
|
bool adotta = FALSE, inizio = FALSE;
|
|
if (inie.exist())
|
|
adotta = data_adozione_euro(firm, apertura, inizio);
|
|
TEsercizi_contabili esc;
|
|
TString16 command(argv(2));
|
|
|
|
if (command == "A")
|
|
{
|
|
update_stomag();
|
|
TExternal_app app("mg1 -3");
|
|
|
|
app.run();
|
|
}
|
|
else
|
|
if (command == "S")
|
|
{
|
|
const int annoes = esc.date2esc(apertura);
|
|
TString16 codes; codes << annoes;
|
|
|
|
update_stomag();
|
|
rebuild_balances(codes);
|
|
}
|
|
else
|
|
if (command == "D")
|
|
{
|
|
TRelation doc(LF_DOC);
|
|
TCursor c(&doc);
|
|
TDocumento * d = new TDocumento();
|
|
|
|
TString str;
|
|
str << "Riesamina " << doc.lfile().description() << " ...";
|
|
|
|
doc.lfile().set_curr(d);
|
|
const long items = c.items();
|
|
TProgind pi(items, str, FALSE, TRUE);
|
|
|
|
for (c = 0L; c.pos() < items; ++c)
|
|
{
|
|
pi.addstatus(1);
|
|
TDocumento & curr_doc = (TDocumento &) c.curr();
|
|
|
|
if (curr_doc.in_valuta())
|
|
{
|
|
TString16 val(curr_doc.get("CODVAL"));
|
|
const int dec = atoi(cache().get("%VAL", val, "I2"));
|
|
|
|
if (dec < 6)
|
|
{
|
|
real change = curr_doc.get_real(DOC_CAMBIO);
|
|
change.round(dec);
|
|
curr_doc.put(DOC_CAMBIO, change);
|
|
}
|
|
}
|
|
else
|
|
if (curr_doc.get_bool(DOC_CONTROEURO))
|
|
{
|
|
curr_doc.dirty_fields();
|
|
curr_doc.put(DOC_CONTROEURO, "");
|
|
}
|
|
real tot = curr_doc.totale_doc();
|
|
curr_doc.dirty_fields();
|
|
curr_doc.rewrite();
|
|
}
|
|
}
|
|
}
|
|
|
|
int baeur06(int argc, char* argv[])
|
|
{
|
|
TEuro06_app ma;
|
|
ma.run(argc, argv, "");
|
|
|
|
return 0;
|
|
}
|