#include "velib.h" #include "ve6700a.h" #include #include #include #include #include #include #include #include #include #include #include #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; }