campo-sirio/co/co1300.cpp
luca 1a560c6df1 Patch level :10.0 94
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :riportate modifiche 3.2


git-svn-id: svn://10.65.10.50/trunk@16969 c028cbd2-c16b-5b4b-a496-9718f37d4682
2008-07-29 13:36:43 +00:00

139 lines
3.3 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <reprint.h>
#include <textset.h>
#include "co1.h"
#include "co1300a.h"
#include "socicoop.h"
#include "..\ve\velib.h"
#include "..\ve\velib07.h"
////////////////////////////////////////////////////////
// MASCHERA
////////////////////////////////////////////////////////
class TEstrattoConto_mask : public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TEstrattoConto_mask();
virtual ~TEstrattoConto_mask() {};
};
TEstrattoConto_mask::TEstrattoConto_mask() :TAutomask ("co1300a")
{
}
bool TEstrattoConto_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
return TRUE;
}
////////////////////////////////////////////////////////
// REPORT
////////////////////////////////////////////////////////
class TEstrattoConto_rep : public TDocument_report
{
protected:
virtual bool use_mask() {return false;}
};
////////////////////////////////////////////////////////
// APPLICAZIONE
////////////////////////////////////////////////////////
struct TRiga_totale
{
TString80 _descr;
real _qta;
real _acc;
real _impcredito;
real _impdebito;
};
class TEstrattoConto : public TSkeleton_application
{
public:
virtual void main_loop();
};
void TEstrattoConto::main_loop()
{
TEstrattoConto_mask m;
while (m.run() == K_ENTER)
{
TReport_book book;
TEstrattoConto_rep rep;
rep.load("co1300a");
const TDate dataini = m.get_date(F_DATAINI);
const TDate datafin = m.get_date(F_DATAFIN);
const int anno = dataini.year();
// creo recordset dei soci da stampare
TISAM_recordset soci("USE SOCICOOP\nFROM CODCF=#DASOCIO\nTO CODCF=#ASOCIO");
soci.set_var("#DASOCIO", m.get_long(F_DASOCIO));
soci.set_var("#ASOCIO", m.get_long(F_ASOCIO));
for (bool ok = soci.move_first(); ok; ok = soci.move_next())
{
TRecordset * r = rep.recordset();
long codcf = soci.get(SC_CODCF).as_int();
r->set_var("#SOCIO", soci.get("CODCF"));
r->set_var("#ANNO", TVariant(long(anno)));
r->set_var("#DATAINI", dataini);
r->set_var("#DATAFIN", datafin);
// calcolo totali per articolo
TAssoc_array totali_art;
TReport_section& body2 = rep.section('B', 12);
for (bool ok = r->move_first(); ok; ok = r->move_next())
{
TRecordset* rr = rep.section('B', 11).recordset();
for (bool okr = rr->move_first(); okr; okr = rr->move_next())
{
const TString& codart = rr->get(RDOC_CODART).as_string();
TRiga_totale* rt = (TRiga_totale*) totali_art.objptr(codart);
if (rt == NULL)
{
rt = new TRiga_totale;
rt->_descr = rr->get(RDOC_DESCR).as_string();
totali_art.add(codart, (TObject*) rt);
}
// sommare qta e importi
real qta = rr->get(RDOC_QTA).as_real();
rt->_qta += qta;
}
}
// devo passare il recordset al report
TCSV_recordset csv("");
FOR_EACH_ASSOC_OBJECT(totali_art, o, k, it)
{
TRiga_totale& rt = (TRiga_totale&) *it;
csv.new_rec("");
TVariant descr = rt._descr;
csv.set(0, descr);
csv.set(1, rt._qta);
}
body2.set_recordset(&csv);
book.add(rep);
}
book.print_or_preview();
}
}
int co1300(int argc, char* argv[])
{
TEstrattoConto a;
a.run(argc, argv, TR("Stampa estratto conto"));
return 0;
}