diff --git a/ci/ci0700.cpp b/ci/ci0700.cpp new file mode 100644 index 000000000..c1a1ba56b --- /dev/null +++ b/ci/ci0700.cpp @@ -0,0 +1,159 @@ +#include +#include +#include +#include +#include + +#include +#include +#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; +} +