diff --git a/ps/ps0713.cpp b/ps/ps0713.cpp index 489db54f2..971db7df2 100755 --- a/ps/ps0713.cpp +++ b/ps/ps0713.cpp @@ -7,12 +7,13 @@ int main(int argc, char** argv) int n = argc > 1 ? atoi(argv[1]+1) : 0; switch(n) { - case 0: ps0713100(argc, argv); break; //Esportazione righe IVA - case 1: ps0713200(argc, argv); break; //Importazione commesse - case 2: ps0713300(argc, argv); break; //Importazione fatture di acquisto - case 3: ps0713400(argc, argv); break; //Importazione fatture di vendita - case 4: ps0713500(argc, argv); break; //Importazione spese - case 5: ps0713600(argc, argv); break; //Importazione fatture fornitori / fatture da ricevere + case 0: ps0713100(argc, argv); break; //Esportazione righe IVA + case 1: ps0713200(argc, argv); break; //Importazione commesse + case 2: ps0713300(argc, argv); break; //Importazione fatture di acquisto + case 3: ps0713400(argc, argv); break; //Importazione fatture di vendita + case 4: ps0713500(argc, argv); break; //Importazione spese + case 5: ps0713600(argc, argv); break; //Importazione fatture fornitori / fatture da ricevere + case 6: ps0713700(argc, argv); break; //Eliminazione conti non analitici dai movimenti default: ps0713100(argc, argv); break; //Esportazione righe IVA } exit(0); diff --git a/ps/ps0713.h b/ps/ps0713.h index 3eb43f2fd..c13c252f9 100755 --- a/ps/ps0713.h +++ b/ps/ps0713.h @@ -3,4 +3,5 @@ int ps0713200(int argc, char* argv[]); int ps0713300(int argc, char* argv[]); int ps0713400(int argc, char* argv[]); int ps0713500(int argc, char* argv[]); -int ps0713600(int argc, char* argv[]); \ No newline at end of file +int ps0713600(int argc, char* argv[]); +int ps0713700(int argc, char* argv[]); \ No newline at end of file diff --git a/ps/ps0713700.cpp b/ps/ps0713700.cpp new file mode 100755 index 000000000..02638de92 --- /dev/null +++ b/ps/ps0713700.cpp @@ -0,0 +1,84 @@ +#include "../cg/cglib01.h" + +#include "../ca/calib01.h" +#include "../ca/movana.h" +#include "../ca/rmovana.h" + +//-------------------------------------------------------------------- +// APPLICAZIONE +//-------------------------------------------------------------------- + +class TPulisci_app : public TSkeleton_application +{ + +protected: + virtual const char * extra_modules() const {return "cm";} //deve funzionare anche per le commesse + virtual void main_loop(); + static bool elabora_movimento(const TRelation& rel, void* pJolly); + +public: + TPulisci_app() {} + virtual ~TPulisci_app() {} +}; + +bool TPulisci_app::elabora_movimento(const TRelation& rel, void* pJolly) +{ + TAnal_mov & mov = (TAnal_mov &) rel.curr(); + bool updated = false; + TImporto totdoc(mov.get_char(MOVANA_SEZIONE), mov.get_real(MOVANA_TOTDOC)); + + for (int i = mov.rows(); i >= 1; i--) + { + const TRectype & row = mov.body()[i]; + const TString code = row.get(RMOVANA_CODCONTO); + const int gr = atoi(code.left(3)); + const int co = atoi(code.mid(3, 3)); + const long sc = atol(code.right(6)); + const TBill zio(gr, co, sc); + + if (!zio.is_analitico()) + { + TImporto importo(row.get_char(RMOVANA_SEZIONE), row.get_real(RMOVANA_IMPORTO)); + + updated = true; + totdoc -= importo; + mov.body().destroy_row(i, true); + } + } + if (updated) + { + totdoc.normalize(); + mov.put(MOVANA_SEZIONE, totdoc.sezione()); + mov.put(MOVANA_TOTDOC, totdoc.valore()); + if (mov.rows() > 0) + mov.rewrite(rel.lfile()); + else + mov.remove(rel.lfile()); + } + return true; +} + +void TPulisci_app::main_loop() +{ + if (ca_config().get_bool("UsePdcc") && + yesno_box("Si desidera eliminare i conti non analitici") && + yesno_box("Si desidera veramente eliminare i conti non analitici")) + { + TRelation rel_movana(LF_MOVANA); + TCursor cur_movana(&rel_movana, "", 1); + const long items = cur_movana.items(); + + if (items > 0) + { + rel_movana.lfile().set_curr(new TAnal_mov); //il record principale della rel e' un TMov_anal!! + cur_movana.scan(elabora_movimento, this, "Eliminazione conti non analitici..."); + } + } +} + +int ps0713700(int argc, char* argv[]) +{ + TPulisci_app app; + app.run(argc, argv, "Eliminazione conti non analitici..."); + return 0; +} diff --git a/ps/ps1001300.cpp b/ps/ps1001300.cpp index aaf1fb1ed..be8b79aa4 100755 --- a/ps/ps1001300.cpp +++ b/ps/ps1001300.cpp @@ -1007,6 +1007,8 @@ int TVariazione_budget_mask::load_saldana(const TString& cms, const long max_num TAssoc_array chiavi_saldana; TToken_string chiave; + const bool exclude_fasi = get_bool(F_EXCLUDEFASI); //si vogliono escludere le fasi dalle chiavi di riga? + //riempie l'assoc_array conto/cdc/cms/fase/saldo for (bool ok = saldana.move_first(); ok; ok = saldana.move_next()) { @@ -1022,7 +1024,9 @@ int TVariazione_budget_mask::load_saldana(const TString& cms, const long max_num chiave.add(conto); chiave.add(cdc); chiave.add(cms); - chiave.add(fase); + //le fasi vanno aggiunte alla chiave solo se specificato (Adolf rikiesten 20/07/2010) + if (!exclude_fasi) + chiave.add(fase); //se non trova la chiave la aggiunge TImporto* s = (TImporto*)chiavi_saldana.objptr(chiave); @@ -1074,11 +1078,14 @@ int TVariazione_budget_mask::load_saldana(const TString& cms, const long max_num const TString80 conto = key_bill.get(0); const TString80 cdc = key_bill.get(1); const TString80 cms = key_bill.get(2); - const TString16 fase = key_bill.get(3); + TString16 fase; + if (!exclude_fasi) + fase << key_bill.get(3); row.add(cms, _pos_cms); row.add(cdc, _pos_cdc); - row.add(fase, _pos_fase); + if (!exclude_fasi) + row.add(fase, _pos_fase); row.add(conto, _pos_conto); row.add(datacomp, _pos_datacomp); diff --git a/ps/ps1001300a.h b/ps/ps1001300a.h index 5eaf4a5f4..5b64d57f1 100755 --- a/ps/ps1001300a.h +++ b/ps/ps1001300a.h @@ -6,9 +6,10 @@ #define F_PROROGATA 205 #define F_DATAPRORCMS 206 #define F_INCLUDESUPP 207 -#define F_DATAREG 208 -#define F_CODCAUS 209 -#define F_DESCAUS 210 +#define F_EXCLUDEFASI 208 +#define F_DATAREG 209 +#define F_CODCAUS 210 +#define F_DESCAUS 211 #define F_RIGHE 220 diff --git a/ps/ps1001300a.uml b/ps/ps1001300a.uml index 37472adfe..a020a5849 100755 --- a/ps/ps1001300a.uml +++ b/ps/ps1001300a.uml @@ -55,7 +55,7 @@ ENDPAGE PAGE "Gestione Budget" 0 2 0 0 -GROUPBOX DLG_NULL 78 5 +GROUPBOX DLG_NULL 78 6 BEGIN PROMPT 0 0 "@bCommessa" END @@ -119,21 +119,26 @@ BEGIN PROMPT 1 3 "Includere le righe con commesse di supporto" END +BOOLEAN F_EXCLUDEFASI +BEGIN + PROMPT 1 4 "Non considerare le fasi nei consuntivi" +END + GROUPBOX DLG_NULL 78 3 BEGIN - PROMPT 0 5 "@bParametri movimenti analitici da generare" + PROMPT 0 6 "@bParametri movimenti analitici da generare" END DATE F_DATAREG BEGIN - PROMPT 1 6 "Data reg. " + PROMPT 1 7 "Data reg. " CHECKTYPE REQUIRED FLAGS "A" END STRINGA F_CODCAUS 3 BEGIN - PROMPT 24 6 "Causale " + PROMPT 24 7 "Causale " USE LF_CAUSALI SELECT MOVIND!="" INPUT CODCAUS F_CODCAUS DISPLAY "Codice" CODCAUS @@ -146,7 +151,7 @@ END STRINGA F_DESCAUS 50 37 BEGIN - PROMPT 38 6 "" + PROMPT 38 7 "" USE LF_CAUSALI KEY 2 SELECT MOVIND!='' INPUT DESCR F_DESCAUS DISPLAY "Descrizione@50" DESCR @@ -157,12 +162,12 @@ END TEXT DLG_NULL BEGIN - PROMPT -11 8 "@bRighe movimenti di budget e saldi consuntivi" + PROMPT -11 9 "@bRighe movimenti di budget e saldi consuntivi" END SPREADSHEET F_RIGHE BEGIN - PROMPT 1 9 "Righe" + PROMPT 1 10 "Righe" ITEM "@1C" ITEM "Commessa@20" ITEM "Sede@4"