138 lines
4.2 KiB
C++
138 lines
4.2 KiB
C++
|
#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;
|
||
|
}
|