Patch level : 12.0 no-patch
Files correlati : Commento : Nuova personalizzazione ATS, consente di eportare su file i dati IVA. Questo programma è un evoluzione di ps0713100 con l'aggiunta di filtri e sheet per visualizzare in anteprima i dati da esportare git-svn-id: svn://10.65.10.50/branches/R_10_00@23690 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8faaf273a9
commit
9b29908760
@ -14,6 +14,7 @@ int main(int argc, char** argv)
|
||||
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
|
||||
case 7: ps0713800(argc, argv); break; //Esportazione righe IVA con partita non chiusa e visualizzazione su sheet
|
||||
default: ps0713100(argc, argv); break; //Esportazione righe IVA
|
||||
}
|
||||
return 0;
|
||||
|
@ -4,4 +4,5 @@ int ps0713300(int argc, char* argv[]);
|
||||
int ps0713400(int argc, char* argv[]);
|
||||
int ps0713500(int argc, char* argv[]);
|
||||
int ps0713600(int argc, char* argv[]);
|
||||
int ps0713700(int argc, char* argv[]);
|
||||
int ps0713700(int argc, char* argv[]);
|
||||
int ps0713800(int argc, char* argv[]);
|
578
src/ps/ps0713800.cpp
Normal file
578
src/ps/ps0713800.cpp
Normal file
@ -0,0 +1,578 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <progind.h>
|
||||
#include <textset.h>
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
#include "../ca/calib01.h"
|
||||
#include "../ca/calib02.h"
|
||||
#include "../cg/cgsaldac.h"
|
||||
|
||||
#include "ps0713800a.h"
|
||||
|
||||
///////////////////////////////////
|
||||
//// TEsportaIva_msk ////
|
||||
///////////////////////////////////
|
||||
|
||||
//Classe TEsportaIva_msk
|
||||
class TEsportaIva_msk : public TAutomask
|
||||
{
|
||||
void createName();
|
||||
bool test_partita(const long numreg, TDate& last_data_pag, const TDate& data) const;
|
||||
void fill();
|
||||
public:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
bool testFields() const;
|
||||
TEsportaIva_msk();
|
||||
};
|
||||
|
||||
//ON_FIELD_EVENT: metodo che gestisce i comportamenti dei vari campi della maschera
|
||||
bool TEsportaIva_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_DADATA:
|
||||
if (e == fe_init)
|
||||
o.set(ini_get_string(CONFIG_DITTA, "Esporta_Dati_IVA", "LastSend", "01-01-2017"));
|
||||
break;
|
||||
case F_ADATA:
|
||||
case F_CODCF:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
createName();
|
||||
break;
|
||||
case B_FORNITORE:
|
||||
if(get_bool(B_FORNITORE))
|
||||
{
|
||||
enable(F_CODCF);
|
||||
enable(F_RAGSOC);
|
||||
}
|
||||
else
|
||||
{
|
||||
disable(F_CODCF);
|
||||
disable(F_RAGSOC);
|
||||
set(F_CODCF, "");
|
||||
set(F_RAGSOC, "");
|
||||
createName();
|
||||
}
|
||||
break;
|
||||
case B_PRTAPE:
|
||||
case B_PRTCHIU:
|
||||
if(e == fe_init)
|
||||
{
|
||||
set(B_PRTAPE, "X");
|
||||
set(B_PRTCHIU, "X");
|
||||
}
|
||||
break;
|
||||
case DLG_RECALC:
|
||||
if (e != fe_init)
|
||||
fill();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void TEsportaIva_msk::createName()
|
||||
{
|
||||
//setto il campo F_NAME a un valore fisso, e cioè: "CODF_data.txt"
|
||||
TDate adata = get_date(F_ADATA);
|
||||
TString16 name;
|
||||
if(get(F_CODCF).full())
|
||||
name << get(F_CODCF);
|
||||
|
||||
if(get(F_CODCF).full() && adata.ok()) // Solo se ci sono entrambi, sennò farebbe schifo
|
||||
name << "_";
|
||||
|
||||
if(adata.ok())
|
||||
name << adata.date2ansi();
|
||||
if(name.full()) // Capita che venga chiamato per eliminare
|
||||
name << ".txt";
|
||||
set(F_NAME, name);
|
||||
}
|
||||
|
||||
bool TEsportaIva_msk::testFields() const
|
||||
{
|
||||
// Controllo presenza campi
|
||||
if(!get_date(F_ADATA).ok() || !get_date(F_DADATA).ok())
|
||||
{
|
||||
warning_box("Controllare le date");
|
||||
return false;
|
||||
}
|
||||
if(!get_bool(B_PRTAPE) && !get_bool(B_PRTCHIU))
|
||||
{
|
||||
warning_box("Selezionare almeno un tipo di partita!");
|
||||
return false;
|
||||
}
|
||||
if(get_bool(B_FORNITORE) && get(F_CODCF).empty())
|
||||
{
|
||||
warning_box("Selezionare il fornitore o togliere il filtro!");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//TEST_PARTITA: metodo che cerca l'ultima data pagamento delle partite relative ad un numreg (la maggiore)
|
||||
//il metodo restiruisce true se esiste almeno una partita per il numreg indicato
|
||||
bool TEsportaIva_msk::test_partita(const long numreg, TDate& last_data_pag, const TDate& data) const
|
||||
{
|
||||
TPartite_array torneo;
|
||||
//aggiungo all'array tutte le partite con quel numreg
|
||||
torneo.add_numreg(numreg);
|
||||
TPartita* partita = torneo.first();
|
||||
//se esiste almeno una partita ed è chiusa
|
||||
if (partita != NULL && partita->chiusa())
|
||||
{
|
||||
//scorro tutte le partite
|
||||
for (int r = partita->last(); r > 0; r = partita->pred(r))
|
||||
{
|
||||
//instanzio una riga_partite
|
||||
const TRiga_partite& row = partita->riga(r);
|
||||
const tipo_movimento tipo = row.tipo();
|
||||
//controllo il tipo_movimento; se è del tipo tm_pagamento o tm_pagamento_insoluto
|
||||
//recupero la data del pagamento, e se questa è maggiore di quella già trovata, aggiorno
|
||||
//quest'ultima
|
||||
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;
|
||||
}
|
||||
}
|
||||
return last_data_pag <= data ? true : false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void TEsportaIva_msk::fill()
|
||||
{
|
||||
// Controllo se i campi corretti
|
||||
if(!testFields())
|
||||
return;
|
||||
|
||||
// Preparo le date di interesse
|
||||
const TDate adata(get_date(F_ADATA));
|
||||
const TDate dadata(get_date(F_DADATA));
|
||||
|
||||
// Preparo query su righe iva joinati ai mov
|
||||
TString query("USE RMOVIVA SELECT BETWEEN(23.DATAREG,#DADATA,#ADATA)&&(23.INVIVA!=\"X\")&&(23.TIPO=\"F\")");
|
||||
if(get_bool(B_FORNITORE))
|
||||
{
|
||||
query << "&&(23.CODCF=#CODCF)";
|
||||
}
|
||||
query << "\n";
|
||||
|
||||
bool with_cms = get_int(F_JOB) == 1;
|
||||
|
||||
query << "JOIN MOV INTO NUMREG==NUMREG\n"
|
||||
<< "JOIN %IVA ALIAS 101 INTO CODTAB==CODIVA\n"
|
||||
<< "JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
|
||||
|
||||
//instanzio il recordset
|
||||
TISAM_recordset rmoviva(query);
|
||||
rmoviva.set_var("#DADATA", dadata);
|
||||
rmoviva.set_var("#ADATA", adata);
|
||||
if(get_bool(B_FORNITORE))
|
||||
rmoviva.set_var("#CODCF", get(F_CODCF));
|
||||
|
||||
TSheet_field& sheet = sfield(S_RESULT);
|
||||
TString_array& strarr = sheet.rows_array();
|
||||
|
||||
sheet.hide();
|
||||
sheet.destroy();
|
||||
|
||||
TProgress_monitor pi(rmoviva.items(), TR("Creazione sheet..."));
|
||||
|
||||
bool all = get_bool(B_PRTAPE) && get_bool(B_PRTCHIU);
|
||||
for (bool ok = rmoviva.move_first(); ok && !pi.is_cancelled(); ok = rmoviva.move_next())
|
||||
{
|
||||
if (!pi.add_status())
|
||||
break;
|
||||
|
||||
TCursor* i = rmoviva.cursor();
|
||||
int k = i->pos();
|
||||
|
||||
TDate last_data_pag;
|
||||
const long numreg = rmoviva.get(RMI_NUMREG).as_int();
|
||||
TToken_string* row = new TToken_string;
|
||||
|
||||
bool partita_chiusa;
|
||||
if(!all)
|
||||
partita_chiusa = test_partita(numreg, last_data_pag, adata);
|
||||
|
||||
if (all || (get_bool(B_PRTAPE) && !partita_chiusa) || (get_bool(B_PRTCHIU) && partita_chiusa))
|
||||
{
|
||||
if (with_cms)
|
||||
{
|
||||
TAnal_mov movana;
|
||||
|
||||
movana.read_cgnum(numreg);
|
||||
const int rows = movana.rows();
|
||||
|
||||
if (rows > 0)
|
||||
{
|
||||
for(int i = 1; i <= rows; i++)
|
||||
{
|
||||
row->cut(0);
|
||||
const TRectype& rmovana = movana.body()[i];
|
||||
const TString80 codcms = rmovana.get("CODCMS");
|
||||
|
||||
row->add(codcms, 0);
|
||||
row->add(rmoviva.get("23.CODCF").as_string());
|
||||
row->add(rmoviva.get("20.RAGSOC").as_string());
|
||||
char sez = rmovana.get_char("SEZIONE");
|
||||
TImporto importo(sez, rmovana.get_real("IMPORTO"));
|
||||
importo.normalize('D');
|
||||
row->add(importo.valore());
|
||||
row->add(rmoviva.get("23.DATADOC").as_string());
|
||||
row->add(rmoviva.get("23.NUMDOC").as_string());
|
||||
row->add(last_data_pag);
|
||||
row->add(rmoviva.get("25.GRUPPO").as_string());
|
||||
row->add(rmoviva.get("25.CONTO").as_string());
|
||||
row->add(rmoviva.get("25.SOTTOCONTO").as_string());
|
||||
strarr.add(row);
|
||||
}
|
||||
while (rmoviva.move_next())
|
||||
{
|
||||
const long wnumreg = rmoviva.get(RMI_NUMREG).as_int();
|
||||
if (wnumreg != numreg)
|
||||
{
|
||||
rmoviva.move_prev();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
const TString & codcms = rmoviva.get("CODCMS").as_string();
|
||||
|
||||
if (codcms.full())
|
||||
{
|
||||
row->cut(0);
|
||||
row->add(codcms, 0);
|
||||
row->add(rmoviva.get("23.CODCF").as_string());
|
||||
row->add(rmoviva.get("20.RAGSOC").as_string());
|
||||
row->add(rmoviva.get(RMI_IMPONIBILE).as_real());
|
||||
row->add(rmoviva.get("23.DATADOC").as_string());
|
||||
row->add(rmoviva.get("23.NUMDOC").as_string());
|
||||
row->add(last_data_pag);
|
||||
row->add(rmoviva.get("25.GRUPPO").as_string());
|
||||
row->add(rmoviva.get("25.CONTO").as_string());
|
||||
row->add(rmoviva.get("25.SOTTOCONTO").as_string());
|
||||
strarr.add(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (rmoviva.get("CODCMS").as_string().blank())
|
||||
{
|
||||
row->cut(0);
|
||||
row->add("", 0);
|
||||
row->add(rmoviva.get("23.CODCF").as_string());
|
||||
row->add(rmoviva.get("20.RAGSOC").as_string());
|
||||
row->add(rmoviva.get(RMI_IMPONIBILE).as_real());
|
||||
row->add(rmoviva.get("23.DATADOC").as_string());
|
||||
row->add(rmoviva.get("23.NUMDOC").as_string());
|
||||
row->add(last_data_pag);
|
||||
row->add(rmoviva.get("25.GRUPPO").as_string());
|
||||
row->add(rmoviva.get("25.CONTO").as_string());
|
||||
row->add(rmoviva.get("25.SOTTOCONTO").as_string());
|
||||
strarr.add(row);
|
||||
}
|
||||
}
|
||||
}
|
||||
sheet.force_update();
|
||||
sheet.show();
|
||||
}
|
||||
|
||||
//metodo costruttore
|
||||
TEsportaIva_msk::TEsportaIva_msk() : TAutomask("ps0713800a"){}
|
||||
|
||||
///////////////////////////////////
|
||||
//// TEsportaIva_REC ////
|
||||
///////////////////////////////////
|
||||
|
||||
//Classe TEsportaIva_rec (righe movimenti iva)
|
||||
class TEsportaIva_rec : public TCSV_recordset
|
||||
{
|
||||
public:
|
||||
TEsportaIva_rec();
|
||||
};
|
||||
|
||||
//metodo costruttore
|
||||
TEsportaIva_rec::TEsportaIva_rec()
|
||||
: TCSV_recordset("CSV(\"\t\")")
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////
|
||||
//// TEsportaIva_APP ////
|
||||
///////////////////////////////////
|
||||
|
||||
//Classe TEsportaIva_app
|
||||
class TEsportaIva_app : public TSkeleton_application
|
||||
{
|
||||
friend class TEsportaIva_msk;
|
||||
protected:
|
||||
virtual bool check_autorization() const {return false;}
|
||||
virtual const char * extra_modules() const {return "cg";}
|
||||
virtual void main_loop();
|
||||
|
||||
bool test_partita(const long numreg, TDate& last_data_pag, const TDate& data) const;
|
||||
|
||||
public:
|
||||
void esporta_righe_iva(const TEsportaIva_msk& msk) const;
|
||||
void set_inviva(TISAM_recordset& rmoviva, const TDate& data) const;
|
||||
};
|
||||
|
||||
//TEST_PARTITA: metodo che cerca l'ultima data pagamento delle partite relative ad un numreg (la maggiore)
|
||||
//il metodo restiruisce true se esiste almeno una partita per il numreg indicato
|
||||
bool TEsportaIva_app::test_partita(const long numreg, TDate& last_data_pag, const TDate& data) const
|
||||
{
|
||||
TPartite_array torneo;
|
||||
//aggiungo all'array tutte le partite con quel numreg
|
||||
torneo.add_numreg(numreg);
|
||||
TPartita* partita = torneo.first();
|
||||
//se esiste almeno una partita ed è chiusa
|
||||
if (partita != NULL && partita->chiusa())
|
||||
{
|
||||
//scorro tutte le partite
|
||||
for (int r = partita->last(); r > 0; r = partita->pred(r))
|
||||
{
|
||||
//instanzio una riga_partite
|
||||
const TRiga_partite& row = partita->riga(r);
|
||||
const tipo_movimento tipo = row.tipo();
|
||||
//controllo il tipo_movimento; se è del tipo tm_pagamento o tm_pagamento_insoluto
|
||||
//recupero la data del pagamento, e se questa è maggiore di quella già trovata, aggiorno
|
||||
//quest'ultima
|
||||
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;
|
||||
}
|
||||
}
|
||||
return last_data_pag <= data ? true : false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//ESPORTA_RIGHE_IVA: metodo che prepara il csv-recordset per essere esportato
|
||||
void TEsportaIva_app::esporta_righe_iva(const TEsportaIva_msk& m) const
|
||||
{
|
||||
// Controllo se i campi corretti
|
||||
if(!m.testFields())
|
||||
return;
|
||||
|
||||
//instanzio il TFilename e controllo la sua esistenza
|
||||
TFilename path = m.get(F_PATH);
|
||||
path.add(m.get(F_NAME));
|
||||
if (path.exist())
|
||||
{
|
||||
TString str;
|
||||
str << "ATTENZIONE! " << "Il file " << m.get(F_NAME) << "è già esistente.\n"
|
||||
<< "Se si procede sara' azzerato il file esistente!\nContinuare?";
|
||||
if (!yesno_box(str))
|
||||
return;
|
||||
}
|
||||
|
||||
//preparo le date di interesse
|
||||
const TDate adata(m.get_date(F_ADATA));
|
||||
const TDate dadata(1, 1, adata.year() - 4);
|
||||
|
||||
// Preparo query su righe iva joinati ai mov
|
||||
TString query("USE RMOVIVA SELECT BETWEEN(23.DATAREG,#DADATA,#ADATA)&&(23.INVIVA!=\"X\")&&(23.TIPO=\"F\")");
|
||||
if(m.get_bool(B_FORNITORE))
|
||||
{
|
||||
query << "&&(23.CODCF=#CODCF)";
|
||||
}
|
||||
query << "\n";
|
||||
|
||||
bool with_cms = m.get_int(F_JOB) == 1;
|
||||
/* if (m.get_int(F_JOB) == 1)
|
||||
query << "&&(CODCMS!=\"\")\n";
|
||||
else
|
||||
query << "&&(CODCMS=\"\")\n"; */
|
||||
|
||||
query << "JOIN MOV INTO NUMREG==NUMREG\n"
|
||||
<< "JOIN %IVA ALIAS 101 INTO CODTAB==CODIVA\n"
|
||||
<< "JOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
|
||||
|
||||
//instanzio il recordset
|
||||
TISAM_recordset rmoviva(query);
|
||||
rmoviva.set_var("#DADATA", dadata);
|
||||
rmoviva.set_var("#ADATA", adata);
|
||||
|
||||
//instanzio il csv recordset
|
||||
TEsportaIva_rec csv;
|
||||
bool all = m.get_bool(B_PRTAPE) && m.get_bool(B_PRTCHIU);
|
||||
TProgress_monitor pi(rmoviva.items(), TR("Estrazione dati..."));
|
||||
for (bool ok = rmoviva.move_first(); ok && !pi.is_cancelled(); ok = rmoviva.move_next())
|
||||
{
|
||||
if (!pi.add_status())
|
||||
break;
|
||||
|
||||
TDate last_data_pag;
|
||||
const long numreg = rmoviva.get(RMI_NUMREG).as_int();
|
||||
bool partita_chiusa;
|
||||
if(!all)
|
||||
partita_chiusa = test_partita(numreg, last_data_pag, adata);
|
||||
|
||||
if (all || (m.get_bool(B_PRTAPE) && !partita_chiusa) || (m.get_bool(B_PRTCHIU) && partita_chiusa))
|
||||
{
|
||||
if (with_cms)
|
||||
{
|
||||
TAnal_mov movana;
|
||||
|
||||
movana.read_cgnum(numreg);
|
||||
const int rows = movana.rows();
|
||||
|
||||
if (rows > 0)
|
||||
{
|
||||
for(int i = 1; i <= rows; i++)
|
||||
{
|
||||
csv.new_rec("");
|
||||
const TRectype& rmovana = movana.body()[i];
|
||||
const TString80 codcms = rmovana.get("CODCMS");
|
||||
|
||||
csv.set(0, codcms);
|
||||
csv.set(1, rmoviva.get("23.CODCF"));
|
||||
csv.set(2, rmoviva.get("20.RAGSOC"));
|
||||
char sez = rmovana.get_char("SEZIONE");
|
||||
TImporto importo(sez, rmovana.get_real("IMPORTO"));
|
||||
importo.normalize('D');
|
||||
csv.set(3, importo.valore());
|
||||
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("25.GRUPPO"));
|
||||
csv.set(10, rmoviva.get("25.CONTO"));
|
||||
csv.set(11, rmoviva.get("25.SOTTOCONTO"));
|
||||
}
|
||||
while (rmoviva.move_next())
|
||||
{
|
||||
const long wnumreg = rmoviva.get(RMI_NUMREG).as_int();
|
||||
if (wnumreg != numreg)
|
||||
{
|
||||
rmoviva.move_prev();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
const TString & codcms = rmoviva.get("CODCMS").as_string();
|
||||
|
||||
if (codcms.full())
|
||||
{
|
||||
csv.new_rec("");
|
||||
csv.set(0, codcms);
|
||||
csv.set(1, rmoviva.get("23.CODCF"));
|
||||
csv.set(2, rmoviva.get("20.RAGSOC"));
|
||||
csv.set(3, rmoviva.get(RMI_IMPONIBILE).as_real());
|
||||
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("25.GRUPPO"));
|
||||
csv.set(10, rmoviva.get("25.CONTO"));
|
||||
csv.set(11, rmoviva.get("25.SOTTOCONTO"));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (rmoviva.get("CODCMS").as_string().blank())
|
||||
{
|
||||
csv.new_rec("");
|
||||
csv.set(0, "");
|
||||
csv.set(1, rmoviva.get("23.CODCF"));
|
||||
csv.set(2, rmoviva.get("20.RAGSOC"));
|
||||
csv.set(3, rmoviva.get(RMI_IMPONIBILE).as_real());
|
||||
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("25.GRUPPO"));
|
||||
csv.set(10, rmoviva.get("25.CONTO"));
|
||||
csv.set(11, rmoviva.get("25.SOTTOCONTO"));
|
||||
}
|
||||
}
|
||||
}
|
||||
csv.save_as(path, fmt_text);
|
||||
|
||||
#ifdef DBG
|
||||
xvt_sys_goto_url(path, "open");
|
||||
#endif
|
||||
|
||||
TString msg;
|
||||
msg << TR("Si conferma l'esportazione definitiva dei movimenti IVA fino al ") << m.get(F_ADATA);
|
||||
if (m.get_bool(B_PRTCHIU) && yesno_box(msg))
|
||||
set_inviva(rmoviva, adata); //mette il flag di "INVIVA" alla testata movimento
|
||||
|
||||
// Salvo su file le impostazioni
|
||||
ini_set_string(CONFIG_DITTA, "Esporta_Dati_IVA", "LastSend", m.get_date(F_DADATA));
|
||||
}
|
||||
|
||||
//SET_INVIA: metodo che mette il flag di "INVIVA" alla testata movimento
|
||||
void TEsportaIva_app::set_inviva(TISAM_recordset& rmoviva, const TDate& data) const
|
||||
{
|
||||
return; //Test
|
||||
long last_numreg = 0L;
|
||||
|
||||
TProgind pi(rmoviva.items(), TR("Impostazione flag Inviata parte IVA..."), true, true);
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
|
||||
//scorro il recordset che contiene le righe IVA joinate con i movimenti
|
||||
for (bool ok = rmoviva.move_first(); ok; ok = rmoviva.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
const long curr_numreg = rmoviva.get(RMI_NUMREG).as_int();
|
||||
//ad ogni cambio di numreg
|
||||
if (curr_numreg != last_numreg)
|
||||
{
|
||||
TDate last_data_pag;
|
||||
bool partita_chiusa = test_partita(curr_numreg, last_data_pag, data);
|
||||
//controllo che la partita sia chiusa
|
||||
if (partita_chiusa)
|
||||
{
|
||||
//leggo dal file LF_MOV quello che ha il numero di registrazione selezionato
|
||||
mov.put(MOV_NUMREG, curr_numreg);
|
||||
int err = mov.read();
|
||||
|
||||
//se riesco a leggerlo setto il flag di invio e aggiorno il movimento
|
||||
if (err == NOERR)
|
||||
{
|
||||
mov.put(MOV_INVIVA, 'X');
|
||||
err = mov.rewrite();
|
||||
}
|
||||
|
||||
//se non sono riuscito ne' a leggerlo ne' a scriverlo, lo segnalo
|
||||
if (err != NOERR)
|
||||
{
|
||||
TString str;
|
||||
str << TR("Impossibile aggiornare il movimento ") << curr_numreg;
|
||||
error_box(str);
|
||||
break;
|
||||
}
|
||||
}
|
||||
last_numreg = curr_numreg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TEsportaIva_app::main_loop()
|
||||
{
|
||||
TEsportaIva_msk m;
|
||||
while (m.run() == K_ENTER)
|
||||
esporta_righe_iva(m);
|
||||
}
|
||||
|
||||
int ps0713800(int argc, char* argv[])
|
||||
{
|
||||
TEsportaIva_app app;
|
||||
app.run(argc, argv, TR("Trasferimento dati IVA"));
|
||||
return 0;
|
||||
}
|
23
src/ps/ps0713800a.h
Normal file
23
src/ps/ps0713800a.h
Normal file
@ -0,0 +1,23 @@
|
||||
//campi maschera ps0713800a
|
||||
#define A_IDLAVORO 101
|
||||
#define A_CODF 102
|
||||
#define A_RAGSOC 103
|
||||
#define A_IMPORTO 104
|
||||
#define A_DATADOC 105
|
||||
#define A_NUMDOC 106
|
||||
#define A_GRUPPO 107
|
||||
#define A_CONTO 108
|
||||
#define A_SOTTOCONTO 109
|
||||
|
||||
#define F_PATH 201
|
||||
#define F_NAME 202
|
||||
#define F_DADATA 203
|
||||
#define F_ADATA 204
|
||||
#define F_JOB 205
|
||||
#define B_FORNITORE 206
|
||||
#define F_CODCF 207
|
||||
#define F_RAGSOC 208
|
||||
#define B_PRTAPE 209
|
||||
#define B_PRTCHIU 210
|
||||
|
||||
#define S_RESULT 301
|
203
src/ps/ps0713800a.msk
Normal file
203
src/ps/ps0713800a.msk
Normal file
@ -0,0 +1,203 @@
|
||||
#include "ps0713800a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Elabora"
|
||||
PICTURE TOOL_ELABORA
|
||||
END
|
||||
|
||||
BUTTON DLG_RECALC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Aggiorna"
|
||||
PICTURE TOOL_CONVERT
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Trasferimento dati IVA per ATS" -1 -1 80 10
|
||||
|
||||
STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 9 -12 "Profilo "
|
||||
PSELECT
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING F_PATH 255 45
|
||||
BEGIN
|
||||
PROMPT 0 1 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "M"
|
||||
FIELD PATH
|
||||
END
|
||||
|
||||
STRING F_NAME 30
|
||||
BEGIN
|
||||
PROMPT 60 1 "File "
|
||||
FLAGS "D"
|
||||
CHECKTYPE NORMAL
|
||||
FIELD NAME
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 0 2 "Da data "
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD ADATA
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 20 2 "A data "
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD ADATA
|
||||
END
|
||||
|
||||
RADIOBUTTON F_JOB 12
|
||||
BEGIN
|
||||
PROMPT 70 2 "ID lavoro"
|
||||
ITEM "1|SI"
|
||||
ITEM "2|NO"
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
BOOLEAN B_FORNITORE
|
||||
BEGIN
|
||||
PROMPT 0 3 "Fornitore"
|
||||
END
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 14 3 "Codice:"
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F" SELECT
|
||||
INPUT CODCF F_CODCF
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Occasionale@C" OCCAS
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
DISPLAY "Partita IVA@15" PAIV
|
||||
OUTPUT F_CODCF CODCF
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHEKTYPE NORMAL
|
||||
GROUP 1
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50 30
|
||||
BEGIN
|
||||
PROMPT 30 3 "R.Soc: "
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "F" SELECT
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
DISPLAY "Partita IVA@15" PAIV
|
||||
COPY OUTPUT F_CODCF
|
||||
ADD RUN CG0 -1
|
||||
GROUP 1
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_PRTAPE
|
||||
BEGIN
|
||||
PROMPT 0 4 "Partita aperta"
|
||||
END
|
||||
|
||||
BOOLEAN B_PRTCHIU
|
||||
BEGIN
|
||||
PROMPT 20 4 "Partita chiusa"
|
||||
END
|
||||
|
||||
SPREADSHEET S_RESULT
|
||||
BEGIN
|
||||
PROMPT 0 5 ""
|
||||
ITEM "ID Lavoro@10"
|
||||
ITEM "Cod.\nFornitore@8"
|
||||
ITEM "Rag. Soc.@30"
|
||||
ITEM "Importo@10"
|
||||
ITEM "Data\ndocumento@10"
|
||||
ITEM "Numero\ndocumento@10"
|
||||
ITEM "Gruppo@5"
|
||||
ITEM "Conto@5"
|
||||
ITEM "Sottoconto@10"
|
||||
DEFAULT "*" // Impedisce il salvataggio su profilo .ini
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Riga" -1 -1 69 10
|
||||
|
||||
NUMBER A_IDLAVORO 7
|
||||
BEGIN
|
||||
PROMPT 1 0 "N.Movimento"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
STRING A_CODF 6
|
||||
BEGIN
|
||||
PROMPT 1 0 "Codice Fornitore"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
STRING A_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 1 0 "Rag.Soc."
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
NUMBER A_IMPORTO 18 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "Importo"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
DATE A_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 0 "Data Documento"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
STING A_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 1 0 "Numero Documento"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
NUMBER A_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "Gruppo"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
NUMBER A_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "Conto"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
NUMBER A_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 1 0 "Sottoconto"
|
||||
FLAGS "D"
|
||||
FIELD PROGR
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user