diff --git a/ps/pe0001.cpp b/ps/pe0001.cpp new file mode 100755 index 000000000..0c10fbdfc --- /dev/null +++ b/ps/pe0001.cpp @@ -0,0 +1,16 @@ +#include + +#include "pe0001.h" + +int main(int argc, char** argv) +{ + int n = argc > 1 ? atoi(argv[1]+1) : 0; + switch(n) + { + case 0: + default: + pe0001100(argc, argv); break; //importazione movienti contabili + } + exit(0); + return 0; +} diff --git a/ps/pe0001.h b/ps/pe0001.h new file mode 100755 index 000000000..917a17a7a --- /dev/null +++ b/ps/pe0001.h @@ -0,0 +1 @@ +int pe0001100(int argc, char* argv[]); // importazione movimenti contabili diff --git a/ps/pe0001100.cpp b/ps/pe0001100.cpp new file mode 100755 index 000000000..9a74a0e8e --- /dev/null +++ b/ps/pe0001100.cpp @@ -0,0 +1,214 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tabutil.h" + +#include "pe0001.h" +#include "pe0001100a.h" + +#include +#include +#include +#include + + + + +/////////////////////////////////////////////////////////// +// TAutomask +/////////////////////////////////////////////////////////// + +class TImportaFat_mask : public TAutomask +{ +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + TImportaFat_mask(); +}; + +TImportaFat_mask::TImportaFat_mask() :TAutomask ("pe0001100a") +{ +} + +bool TImportaFat_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) +{ + switch (f.dlg()) + { + //giochetto per avere la lista dei files validi nella directory di trasferimento! + case F_NAME: + if (e == fe_button) + { + TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"), + "File@32"); + TFilename path = get(F_PATH); + path.add("*.csv"); //files delle testate + list_files(path, as.rows_array()); + TFilename name; + FOR_EACH_ARRAY_ROW(as.rows_array(), i, row) + { + name = *row; + *row = name.name(); + } + if (as.run() == K_ENTER) + { + f.set(as.row(as.selected())); + } + } + break; + default: + break; + } + return true; +} + + /////////////////////////////////////////////// + //// CLASSI DERIVATE PER IMPORTAZIONE DATI //// + /////////////////////////////////////////////// + +///////////////////////////////////////////////////////////// +// Recordset specifici per i dati da trasferire +///////////////////////////////////////////////////////////// + +//Piano dei conti +class TImporta_fatt_recordset : public TCSV_recordset +{ + public: + TImporta_fatt_recordset(const char * fileName); +}; + +TImporta_fatt_recordset::TImporta_fatt_recordset(const char * fileName) + : TCSV_recordset("CSV(\",\")") +{ + load_file(fileName); +} + +/////////////////////////////////////// +// TSkeleton_application +/////////////////////////////////////// +class TFattCSV : public TSkeleton_application +{ + virtual bool check_autorization() const {return false;} + virtual const char * extra_modules() const {return "ve";} + + TImportaFat_mask* _msk; + TConfig* _configfile; + + +//protected: + + +public: + virtual bool create(); + virtual bool destroy(); + virtual void main_loop(); + bool transfer(const TFilename& file); + + TFattCSV() {}; +}; + +bool TFattCSV::transfer(const TFilename& file) +{ + TImporta_fatt_recordset s(file); + + TProgind pi(s.items(),"Importazione fatture in corso ...",true,true); + + _configfile->set_paragraph("Transaction"); //setto il paragrafo [Transaction] del file ini + + _configfile->set("Action","INSERT"); + _configfile->set("Mode","AUTO"); + + _configfile->set_paragraph("23"); //setto il paragrafo [23] del file ini (testata) + + _configfile->set(MOV_TIPO,"F"); + _configfile->set(MOV_CODCF, _msk->get(F_CODCF)); + + _configfile->set(MOV_CODCAUS, _msk->get(F_CODCAU)); + + _configfile->set(MOV_DATAREG, _msk->get(F_DATAREG)); + + + int nriga = 1; + + for (bool ok=s.move_first();ok;ok=s.move_next()) + { + if (!pi.addstatus(1)) + break; + + TString8 paragraph; + paragraph.format("%d,%d",LF_RMOVIVA,nriga++); + _configfile->set_paragraph(paragraph); + + TString16 codcom = s.get(0).as_string(); + real imp = s.get(1).as_real(); + + _configfile->set(RMI_IMPONIBILE,imp.string()); + _configfile->set(RMI_CODIVA,_msk->get(F_CODIVA)); + _configfile->set(RMI_CODCMS,codcom); + + } + + _configfile->set_paragraph("Transaction"); + + return true; +} + +const char* nomeini = "pe0001100fatt.ini"; + +bool TFattCSV::create() +{ + xvt_fsys_removefile(nomeini); + _configfile = new TConfig(nomeini); + + _msk = new TImportaFat_mask(); + + return TSkeleton_application::create(); +} + +bool TFattCSV::destroy() +{ + delete _msk; + delete _configfile; + return TApplication::destroy(); +} + +void TFattCSV::main_loop() +{ + KEY tasto; + tasto = _msk->run(); + if (tasto == K_ENTER) + { + + //genero il nome del file da caricare + TFilename name = _msk->get(F_PATH); + name.add(_msk->get(F_NAME)); + if (transfer(name)) + { + + TString app; + app << "cg2 -0 -i" << nomeini; + TExternal_app primanota(app); + primanota.run(); + + message_box(TR("Importazione fatture completata")); + } + } +} + + +TFattCSV& app() { return (TFattCSV&) main_app(); } + + +int pe0001100 (int argc, char* argv[]) +{ + TFattCSV main_app; + main_app.run(argc, argv, TR("Importazione Fatture")); + return true; +} \ No newline at end of file diff --git a/ps/pe0001100a.h b/ps/pe0001100a.h new file mode 100755 index 000000000..f80b166fb --- /dev/null +++ b/ps/pe0001100a.h @@ -0,0 +1,13 @@ +//campi maschera pe0001100a + +#define F_CODITTA 101 +#define F_RAGSOC 102 +#define F_PATH 103 +#define F_NAME 104 +#define F_CODIVA 105 +#define F_DESIVA 106 +#define F_CODCAU 107 +#define F_DESCAU 108 +#define F_CODCF 109 +#define F_FRAGSOC 110 +#define F_DATAREG 111 diff --git a/ps/pe0001100a.uml b/ps/pe0001100a.uml new file mode 100755 index 000000000..069836466 --- /dev/null +++ b/ps/pe0001100a.uml @@ -0,0 +1,161 @@ +#include "pe0001100a.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_ELABORA 10 2 +BEGIN + PICTURE BMP_ELABORA + MESSAGE EXIT,K_ENTER + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -1 "" +END + +STRING DLG_PROFILE 50 +BEGIN + PROMPT 9 0 "Profilo " + PSELECT + FLAGS "H" +END + +ENDPAGE + +PAGE "Inserimento fatture" 0 0 0 -3 + +GROUPBOX DLG_NULL 90 3 +BEGIN + PROMPT 2 1 "@bDitta corrente" +END + +NUMBER F_CODITTA 5 +BEGIN + PROMPT 3 2 "Codice " + FLAGS "FD" + USE LF_NDITTE + INPUT CODDITTA F_CODITTA + OUTPUT F_RAGSOC RAGSOC + CHECKTYPE REQUIRED +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 23 2 "" + FLAGS "D" +END + +GROUPBOX DLG_NULL 90 4 +BEGIN + PROMPT 2 4 "@bSorgente" +END + +STRING F_PATH 256 39 +BEGIN + PROMPT 3 5 "Cartella " + DSELECT + CHECKTYPE REQUIRED + FIELD ComInPath +END + +STRING F_NAME 18 +BEGIN + PROMPT 3 6 "File " + FIELD ComInFile + CHECKTYPE REQUIRED +END + +GROUPBOX DLG_NULL 90 6 +BEGIN + PROMPT 2 8 "@bParametri per l'importazione" +END + +STRING F_CODIVA 4 +BEGIN + PROMPT 3 9 "Codice IVA " + USE %IVA + INPUT CODTAB F_CODIVA + DISPLAY "Codice " CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODIVA CODTAB + OUTPUT F_DESIVA S0 + CHECKTYPE REQUIRED +END + +STRING F_DESIVA 50 +BEGIN + PROMPT 25 9 "Descrizione " + USE %IVA KEY 2 + INPUT S0 F_DESIVA + DISPLAY "Descrizione@50" S0 + DISPLAY "Codice " CODTAB + COPY OUTPUT F_CODIVA + CHECKTYPE NORMAL +END + +STRING F_CODCAU 3 +BEGIN + PROMPT 3 10 "Causale " + FIELD CODCAU + FLAGS "UZ" + USE LF_CAUSALI + INPUT CODCAUS F_CODCAU + DISPLAY "Cod." CODCAUS + DISPLAY "Descrizione@50" DESCR + DISPLAY "Documento" TIPODOC + DISPLAY "Registro" REG + DISPLAY "Tipo movimento" TIPOMOV + OUTPUT F_CODCAU CODCAUS + OUTPUT F_DESCAU DESCR + CHECKTYPE REQUIRED +END + +STRING F_DESCAU 50 +BEGIN + PROMPT 25 10 "Descrizione " + FIELD DESCR + USE LF_CAUSALI KEY 2 + INPUT DESCR F_DESCAU + DISPLAY "Descrizione @50" DESCR + DISPLAY "Cod." CODCAUS + DISPLAY "Documento" TIPODOC + DISPLAY "Registro" REG + DISPLAY "Movimento" TIPOMOV + COPY OUTPUT F_CODCAU +END + +STRING F_CODCF 4 +BEGIN + PROMPT 3 11 "Fornitore " + FLAG "UR" + USE LF_CLIFO + INPUT TIPOCF "F" + INPUT CODCF F_CODCF + DISPLAY "Codice fornitore," CODCF + DISPLAY "Ragione sociale@50" RAGSOC + OUTPUT F_CODCF CODCF + OUTPUT F_FRAGSOC RAGSOC + CHECKTYPE REQUIRED +END + +STRING F_FRAGSOC 50 24 +BEGIN + PROMPT 25 11 "Ragione Sociale " + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC F_FRAGSOC + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Codice fornitore," CODCF + COPY OUTPUT F_CODCF +END + +DATE F_DATAREG +BEGIN + PROMPT 3 12 "Data registrazione " + CHECKTYPE REQUIRED +END + +ENDPAGE + +ENDMASK \ No newline at end of file