160 lines
4.0 KiB
C++
160 lines
4.0 KiB
C++
#include <applicat.h>
|
|
#include <config.h>
|
|
#include <execp.h>
|
|
#include <recarray.h>
|
|
#include <recset.h>
|
|
|
|
#include <doc.h>
|
|
#include <rdoc.h>
|
|
#include "../ca/movana.h"
|
|
#include "../ca/rmovana.h"
|
|
#include <../mg/anamag.h>
|
|
#include <../mg/umart.h>
|
|
|
|
class TCaCi_app : public TSkeleton_application
|
|
{
|
|
public:
|
|
virtual void main_loop();
|
|
};
|
|
|
|
void TCaCi_app::main_loop()
|
|
{
|
|
const TFilename inia = argv(2) + 2;
|
|
if (!inia.exist())
|
|
{
|
|
cantread_box(inia);
|
|
return;
|
|
}
|
|
|
|
const TString4 codnum = ini_get_string(CONFIG_DITTA, "ci", "CODNUMNI");
|
|
const TString4 tipodoc = ini_get_string(CONFIG_DITTA, "ci", "TIPODOCNI");
|
|
const TString4 tiporiga= ini_get_string(CONFIG_DITTA, "ci", "TIPORIGA", "01");
|
|
const TString4 codiva = ini_get_string(CONFIG_DITTA, "ci", "CODIVANI");
|
|
|
|
if (codnum.blank() || tipodoc.blank())
|
|
{
|
|
error_box("E' necessario configurare i parametri dei documenti NON IVA in contabilità industriale");
|
|
return;
|
|
}
|
|
|
|
TConfig cfga(inia, LF_MOVANA);
|
|
const long numregca = cfga.get_long(MOVANA_NUMREG);
|
|
const TDate datareg = cfga.get(MOVANA_DATAREG);
|
|
const TDate datacomp = cfga.get(MOVANA_DATACOMP);
|
|
TDate datadoc = cfga.get(MOVANA_DATADOC);
|
|
if (!datadoc.ok())
|
|
{
|
|
datadoc = datacomp;
|
|
if (!datadoc.ok())
|
|
datadoc = datareg;
|
|
}
|
|
|
|
const int anno = datadoc.year();
|
|
long ndoc = 0L;
|
|
if (anno > 0 && codnum.full() && numregca > 0) // dummy test
|
|
{
|
|
TString filter; filter << "PROVV=D ANNO=" << anno << " CODNUM=" << codnum;
|
|
TString query;
|
|
query << "USE DOC SELECT NUMREGCA=" << numregca
|
|
<< "\nFROM " << filter << "\nTO " << filter;
|
|
TISAM_recordset docs(query);
|
|
if (docs.move_first())
|
|
ndoc = docs.get(DOC_NDOC).as_int();
|
|
}
|
|
|
|
TFilename inid; inid.tempdir(); inid.add("mov_cive.ini");
|
|
inid.fremove();
|
|
|
|
TConfig cfgd(inid, "Transaction");
|
|
cfgd.set("Action", ndoc > 0 ? "MODIFY" : "INSERT");
|
|
|
|
cfgd.set_paragraph("33");
|
|
cfgd.set(DOC_PROVV, "D");
|
|
cfgd.set(DOC_ANNO, anno);
|
|
cfgd.set(DOC_CODNUM, codnum);
|
|
cfgd.set(DOC_TIPODOC, tipodoc);
|
|
if (ndoc > 0)
|
|
cfgd.set(DOC_NDOC, ndoc);
|
|
else
|
|
cfgd.set(DOC_NUMREGCA, numregca);
|
|
cfgd.set(DOC_DATADOC, datadoc);
|
|
|
|
for (int r = 1; ; r++)
|
|
{
|
|
TString8 para; para.format("%d,%d", LF_RMOVANA, r);
|
|
if (!cfga.set_paragraph(para))
|
|
break;
|
|
const TString& cms = cfga.get(RMOVANA_CODCMS);
|
|
if (cms.full())
|
|
{
|
|
cfgd.set(DOC_CODCMS, cms);
|
|
cfgd.set(DOC_FASCMS, cfga.get(RMOVANA_CODFASE));
|
|
cfgd.set(DOC_CODCOSTO, cfga.get(RMOVANA_CODCCOSTO));
|
|
break;
|
|
}
|
|
}
|
|
|
|
for (int r = 1; ; r++)
|
|
{
|
|
TString8 para;
|
|
|
|
para.format("%d,%d", LF_RMOVANA, r);
|
|
if (!cfga.set_paragraph(para))
|
|
break;
|
|
|
|
TString80 codart = cfga.get(RMOVANA_CODART);
|
|
|
|
para.format("%d,%d", LF_RIGHEDOC, r);
|
|
cfgd.set_paragraph(para);
|
|
cfgd.set(RDOC_PROVV, "D");
|
|
cfgd.set(RDOC_ANNO, anno);
|
|
cfgd.set(RDOC_CODNUM, codnum);
|
|
if (ndoc > 0)
|
|
cfgd.set(RDOC_NDOC, ndoc);
|
|
cfgd.set(RDOC_NRIGA, r);
|
|
cfgd.set(RDOC_TIPORIGA, tiporiga);
|
|
cfgd.set(RDOC_CODART, codart);
|
|
cfgd.set(RDOC_QTA, 1);
|
|
cfgd.set(RDOC_CODIVA, codiva);
|
|
cfgd.set(RDOC_PREZZO, cfga.get(RMOVANA_IMPORTO));
|
|
cfgd.set(RDOC_CODCMS, cfga.get(RMOVANA_CODCMS));
|
|
cfgd.set(RDOC_FASCMS, cfga.get(RMOVANA_CODFASE));
|
|
cfgd.set(RDOC_CODCOSTO, cfga.get(RMOVANA_CODCCOSTO));
|
|
|
|
const TString& descr = cfga.get(RMOVANA_DESCR);
|
|
if (descr.full())
|
|
cfgd.set(RDOC_DESCR, descr);
|
|
else
|
|
{
|
|
const TString& descart = cache().get(LF_ANAMAG, codart, ANAMAG_DESCR);
|
|
if (descart.full())
|
|
cfgd.set(RDOC_DESCR, descart);
|
|
}
|
|
|
|
if (codart.full())
|
|
{
|
|
codart << "|1";
|
|
const TString& umart = cache().get(LF_UMART, codart, UMART_UM);
|
|
cfgd.set(RDOC_UMQTA, umart);
|
|
}
|
|
}
|
|
|
|
cfgd.set_paragraph("");
|
|
|
|
TString cmd; cmd << "ve0 -0 -i" << inid;
|
|
TExternal_app app(cmd);
|
|
app.run();
|
|
}
|
|
|
|
|
|
int ci0700(int argc, char *argv[])
|
|
{
|
|
if (argc >= 3)
|
|
{
|
|
TCaCi_app app;
|
|
app.run(argc, argv, TR("Generazione movimento industriale"));
|
|
}
|
|
return 0;
|
|
}
|
|
|