c434cad322
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 650 git-svn-id: svn://10.65.10.50/trunk@14148 c028cbd2-c16b-5b4b-a496-9718f37d4682
260 lines
8.1 KiB
C++
Executable File
260 lines
8.1 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <fraction.h>
|
|
|
|
#include "mglib.h"
|
|
#include "mg3500.h"
|
|
#include "mg3frm.h"
|
|
#include "../cg/cglib01.h"
|
|
|
|
// mg3500 Stampa
|
|
|
|
class TForm_storgiac : public TForm_stampemg
|
|
{
|
|
TSorted_cursor * _sortcur;
|
|
bool _use_alternate_cursor;
|
|
TString16 _user1;
|
|
|
|
public:
|
|
void use_alternate_cursor(const bool b = TRUE) { _use_alternate_cursor = b; }
|
|
|
|
void set_description_field(const char* u) { _user1 = u; }
|
|
|
|
virtual TCursor* cursor() const ;
|
|
virtual bool validate(TForm_item &cf, TToken_string &s);
|
|
|
|
TForm_storgiac(const char *name,const char *code) ;
|
|
virtual ~TForm_storgiac();
|
|
};
|
|
|
|
TCursor* TForm_storgiac::cursor() const
|
|
{
|
|
if (_use_alternate_cursor) // Se e' settata la stampa per ragg. fisc ritorna il cursore appropriato
|
|
return (TCursor*)_sortcur;
|
|
return TForm_stampemg::cursor();
|
|
}
|
|
|
|
bool TForm_storgiac::validate(TForm_item &cf, TToken_string &s)
|
|
{
|
|
const TString80 cmd = s.get(0);
|
|
if (cmd == "_FRACTION_MULT")
|
|
{
|
|
const TString16 id1 = s.get();
|
|
const TString16 id2 = s.get();
|
|
|
|
const fraction f1 = cf.find_field(id1).get();
|
|
const fraction f2 = cf.find_field(id2).get();
|
|
const real m = f1 * f2;
|
|
cf.set(m.string());
|
|
return true;
|
|
}
|
|
if (cmd == "_USER")
|
|
{
|
|
const TFixed_string subcode = s.get();
|
|
|
|
if (subcode == "DESCR")
|
|
{
|
|
if (_user1.blank())
|
|
_user1 = ANAMAG_DESCR;
|
|
const TString& desc = relation()->curr(LF_ANAMAG).get(_user1);
|
|
cf.set(desc);
|
|
return true;
|
|
}
|
|
}
|
|
return TForm_stampemg::validate(cf, s);
|
|
}
|
|
|
|
TForm_storgiac::TForm_storgiac(const char *name,const char *code) :
|
|
TForm_stampemg(name,code)
|
|
{
|
|
_use_alternate_cursor = FALSE;
|
|
_sortcur = new TSorted_cursor(relation(),"RAGGFIS|CODART");
|
|
}
|
|
|
|
TForm_storgiac::~TForm_storgiac()
|
|
{
|
|
delete _sortcur;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
// Applicazione
|
|
/////////////////////////////////////////////////////
|
|
|
|
class TStampa_storgiac : public TSkeleton_application
|
|
{
|
|
TArray * _files;
|
|
TStampemg_mask * _mask;
|
|
TCursor * _cur;
|
|
TForm_storgiac * _form; // to be moved into TPrint_application
|
|
|
|
protected:
|
|
virtual bool create();
|
|
virtual bool destroy();
|
|
virtual void main_loop();
|
|
virtual void set_def_valuta(TForm_storgiac & f) {}
|
|
|
|
public:
|
|
TStampa_storgiac() {}
|
|
virtual ~TStampa_storgiac() {};
|
|
};
|
|
|
|
bool TStampa_storgiac::create()
|
|
{
|
|
_mask = new TStampemg_mask("mg3500");
|
|
|
|
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
|
|
|
if (prassid.get_bool("CHK_USER", "ve", 1))
|
|
{
|
|
const TString& user1 = prassid.get("PROMPT_USER", "ve", 1);
|
|
|
|
_mask->field(F_DAUSR).set_prompt(user1);
|
|
_mask->show(F_DAUSR); _mask->show(F_AUSR);
|
|
}
|
|
|
|
return TSkeleton_application::create();
|
|
}
|
|
|
|
bool TStampa_storgiac::destroy()
|
|
{
|
|
delete _mask;
|
|
return TSkeleton_application::destroy();
|
|
}
|
|
|
|
|
|
// ORDINAMENTO
|
|
|
|
void TStampa_storgiac::main_loop()
|
|
{
|
|
while (_mask->run() == K_ENTER)
|
|
{
|
|
if (_mask->magazz_ini().gestmag(TRUE))
|
|
{
|
|
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
|
|
TString cfilter,joinexp, espr;
|
|
|
|
cfilter.format("%d->NRIGA!=0", LF_STOMAG); //Considera l'articolo solo se ha almeno una riga di storico...
|
|
TString16 es ; es.format("\"%04d\"", _mask->get_int(F_ANNOES));
|
|
joinexp << "ANNOESRIF==" << es << "|CODART==CODART";
|
|
|
|
_form = new TForm_storgiac("mg3500", "");
|
|
_cur = _form->cursor();
|
|
|
|
const char ordine = _mask->get(F_ORDINE)[0];
|
|
TString sortexp;
|
|
|
|
switch (ordine)
|
|
{
|
|
case 'C':
|
|
_cur->setkey(1); sortexp = ANAMAG_CODART;
|
|
darec.put("CODART",_mask->get(F_DAART));
|
|
arec.put("CODART",_mask->get(F_AART));
|
|
_form->find_field('B',odd_page,"H_CATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_CATMER").hide();
|
|
_form->find_field('B',odd_page,"H_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"GRUPPI_SCATMER").setcondition("CODART[1,1]",_strexpr);
|
|
break;
|
|
case 'D':
|
|
_cur->setkey(2); sortexp = ANAMAG_DESCR;
|
|
darec.put("DESCR",_mask->get(F_DADES));
|
|
arec.put("DESCR",_mask->get(F_ADES));
|
|
_form->find_field('B',odd_page,"H_CATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_CATMER").hide();
|
|
_form->find_field('B',odd_page,"H_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"GRUPPI_SCATMER").setcondition("CODART[1,1]",_strexpr);
|
|
break;
|
|
case 'S':
|
|
case 'M':
|
|
{
|
|
TString16 m1,m2;
|
|
m1 = _mask->get(F_DAGRMERC);
|
|
m2 = _mask->get(F_AGRMERC);
|
|
if (ordine == 'S')
|
|
{
|
|
m1 << _mask->get(F_DASGRMERC);
|
|
m2 << _mask->get(F_ASGRMERC);
|
|
m1.trim();
|
|
m2.trim();
|
|
}
|
|
if (m2.empty() && _mask->get(F_AART).not_empty())
|
|
m2.fill('\254',5);
|
|
_cur->setkey(3); sortexp = ANAMAG_GRMERC;
|
|
darec.put("GRMERC", m1);
|
|
darec.put("CODART",_mask->get(F_DAART));
|
|
arec.put("GRMERC", m2);
|
|
arec.put("CODART",_mask->get(F_AART));
|
|
_form->find_field('B',odd_page,"H_CATMER").show();
|
|
_form->find_field('B',odd_page,"TOT_CATMER").show();
|
|
if (ordine == 'S')
|
|
{
|
|
_form->find_field('B',odd_page,"H_SCATMER").show();
|
|
_form->find_field('B',odd_page,"TOT_SCATMER").show();
|
|
}
|
|
else
|
|
{
|
|
_form->find_field('B',odd_page,"H_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"GRUPPI_SCATMER").setcondition("CODART[1,1]",_strexpr);
|
|
}
|
|
_form->set_ordering(mg_cat_merc);
|
|
}
|
|
break;
|
|
case 'R':
|
|
_form->set_ordering(mg_ragg_fisc);// Setta la subsection in modo da raggruppare per RAGGFIS
|
|
_form->use_alternate_cursor();
|
|
_cur = _form->cursor();
|
|
_cur->setkey(1); sortexp = ANAMAG_CODART;
|
|
_form->find_field('B',odd_page,"H_CATMER").show();
|
|
_form->find_field('B',odd_page,"TOT_CATMER").show();
|
|
_form->find_field('B',odd_page,"GRUPPI_CATMER").setcondition("RAGGFIS",_strexpr);
|
|
_form->find_field('B',odd_page,"H_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"GRUPPI_SCATMER").setcondition("RAGGFIS",_strexpr);
|
|
cfilter.format("STR(%d->NRIGA!=0)", LF_STOMAG); //Considera l'articolo solo se ha almeno una riga di storico...
|
|
if (_mask->get(F_DARAGGFIS).full())
|
|
cfilter << "&&(RAGGFIS>=\"" << _mask->get(F_DARAGGFIS) <<"\")";
|
|
if (_mask->get(F_ARAGGFIS).full())
|
|
cfilter << "&&(RAGGFIS<=\"" << _mask->get(F_ARAGGFIS) << "\")";
|
|
break;
|
|
case 'P':
|
|
_cur->setkey(1); sortexp = ANAMAG_USER1;
|
|
_form->find_field('B',odd_page,"H_CATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_CATMER").hide();
|
|
_form->find_field('B',odd_page,"H_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"TOT_SCATMER").hide();
|
|
_form->find_field('B',odd_page,"GRUPPI_SCATMER").setcondition("CODART[1,1]",_strexpr);
|
|
cfilter.format("STR(%d->NRIGA!=0)", LF_STOMAG); //Considera l'articolo solo se ha almeno una riga di storico...
|
|
if (_mask->get(F_DAUSR).full())
|
|
cfilter << "&&(USER1>=\"" << _mask->get(F_DAUSR) << "\")";
|
|
if (_mask->get(F_AUSR).full())
|
|
cfilter << "&&(USER1<=\"" << _mask->get(F_AUSR) << "~\")";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
TEsercizi_contabili esercizi;
|
|
const int cod_es_prec = esercizi.pred(_mask->get_int(F_ANNOES));
|
|
TString16 es_prec ; es_prec.format("%04d", cod_es_prec);
|
|
|
|
_form->find_field('H',odd_page,4).set(es_prec);
|
|
_cur->relation()->replace(new TLocalisamfile(LF_STOMAG),1,joinexp);
|
|
_cur->setfilter(cfilter, true);
|
|
_cur->setregion(darec,arec);
|
|
((TSorted_cursor*)_cur)->change_order(sortexp);
|
|
set_def_valuta(*_form);
|
|
_form->print();
|
|
delete _form;
|
|
}
|
|
} // while true
|
|
}
|
|
|
|
int mg3500(int argc, char* argv[])
|
|
{
|
|
TStampa_storgiac a;
|
|
a.run(argc,argv,TR("Stampa storico rimanenze"));
|
|
return 0;
|
|
}
|