#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; }