diff --git a/ps/pd0777100.cpp b/ps/pd0777100.cpp index 74c08301c..adc60781b 100755 --- a/ps/pd0777100.cpp +++ b/ps/pd0777100.cpp @@ -144,7 +144,8 @@ int TOmasa::strip_zero(TString& importo) int size = importo.len(); - for (int i = 0; i < size; i++) + int i; + for (i = 0; i < size; i++) if (importo[i] != '0') break; if (i > 0) @@ -203,7 +204,7 @@ void TOmasa::mask2ini() _configfile->set(contoomasa, conto, "CONTI"); } TSheet_field& sheetcms = (TSheet_field&)_msk->field(F_SHEET_CMS); - for (i=0;i #include +#include "../cg/cgsaldac.h" + #include "ps0713.h" #include "ps0713100a.h" @@ -99,6 +101,8 @@ protected: virtual const char * extra_modules() const {return "cg";} virtual void main_loop(); + bool test_partita(const long numreg, TDate& last_data_pag) const; + public: void esporta_righe_iva(const TMask& msk) const; void set_inviva(TISAM_recordset& rmoviva) const; @@ -118,26 +122,59 @@ void TEsporta_ps0713_app::set_inviva(TISAM_recordset& rmoviva) const const long curr_numreg = rmoviva.get(RMI_NUMREG).as_int(); if (curr_numreg != last_numreg) { - mov.put(MOV_NUMREG, curr_numreg); - int err = mov.read(); - if (err == NOERR) + TDate last_data_pag; + bool partita_chiusa = test_partita(curr_numreg, last_data_pag); + + if (partita_chiusa) { - mov.put(MOV_INVIVA, 'X'); - err = mov.rewrite(); - } - if (err != NOERR) - { - TString cazzone; - cazzone << TR("Impossibile aggiornare il movimento "); - cazzone << curr_numreg; - error_box(cazzone); - break; + mov.put(MOV_NUMREG, curr_numreg); + int err = mov.read(); + if (err == NOERR) + { + mov.put(MOV_INVIVA, 'X'); + err = mov.rewrite(); + } + if (err != NOERR) + { + TString cazzone; + cazzone << TR("Impossibile aggiornare il movimento "); + cazzone << curr_numreg; + error_box(cazzone); + break; + } } last_numreg = curr_numreg; } } } +bool TEsporta_ps0713_app::test_partita(const long numreg, TDate& last_data_pag) const +{ + bool finito = false; + + TPartite_array torneo; + torneo.add_numreg(numreg); + TPartita* partita = torneo.first(); + if (partita != NULL && partita->chiusa()) + { + for (int r = partita->last(); r > 0; r = partita->pred(r)) + { + const TRiga_partite& row = partita->riga(r); + const tipo_movimento tipo = row.tipo(); + if (tipo == tm_pagamento || tipo == tm_pagamento_insoluto) + { + const TDate datadoc = row.get_date(PART_DATAPAG); + if (datadoc > last_data_pag) + last_data_pag = datadoc; + } + } + finito = true; + } + + return finito; +} + + void TEsporta_ps0713_app::esporta_righe_iva(const TMask& m) const { TFilename path = m.get(F_PATH); @@ -149,14 +186,20 @@ void TEsporta_ps0713_app::esporta_righe_iva(const TMask& m) const // query su righe iva joinati ai mov TString query; query << "USE RMOVIVA "; - query << "SELECT ((NUM(ANSI(23.DATAREG))>=NUM(ANSI(#DADATA)))&&(NUM(ANSI(23.DATAREG))<=NUM(ANSI(#ADATA))))&&(23.INVIVA!=\"X\")\n"; - query << "JOIN MOV INTO NUMREG==NUMREG\n"; - query << "JOIN %IVA ALIAS 101 INTO CODTAB==CODIVA"; + query << "SELECT ((NUM(ANSI(23.DATAREG))>=NUM(ANSI(#DADATA)))&&(NUM(ANSI(23.DATAREG))<=NUM(ANSI(#ADATA))))&&(23.INVIVA!=\"X\")&&(23.TIPO=\"F\")"; + + if (m.get_int(F_JOB) == 1) + query << "&&(CODCMS!=\"\")"; + else + query << "&&(CODCMS=\"\")"; + + query << "\nJOIN MOV INTO NUMREG==NUMREG"; + query << "\nJOIN %IVA ALIAS 101 INTO CODTAB==CODIVA"; + query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF"; TISAM_recordset rmoviva(query); const TDate& adata = m.get_date(F_ADATA); - TDate dadata = adata; - dadata.addyear(-1); + const TDate dadata(1,1, adata.year() - 1); rmoviva.set_var("#DADATA", dadata); rmoviva.set_var("#ADATA", adata); @@ -170,16 +213,33 @@ void TEsporta_ps0713_app::esporta_righe_iva(const TMask& m) const if (!pi.addstatus(1)) break; - //creazione di un nuovo record da esportare - csv.new_rec(""); - //..e successivo riempimento - csv.set(0, rmoviva.get(RMI_CODCMS)); - csv.set(1, rmoviva.get(RMI_IMPONIBILE)); - csv.set(2, rmoviva.get("101@.R0")); - csv.set(3, rmoviva.get(RMI_IMPOSTA)); - csv.set(4, rmoviva.get(RMI_GRUPPO)); - csv.set(5, rmoviva.get(RMI_CONTO)); - csv.set(6, rmoviva.get(RMI_SOTTOCONTO)); + TDate last_data_pag; + bool partita_chiusa = test_partita(rmoviva.get(RMI_NUMREG).as_int(), last_data_pag); + + if (partita_chiusa) + { + //creazione di un nuovo record da esportare + csv.new_rec(""); + //..e successivo riempimento + csv.set(0, rmoviva.get(RMI_CODCMS)); + csv.set(1, rmoviva.get("23.CODCF")); + csv.set(2, rmoviva.get("20.RAGSOC")); + const real imponibile = rmoviva.get(RMI_IMPONIBILE).as_real(); +// const real imposta = rmoviva.get(RMI_IMPOSTA).as_real(); +// const real lordo = imponibile + imposta; +// csv.set(3, lordo); + csv.set(3, imponibile); + //csv.set(2, rmoviva.get("101@.R0")); //aliquota non ci vuole piu' +// csv.set(5, imposta); + csv.set(6, rmoviva.get("23.DATADOC")); + csv.set(7, rmoviva.get("23.NUMDOC")); + csv.set(8, last_data_pag); + + // csv.set(9, rmoviva.get(RMI_GRUPPO)); + // csv.set(10, rmoviva.get(RMI_CONTO)); + // csv.set(11, rmoviva.get(RMI_SOTTOCONTO)); + // csv.set(12, rmoviva.get(RMI_NUMREG)); + } } //for(move_first().. diff --git a/ps/ps0713100a.h b/ps/ps0713100a.h index 205b9d407..82ebfd504 100755 --- a/ps/ps0713100a.h +++ b/ps/ps0713100a.h @@ -3,3 +3,4 @@ #define F_PATH 101 #define F_NAME 102 #define F_ADATA 103 +#define F_JOB 104 diff --git a/ps/ps0713100a.uml b/ps/ps0713100a.uml index 753780d01..07692564d 100755 --- a/ps/ps0713100a.uml +++ b/ps/ps0713100a.uml @@ -42,5 +42,12 @@ BEGIN FIELD ADATA END +RADIOBUTTON F_JOB 20 +BEGIN + PROMPT 2 7 "Tipo record da esportare" + ITEM "1|CON id. lavoro" + ITEM "2|SENZA id. lavoro" +END + ENDPAGE ENDMASK