#include #include #include #include #include #include "../ve/velib.h" #include "ps0920.h" #include "ps0920200a.h" #include class TMaskPs09202 : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TMaskPs09202(); virtual ~TMaskPs09202(); }; TMaskPs09202::TMaskPs09202() : TAutomask("ps0920200a") { } TMaskPs09202::~TMaskPs09202() { } bool TMaskPs09202::on_field_event(TOperable_field& o, TField_event e, long jolly) { const int id = o.dlg(); switch (id) { case F_CODCLI: if (e == fe_modify) { TString key; key.format("C|%ld", atol(o.get())); const TRectype & cli = cache().get(LF_CFVEN, key); if (cli.get(CFV_ASSFIS).empty()) o.mask().enable(F_CODIVA); else { o.mask().set(F_CODIVA, ""); o.mask().disable(F_CODIVA); } } default: break; } return TRUE; } class TAggiornaIVAPs0920 : public TSkeleton_application { TMaskPs09202 * _mask; virtual bool check_autorization() const {return false;} virtual const char * extra_modules() const {return "ve";} protected: virtual void main_loop(); virtual bool create(); public: const TMaskPs09202 & mask() const {return *_mask;} virtual ~TAggiornaIVAPs0920(); }; void TAggiornaIVAPs0920::main_loop() { while (_mask->run() == K_ENTER) { TCursor c(new TRelation(LF_DOC)); TRectype from(c.curr()); from.put(DOC_PROVV, "D"); from.put(DOC_CODNUM, _mask->get(F_NUM)); from.put(DOC_ANNO, _mask->get_int(F_ANNO)); TRectype to(from); from.put(DOC_NDOC, _mask->get_int(F_NDOCDA)); to.put(DOC_NDOC, _mask->get_int(F_NDOCA)); c.setregion(from, to); TString filter; filter.format("CODCF=%ld", _mask->get_long(F_CODCLI)); c.setfilter(filter); TString key; key.format("C|%ld", _mask->get_long(F_CODCLI)); const TRectype & cli = cache().get(LF_CFVEN, key); TString codice_IVA(cli.get(CFV_ASSFIS)); if (codice_IVA.empty()) codice_IVA = _mask->get(F_CODIVA); const long items = c.items(); TString16 iva_orig; for (c = 0L; c.pos() < items; ++c) { TDocumento doc(c.curr()); const int rows = doc.physical_rows(); for (int r = 1 ; r <= rows; r++) { TRiga_documento & riga = doc[r]; iva_orig = riga.get(RDOC_CODIVA); if (iva_orig.not_empty()) riga.put(RDOC_CODIVA, codice_IVA); } doc.rewrite(); } } } bool TAggiornaIVAPs0920::create() { _mask = new TMaskPs09202; return TSkeleton_application:: create(); } TAggiornaIVAPs0920::~TAggiornaIVAPs0920() { delete _mask; } TAggiornaIVAPs0920 & app() { return (TAggiornaIVAPs0920&) main_app();} int ps0920200(int argc, char* argv[]) { TAggiornaIVAPs0920 a; a.run(argc, argv, "Aggiornamento IVA Documenti"); return 0; }