baa1e34d5c
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 patch 1262 git-svn-id: svn://10.65.10.50/trunk@17631 c028cbd2-c16b-5b4b-a496-9718f37d4682
290 lines
8.0 KiB
C++
Executable File
290 lines
8.0 KiB
C++
Executable File
#include <applicat.h>
|
|
|
|
#include "mglib.h"
|
|
#include "mg4100.h"
|
|
#include "movmag.h"
|
|
#include "rmovmag.h"
|
|
|
|
class TStampa_listamov : public TSkeleton_application
|
|
{
|
|
TStampemg_mask * _mask;
|
|
TForm * _form;
|
|
|
|
int _codicees;
|
|
bool _raggmag;
|
|
TString _daart,_aart,_damag,_amag;
|
|
TDate _dadata,_adata;
|
|
static TToken_string _filtrocausali;
|
|
|
|
protected:
|
|
virtual bool create();
|
|
virtual bool destroy();
|
|
virtual void main_loop();
|
|
void setprint_x_mov();
|
|
void setprint_x_art();
|
|
static bool filtro_causali(const TRelation* r);
|
|
};
|
|
|
|
TToken_string TStampa_listamov::_filtrocausali;
|
|
|
|
bool TStampa_listamov::create()
|
|
{
|
|
open_files(LF_TAB, LF_TABCOM, LF_MOVMAG, LF_RMOVMAG, LF_ANAMAG, LF_UMART, 0);
|
|
_mask = new TStampemg_mask("mg4100");
|
|
return TSkeleton_application::create();
|
|
}
|
|
|
|
bool TStampa_listamov::destroy()
|
|
{
|
|
delete _mask;
|
|
return TSkeleton_application::destroy();
|
|
}
|
|
|
|
bool TStampa_listamov::filtro_causali(const TRelation* r)
|
|
{
|
|
TString16 currcau = r->curr(LF_RMOVMAG).get(RMOVMAG_CODCAUS);
|
|
if (currcau.empty())
|
|
currcau = r->curr(LF_MOVMAG).get(MOVMAG_CODCAUS);
|
|
/*
|
|
TString16 caumag = _filtrocausali.get(0);
|
|
do
|
|
{
|
|
if (caumag==currcau)
|
|
return TRUE;
|
|
caumag = _filtrocausali.get();
|
|
} while (!caumag.empty());
|
|
return FALSE;
|
|
*/
|
|
return _filtrocausali.get_pos(currcau) >= 0;
|
|
}
|
|
|
|
|
|
void TStampa_listamov::main_loop()
|
|
{
|
|
TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG);
|
|
while (_mask->run() == K_ENTER)
|
|
{
|
|
if (_mask->magazz_ini().gestmag(TRUE))
|
|
{
|
|
if (_mask->get(F_ORDINE)[0] == 'A')
|
|
setprint_x_art();
|
|
else
|
|
setprint_x_mov();
|
|
_form->print();
|
|
delete _form;
|
|
}
|
|
} // while true
|
|
}
|
|
|
|
void TStampa_listamov::setprint_x_mov()
|
|
{
|
|
_form = new TForm("mg4100");
|
|
|
|
TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG);
|
|
TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor();
|
|
TString sortexp;
|
|
TString filter,filterart,filtermov;
|
|
|
|
// valuta se va effettuato un fltro su articolo o movs
|
|
if (_mask->get(F_DAARTICOLO).not_empty())
|
|
filterart << "&&(CODART>=\"" << _mask->get(F_DAARTICOLO) << "\")";
|
|
if (_mask->get(F_AARTICOLO).not_empty())
|
|
filterart << "&&(CODART<=\"" << _mask->get(F_AARTICOLO) << "\")";
|
|
if (_mask->get_long(F_DANUM) != 0L)
|
|
filtermov << "&&(NUMREG>=" << _mask->get_long(F_DANUM) ;
|
|
if (_mask->get_long(F_ANUM) != 0L)
|
|
filtermov << "&&(NUMREG<=" << _mask->get_long(F_ANUM) ;
|
|
|
|
if (_mask->get(F_ORDINE)=="D" || filtermov.empty() && !filterart.empty())
|
|
cur.setkey(2);
|
|
else
|
|
cur.setkey(1);
|
|
|
|
TString16 anno(_mask->get(F_ANNOES));
|
|
|
|
if (anno.not_empty())
|
|
filter << '(' << LF_MOVMAG << "->ANNOES==\""<< anno << "\")";
|
|
|
|
const TString8 dadoc(_mask->get(F_DOC1));
|
|
const TString8 adoc(_mask->get(F_DOC2));
|
|
|
|
if (dadoc.full())
|
|
{
|
|
if (filter.not_empty())
|
|
filter << "&&";
|
|
filter << '(' << LF_MOVMAG << "->EX_NUMDOC>=\""<< dadoc << "\")";
|
|
}
|
|
|
|
if (adoc.full())
|
|
{
|
|
if (filter.not_empty())
|
|
filter << "&&";
|
|
filter << '(' << LF_MOVMAG << "->EX_NUMDOC<=\""<< adoc << "\")";
|
|
}
|
|
|
|
long codcf = _mask->get_long(F_CODCF);
|
|
|
|
if (codcf != 0)
|
|
{
|
|
if (filter.not_empty())
|
|
filter << " && ";
|
|
filter << '(' << LF_MOVMAG << "->TIPOCF==\""<< _mask->get(F_TIPOCF) << "\")";
|
|
filter << "&& (" << LF_MOVMAG << "->CODCF==\""<< codcf << "\")";
|
|
}
|
|
|
|
if (_mask->get(F_CAU1).not_empty())
|
|
{
|
|
_filtrocausali.cut(0);
|
|
_filtrocausali.add(_mask->get(F_CAU1));
|
|
if (_mask->get(F_CAU2).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU2));
|
|
if (_mask->get(F_CAU3).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU3));
|
|
if (_mask->get(F_CAU4).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU4));
|
|
if (_mask->get(F_CAU5).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU5));
|
|
if (_mask->get(F_CAU6).not_empty())
|
|
_filtrocausali.add(_mask->get(F_CAU6));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cur.set_filterfunction(filtro_causali);
|
|
}
|
|
darec.zero();
|
|
arec.zero();
|
|
if (_mask->get(F_ORDINE)=="N")
|
|
{
|
|
sortexp = _mask->get_bool(F_INVERTI) ? "NUMREG-|NRIG" : "NUMREG|NRIG" ;
|
|
_form->find_field('B',odd_page,"HEADER_DATA").disable();
|
|
// trova il record iniziale E finale
|
|
if (cur.key() == 1)
|
|
{
|
|
darec.put(RMOVMAG_NUMREG,_mask->get(F_DANUM));
|
|
arec.put(RMOVMAG_NUMREG,_mask->get(F_ANUM));
|
|
filter << filterart;
|
|
} else {
|
|
darec.put(RMOVMAG_CODART,_mask->get(F_DAARTICOLO));
|
|
arec.put(RMOVMAG_CODART,_mask->get(F_AARTICOLO));
|
|
filter << filtermov;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
sortexp.cut(0) << LF_MOVMAG << "->DATAREG" << (_mask->get_bool(F_INVERTI) ? "-" : "") << "|NUMREG|NRIG";
|
|
_form->find_field('B',odd_page,"HEADER_DATA").show();
|
|
// trova il record iniziale E finale
|
|
if (_mask->get(F_DADATA).not_empty())
|
|
filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)>=ANSI(" << '"' << _mask->get_date(F_DADATA)<< "\"))";
|
|
if (_mask->get(F_ADATA).not_empty())
|
|
filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)<=ANSI(" << '"' << _mask->get_date(F_ADATA) << "\"))";
|
|
|
|
if (cur.key() == 1)
|
|
{
|
|
filter << filterart;
|
|
}
|
|
else
|
|
{
|
|
darec.put(RMOVMAG_CODART,_mask->get(F_DAARTICOLO));
|
|
arec.put(RMOVMAG_CODART,_mask->get(F_AARTICOLO));
|
|
}
|
|
}
|
|
|
|
cur.change_order(sortexp);
|
|
if (filter.left(2) == "&&")
|
|
filter = filter.mid(2);
|
|
cur.setfilter(filter,TRUE,1);
|
|
cur.setregion(darec, arec, 0x2);
|
|
}
|
|
|
|
void TStampa_listamov::setprint_x_art()
|
|
{
|
|
_form = new TForm("mg4100b");
|
|
|
|
TRectype darec(LF_RMOVMAG),arec(LF_RMOVMAG);
|
|
TSorted_cursor& cur = (TSorted_cursor& )*_form->cursor();
|
|
|
|
TString sortexp;
|
|
TString filter;
|
|
|
|
TString4 anno(_mask->get(F_ANNOES));
|
|
|
|
if (anno.not_empty())
|
|
filter << '(' << LF_MOVMAG << "->ANNOES==\""<< anno << "\")";
|
|
|
|
long codcf = _mask->get_long(F_CODCF);
|
|
if (codcf != 0)
|
|
{
|
|
if (filter.not_empty())
|
|
filter << " && ";
|
|
filter << '(' << LF_MOVMAG << "->TIPOCF==\""<< _mask->get(F_TIPOCF) << "\")";
|
|
filter << "&& (" << LF_MOVMAG << "->CODCF==\""<< codcf << "\")";
|
|
}
|
|
|
|
|
|
if (_mask->get(F_DAARTICOLO).not_empty())
|
|
filter << "&&(CODART>=\"" << _mask->get(F_DAARTICOLO) << "\")";
|
|
if (_mask->get(F_AARTICOLO).not_empty())
|
|
filter << "&&(CODART<=\"" << _mask->get(F_AARTICOLO) << "\")";
|
|
if (_mask->get(F_CAU1).not_empty())
|
|
{
|
|
_filtrocausali.cut(0);
|
|
_filtrocausali.add(_mask->get(F_CAU1));
|
|
if (_mask->get(F_CAU2).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU2));
|
|
if (_mask->get(F_CAU3).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU3));
|
|
if (_mask->get(F_CAU4).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU4));
|
|
if (_mask->get(F_CAU5).not_empty())
|
|
{
|
|
_filtrocausali.add(_mask->get(F_CAU5));
|
|
if (_mask->get(F_CAU6).not_empty())
|
|
_filtrocausali.add(_mask->get(F_CAU6));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cur.set_filterfunction(filtro_causali);
|
|
}
|
|
darec.zero();
|
|
arec.zero();
|
|
if (_mask->get(F_ORDINE)=="N")
|
|
{
|
|
sortexp="NUMREG|CODART|NRIG";
|
|
// trova il record iniziale E finale
|
|
darec.put(MOVMAG_NUMREG,_mask->get(F_DANUM));
|
|
arec.put(MOVMAG_NUMREG,_mask->get(F_ANUM));
|
|
_form->find_field('B',odd_page,"HEADER_DATA").disable();
|
|
} else {
|
|
sortexp.cut(0) << LF_MOVMAG << "->DATAREG|NUMREG|CODART|NRIG";
|
|
// trova il record iniziale E finale
|
|
if (_mask->get(F_DADATA).not_empty())
|
|
filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)>=ANSI(" << '"' << _mask->get_date(F_DADATA)<< "\"))";
|
|
if (_mask->get(F_ADATA).not_empty())
|
|
filter << "&&(ANSI(" << LF_MOVMAG <<"->DATACOMP)<=ANSI(" << '"' << _mask->get_date(F_ADATA) << "\"))";
|
|
_form->find_field('B',odd_page,"HEADER_DATA").show();
|
|
}
|
|
|
|
cur.change_order(sortexp);
|
|
if (filter.left(2) == "&&")
|
|
filter = filter.mid(2);
|
|
cur.setfilter(filter,TRUE, 1);
|
|
cur.setregion(darec,arec, 0x2);
|
|
}
|
|
|
|
int mg4100(int argc, char* argv[])
|
|
{
|
|
TStampa_listamov a;// derivata da Application e con uso di form
|
|
a.run(argc,argv,TR("Stampa lista movimenti"));
|
|
return 0;
|
|
}
|