#include #include #include #include #include #include #include "lv4400a.h" #include "lvlib.h" #include "..\ve\velib.h" class TRewrite_docs_mask : public TMask { public: TRewrite_docs_mask() : TMask("lv4400a") { } virtual ~TRewrite_docs_mask() { } }; class TRewrite_docs_change : public TSkeleton_application { protected: // TSkeleton_application virtual void main_loop(); virtual bool create(); void update_mag(TDocumento & doc); public: TRewrite_docs_change() { } virtual ~TRewrite_docs_change() { } }; bool TRewrite_docs_change::create() { open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_OCCAS, LF_INDSP, LF_CFVEN, LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_CONDV, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_CESS, LF_CAUSALI, LF_RCAUSALI, 0); return TSkeleton_application::create(); } void TRewrite_docs_change::update_mag(TDocumento & doc) { const int rows = doc.physical_rows(); for (int r = 1; r <= rows; r++) { TRiga_documento & row = doc[r]; TString4 causale = row.get(RDOC_CODAGG1); if (causale.full()) { /* TString4 codmag(doc.clifor().vendite().get(CFV_CODMAG)); TString4 coddep(doc.clifor().vendite().get(CFV_CODDEP)); TString4 codmagcoll(codmag); TString4 coddepcoll(coddep); */ const TCausale_lavanderie cau(causale); const TCausale_magazzino rit = cau.causale_ritiro(); const TCausale_magazzino con = cau.causale_consegna(); TString8 magazzino; TString8 magazzinoc; if(rit.get("S10").full()) magazzino = rit.get("S10").mid(0,5); else magazzino << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGN"); if(con.get("S10").full()) magazzinoc = con.get("S10").mid(0,5); else magazzinoc << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGC"); row.put(RDOC_CODMAG, magazzino); row.put(RDOC_CODMAGC, magazzinoc); } } } void TRewrite_docs_change::main_loop() { TRewrite_docs_mask m; while (m.run() == K_ENTER) { TRelation rel(LF_DOC); m.autosave(rel); // const bool update_mags = m.get_bool(F_UPDATEMAG); const bool update_mags = false; TRectype recini(rel.curr()); TRectype recfin(rel.curr()); recini.put(DOC_NDOC, m.get(F_DANUMERO)); recfin.put(DOC_NDOC, m.get(F_ANUMERO)); const TString4 stato = m.get(F_STATO); TString filter; if (stato.full()) filter << DOC_STATO << "==\"" << stato << "\""; TCursor cur(&rel, filter, 1, &recini, &recfin); const long total = cur.items(); if (total > 0) { TString msg = "Confermare l'aggiornamento di "; msg.add_plural(total, "documento"); if (yesno_box(msg)) { TProgind pi(total, "Elaborazione in corso...", TRUE, TRUE, 60); TDocumento* doc = new TDocumento; rel.lfile().set_curr(doc); cur.freeze(); for (cur = 0; cur.pos() < total && !pi.iscancelled(); ++cur) { pi.addstatus(1); if (update_mags) update_mag(*doc); doc->rewrite(); // Invia anche la transazione se necessario /* if (::can_dispatch_transaction(*doc)) // da riimplementare { TFilename tmpname; tmpname.temp(); { // Parentesi strategiche TConfig ini(tmpname, "Transaction"); ini.set("Action", "MODIFY"); ini.set("Firm", get_firm()); ini.set("Mode", "A"); TString8 paradoc; paradoc.format("%d", LF_DOC); ini.set_paragraph(paradoc); ini.set(DOC_PROVV, doc->get(DOC_PROVV)); ini.set(DOC_ANNO, doc->get(DOC_ANNO)); ini.set(DOC_CODNUM, doc->get(DOC_CODNUM)); ini.set(DOC_NDOC, doc->get(DOC_NDOC)); } ::dispatch_transaction(*doc, tmpname); ::remove(tmpname); } */ } } } } } int lv4400(int argc, char* argv[]) { TRewrite_docs_change a; a.run(argc, argv, "Aggiornamento documenti"); return 0; }