campo-sirio/src/ve/ve6a00.cpp

138 lines
4.2 KiB
C++
Raw Normal View History

#include "velib.h"
#include "ve6700a.h"
#include <applicat.h>
#include <automask.h>
#include <config.h>
#include <defmask.h>
#include <execp.h>
#include <incstr.h>
#include <golem.h>
#include <prefix.h>
#include <clifo.h>
#include <doc.h>
#include <rdoc.h>
#include "ve6700a.h"
#include "velib04.h"
#include "../mg/mglib.h"
///////////////////////////////////////////////////////////
// Applicazione principale
///////////////////////////////////////////////////////////
class TCreazione_regolarizzazione : public TSkeleton_application
{
public:
bool load();
virtual void main_loop();
};
bool TCreazione_regolarizzazione::load()
{
bool ok = false;
if (argc() > 2)
{
const TString& arg = argv(2);
if ((arg[0] != '-' && arg[0] != '/') || (arg[1] != 'i' && arg[1] != 'I'))
return false;
TFilename ini_name(arg.mid(2));
if (ini_name.blank() && argc() > 3)
ini_name = argv(3);
if (ini_name.exist())
{
TConfig ini(ini_name, "33");
char provv = ini.get_char(DOC_PROVV);
const int anno = ini.get_int(DOC_ANNO);
TString16 codnum(ini.get(DOC_CODNUM));
long numdoc = ini.get_long(DOC_NDOC);
TDocumento indoc;
bool ok = numdoc > 0 && indoc.read(provv, anno, codnum, numdoc) == NOERR;
if (ok)
{
const TElaborazione_esterna ee(ini.get("Action", "Transaction"));
provv = 'D';
codnum = ee.codice_numerazione_finale();
numdoc = indoc.get_long("NUMDOCREG");
TDocumento outdoc;
const long codcli = indoc.clifor().get_long(CLI_CODCFASS);
ok = codcli > 0L;
if (!ok)
return message_box("Cliente corrispondente assente");
if (ok && (numdoc == 0 || outdoc.read(provv, anno, codnum, numdoc) != NOERR))
{
outdoc.zero();
TDocumento::set_key(outdoc, provv, anno, codnum, 0L);
outdoc.renum_ndoc();
outdoc.set_tipo(ee.tipo_finale());
outdoc.stato(ee.stato_finale()[0]);
outdoc.put(DOC_DATADOC, indoc.get_date(DOC_DATADOC));
outdoc.put(DOC_TIPOCF, "C");
outdoc.put(DOC_CODCF, codcli);
outdoc.cli2doc();
}
outdoc.put(DOC_DATADOCRIF, indoc.get_date(DOC_DATADOCRIF));
outdoc.put(DOC_NUMDOCRIF, indoc.get(DOC_NUMDOCRIF));
outdoc.destroy_rows();
TAssoc_array & iva = indoc.tabella_iva(); // no reference
// Scorre tutti gli elementi della tabella IVA del documento (elementi per codice iva)
for (const TRiepilogo_iva* riep = (const TRiepilogo_iva*) iva.first_item();
riep != NULL; riep = (const TRiepilogo_iva*) iva.succ_item())
{
TRiga_documento & row = outdoc.new_row("01");
row.put(RDOC_DESCR, "Regolarizzazione");
row.put(RDOC_QTA, UNO);
row.put(RDOC_PREZZO, riep->imponibile());
row.put(RDOC_CODIVA, riep->cod_iva().codice());
}
int err = outdoc.rewrite();
ok = err == NOERR;
if (!ok)
return error_box(FR("Errore %d di riscrittura del documento destinazione"), err);
// qui outdoc.do_elab();
err = outdoc.rewrite();
ok = err == NOERR;
if (!ok)
return error_box(FR("Errore %d di riscrittura del documento destinazione"), err);
ini.set("Result", "OUTDOC");
indoc.put("NUMDOCREG", outdoc.numero());
indoc.stato(ee.stato_finale_doc_iniziale()[0]);
err = indoc.rewrite();
ok = err == NOERR;
if (!ok)
return error_box(FR("Errore %d di riscrittura del documento sorgente"), err);
}
}
}
return ok;
}
void TCreazione_regolarizzazione::main_loop()
{
open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, LF_MOVMAG, NULL);
open_files(LF_ANAMAG, LF_CLIFO, LF_CFVEN, LF_OCCAS, LF_RMOVMAG, NULL);
load();
}
int ve6a00(int argc, char** argv)
{
TCreazione_regolarizzazione app;
app.run(argc, argv, TR("Generazione regolarizzazione"));
return 0;
}