Files correlati : pd0610 pd061300a.msk Ricompilazione Demo : [ ] Commento : Aggiunto il programma che modifica le condizioni di pagamento sui documenti filtrati in base a numdoc, stato, da cliente a cliente, da data a data - Primo step: mancano alcuni test git-svn-id: svn://10.65.10.50/branches/R_10_00@21354 c028cbd2-c16b-5b4b-a496-9718f37d4682
130 lines
3.3 KiB
C++
Executable File
130 lines
3.3 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <recset.h>
|
|
#include <relation.h>
|
|
|
|
#include "../cg/cglib01.h"
|
|
|
|
#include "doc.h"
|
|
|
|
#include "pd0610300a.h"
|
|
|
|
/////////////////////////////////
|
|
//// TSOST_CONDPAG_MSK ////
|
|
/////////////////////////////////
|
|
|
|
class TSost_condpag_msk: public TAutomask
|
|
{
|
|
protected:
|
|
void elabora_documenti();
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
public:
|
|
TSost_condpag_msk();
|
|
};
|
|
|
|
void TSost_condpag_msk::elabora_documenti()
|
|
{
|
|
//se non sono settate le date, compilo gli anni dagli esercizi contabili
|
|
TEsercizi_contabili& esc = esercizi();
|
|
const TDate dadata = get_date(F_DADATA);
|
|
const TDate adata = get_date(F_ADATA);
|
|
const long daanno = dadata.ok() ? dadata.year() : esc.first();
|
|
const long aanno = adata.ok() ? adata.year() : esc.last();
|
|
|
|
TString query;
|
|
query << "USE DOC\n"
|
|
<< "SELECT (TIPODOC=\"#TIPODOC\")&&(STATO=\"#STATO\")&&(TIPOCF=\"C\")&&(BETWEEN(CODCF,#DACODCF,#ACODCF))&&(BETWEEN(DATADOC,#DADATA,#ADATA))\n"
|
|
<< "FROM PROVV=\"D\" ANNO=#DAANNO CODNUM=\"#CODNUM\"\n"
|
|
<< "TO PROVV=\"D\" ANNO=#AANNO CODNUM=\"#CODNUM\"";
|
|
|
|
//instanzio il recordset e gli setto tutte le variabili
|
|
TISAM_recordset doc(query);
|
|
doc.set_var("#TIPODOC", get(F_TIPODOC));
|
|
doc.set_var("#STATO", get(F_STATO));
|
|
doc.set_var("#DACODCF", get_long(F_DACODCF));
|
|
doc.set_var("#ACODCF", get_long(F_ACODCF));
|
|
doc.set_var("#DADATA", dadata);
|
|
doc.set_var("#ADATA", adata);
|
|
doc.set_var("#DAANNO", daanno);
|
|
doc.set_var("#AANNO", aanno);
|
|
doc.set_var("#CODNUM", get(F_CODNUM));
|
|
|
|
TLocalisamfile& documenti = doc.cursor()->file();
|
|
|
|
const long codpag = get_long(F_CODPAG);
|
|
|
|
//scorro il recordset e aggiorno i documenti che è necessario aggiornare
|
|
for(bool ok = doc.move_first(); ok; ok = doc.move_next())
|
|
{
|
|
TRectype& rec = doc.cursor()->curr();
|
|
|
|
if(rec.get_long(DOC_CODPAG) != codpag)
|
|
{
|
|
rec.put(DOC_CODPAG, codpag);
|
|
rec.rewrite(documenti);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool TSost_condpag_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch(o.dlg())
|
|
{
|
|
case DLG_OK:
|
|
if(e == fe_button)
|
|
{
|
|
elabora_documenti();
|
|
return false;
|
|
}
|
|
break;
|
|
/*case DLG_CANCEL:
|
|
if(e == fe_button)
|
|
{
|
|
reset(F_CLIENTE);
|
|
reset(F_RAGSOC);
|
|
sfield(F_SHEET).destroy();
|
|
return false;
|
|
}
|
|
break;*/
|
|
default: break;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
TSost_condpag_msk::TSost_condpag_msk() : TAutomask("pd0610300a")
|
|
{
|
|
}
|
|
|
|
/////////////////////////////////
|
|
//// TSOST_CONDPAG_APP ////
|
|
/////////////////////////////////
|
|
|
|
class TSost_condpag_app: public TSkeleton_application
|
|
{
|
|
protected:
|
|
virtual bool check_autorization() const {return false;}
|
|
virtual const char * extra_modules() const {return "ve";}
|
|
virtual void main_loop();
|
|
void elabora();
|
|
};
|
|
|
|
void TSost_condpag_app::elabora()
|
|
{
|
|
}
|
|
|
|
void TSost_condpag_app::main_loop()
|
|
{
|
|
TSost_condpag_msk m;
|
|
while (m.run() == K_ENTER)
|
|
{
|
|
elabora();
|
|
}
|
|
}
|
|
|
|
int pd0610300(int argc, char* argv[])
|
|
{
|
|
TSost_condpag_app app;
|
|
app.run(argc, argv, TR("Sostituzione Condizioni di Pagamento"));
|
|
return 0;
|
|
}
|