#include #include #include #include #include #include "provv.h" #include "pr1300a.h" class TStampa_schedeprovv : public TSkeleton_application { TMask * _m; void riporta_pagamenti(TCursor &cur); protected: virtual bool create(); virtual bool destroy(); virtual void main_loop(); }; bool TStampa_schedeprovv::create() { _m= new TMask ("pr1300a"); return TSkeleton_application::create(); } bool TStampa_schedeprovv::destroy() { delete _m; return TSkeleton_application::destroy(); } void TStampa_schedeprovv::riporta_pagamenti(TCursor &cur) { if (cur.items()==0) return; const TRelation * r=cur.relation(); TProgind barra(cur.items(),"Registro le provvigioni pagate"); for (int c=0; clfile().get_real(PROV_PROVVMAT); if (!val.is_zero() && !r->lfile().get_bool(PROV_SALDATA)) // this should never happen! { r->lfile().reread(_lock); val+=r->lfile().get_real(PROV_PROVVPAG); r->lfile().put(PROV_PROVVPAG,val); r->lfile().put(PROV_PROVVMAT,0); if (val>=r->lfile().get_real(PROV_IMPPROVV)) r->lfile().put(PROV_SALDATA,"X"); r->lfile().rewrite(); } } } void TStampa_schedeprovv::main_loop() { TForm frm("pr1300a"); const int hh = 7; const int fh = 1; const int fl = printer().formlen(); int rows[4]; // Righe orizzontali rows[0] = hh-3; rows[1] = hh; rows[2] = fl-1; rows[3] = 0; frm.genera_intestazioni(odd_page, hh-2); frm.genera_fincatura(odd_page, hh-3, fl-1, rows); while (_m->run()!=K_QUIT) { // filtro e regione if (_m->get(F_FILTRO).not_empty()) { TString filter(PROV_SALDATA); if (_m->get(F_FILTRO)[0]=='P') filter << "==\"X\"" ; else filter << "!=\"X\"" ; frm.cursor()->setfilter(filter); } else frm.cursor()->setfilter(""); TRectype start(LF_PROVV),end(LF_PROVV); if (_m->get(F_DAAGE).not_empty()) start.put(PROV_CODAGE,_m->get(F_DAAGE)); if (_m->get(F_AAGE).not_empty()) end.put(PROV_CODAGE,_m->get(F_AAGE)); frm.cursor()->setregion(start,end); // abilita le sezioni dei totali frm.find_field('B',odd_page,"CLIENTI").show(!_m->get_bool(F_RAGGCLI)); frm.find_field('B',odd_page,"HCLIENTI").show(!_m->get_bool(F_RAGGDOC)); frm.find_field('B',odd_page,"DOCUMENTI").show(!_m->get_bool(F_RAGGDOC)); frm.find_field('B',odd_page,"HDOCUMENTI").show(!_m->get_bool(F_RAGGRATE)); frm.find_field('B',odd_page,"RATEDOC").show(!_m->get_bool(F_RAGGRATE)); frm.print(); if (_m->get(F_DEFINITIVA)[0]=='D') { riporta_pagamenti(*frm.cursor()); } } } int pr1300(int argc, char** argv) { TStampa_schedeprovv a; a.run(argc,argv,"Stampa schede di provvigione"); return 0; }