#include #include #include #include #include #include "../ve/velib.h" #include #include #include #include "ps0713lib.h" #include "ps0713300a.h" /////////////////////////////////// //// TIMPORTA_FATACQ_MSK //// /////////////////////////////////// //Classe TImporta_fatacq_msk class TImporta_fatacq_msk : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TImporta_fatacq_msk(); }; TImporta_fatacq_msk::TImporta_fatacq_msk() :TAutomask ("ps0713300a") { } //ON_FIELD_EVENT: metodo che gestisce i comportamenti dei vari campi della maschera //(per adesso segnaposto) bool TImporta_fatacq_msk::on_field_event(TOperable_field& f, TField_event e, long jolly) { return true; } /////////////////////////////////// //// TIMPORTA_FATACQ_APP //// /////////////////////////////////// //Classe TImporta_fatacq_app class TImporta_fatacq_app : public TSkeleton_application { TImporta_fatacq_msk* _msk; protected: virtual bool check_autorization() const {return false;} virtual const char * extra_modules() const {return "ve";} public: virtual bool create(); virtual bool destroy(); virtual void main_loop(); bool get_doc(const TFilename& file, const TMask & m); void add_spesa(TDocumento & doc, const TString & cod, const real & perc); TImporta_fatacq_app() {}; }; void TImporta_fatacq_app::add_spesa(TDocumento & doc, const TString & cod, const real & perc) { if (cod.full() && perc != ZERO) { TSpesa_prest p(cod); TString tiporiga = p.get("S8").left(4); TRiga_documento & row = doc.new_row(tiporiga); row.put(RDOC_CODART, cod); row.put(RDOC_CHECKED, "X"); row.put(RDOC_QTA, perc); const TString & ivacli = doc.clifor().vendite().get(CFV_ASSFIS); row.put(RDOC_CODIVA, ivacli.full() ? ivacli : p.cod_iva()); } } bool TImporta_fatacq_app::get_doc(const TFilename& file, const TMask & m) { const TDate datadoc(m.get_date(F_DATAREG)); TDocumento doc('D', datadoc.year(), m.get(F_CODNUM), 0L); TVB_recset s(file, ','); TProgress_monitor pi(s.items(), TR("Importazione fatture in corso ...")); doc.put(DOC_TIPODOC, m.get(F_TIPODOC)); doc.put(DOC_TIPOCF, "F"); doc.put(DOC_CODCF, m.get(F_CODCF)); doc.put(DOC_DATADOC, datadoc); doc.cli2doc(); int nriga = 1; TSpesa_prest p("GENPR", 'P'); for (bool ok = s.move_first(); ok; ok = s.move_next()) { if (!pi.add_status()) break; TString16 tmp = s.get(1).as_string(); tmp.strip("."); tmp.replace(',', '.'); real imp(tmp); imp.round(doc.decimals()); if (imp != ZERO) { TRiga_documento & row = doc.new_row("A6"); row.put(RDOC_CODART, p.codice()); row.put(RDOC_CHECKED, "X"); row.put(RDOC_QTA, 1); row.put(RDOC_UMQTA, p.um()); row.put(RDOC_PREZZO, imp); const TString & ivacli = doc.clifor().vendite().get(CFV_ASSFIS); row.put(RDOC_CODIVA, ivacli.full() ? ivacli : p.cod_iva()); const TString16 codcom = s.get(0).as_string(); TCommessa cms(codcom); TCommessa_string ankey = cms.cmsstr(); TString descr; descr << TR(" Id. Lavoro ") << codcom; row.put(RDOC_DESCR, descr); row.put(RDOC_CODCMS, codcom); row.put(RDOC_QTAGG1, ankey.gruppo()); row.put(RDOC_QTAGG2, ankey.conto()); row.put(RDOC_QTAGG3, ankey.sotco()); } } TString16 codsp = m.get(F_CODSP1); real perc = m.get(F_PERCSP1); add_spesa(doc, codsp, perc); codsp = m.get(F_CODSP2); perc = m.get_real(F_PERCSP2); add_spesa(doc, codsp, perc); codsp = m.get(F_CODSP3); perc = m.get_real(F_PERCSP3); add_spesa(doc, codsp, perc); return doc.write() == NOERR; } const char* nomeini = "ps0713300fatt.ini"; bool TImporta_fatacq_app::create() { xvt_fsys_remove_file(nomeini); _msk = new TImporta_fatacq_msk(); return TSkeleton_application::create(); } bool TImporta_fatacq_app::destroy() { delete _msk; return TApplication::destroy(); } void TImporta_fatacq_app::main_loop() { if (_msk->run() == K_ENTER) { //genero il nome del file da caricare TFilename name = _msk->get(F_PATH); TFilename tmp = _msk->get(F_NAME); name.add(tmp.name()); if (get_doc(name, *_msk)) message_box(TR("Importazione fatture completata")); } } TImporta_fatacq_app& app() { return (TImporta_fatacq_app&) main_app(); } int ps0713300 (int argc, char* argv[]) { TImporta_fatacq_app main_app; main_app.run(argc, argv, TR("Importazione Fatture")); return true; }