Files correlati : Ricompilazione Demo : [ ] Commento : riportata la versione 98.01.05 patch 34 git-svn-id: svn://10.65.10.50/trunk@7409 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <mask.h>
 | 
						|
#include <applicat.h>
 | 
						|
#include <form.h>
 | 
						|
#include <printer.h>
 | 
						|
#include <progind.h>
 | 
						|
 | 
						|
#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();
 | 
						|
  TLocalisamfile& prov = r->lfile();
 | 
						|
  TProgind barra(cur.items(),"Registro le provvigioni pagate");
 | 
						|
  for (int c=0; c<cur.items(); c++)
 | 
						|
  {
 | 
						|
    cur=c;
 | 
						|
    barra.setstatus(c);
 | 
						|
    // stampa definitiva: riporta le provvigioni maturate sulle provv. pagate
 | 
						|
    real provv_pag, pag_pag;
 | 
						|
    provv_pag = prov.get_real(PROV_PROVVMAT);
 | 
						|
    pag_pag   = prov.get_real(PROV_PAGMAT);
 | 
						|
    if (!provv_pag.is_zero() && 
 | 
						|
      !prov.get_bool(PROV_SALDATA)) // this should never happen!
 | 
						|
    {
 | 
						|
      prov.reread(_lock);
 | 
						|
      provv_pag += prov.get_real(PROV_PROVVPAG);
 | 
						|
      pag_pag   += prov.get_real(PROV_PAGATO);
 | 
						|
      prov.put(PROV_PROVVPAG,provv_pag);
 | 
						|
      prov.put(PROV_PROVVMAT,0);
 | 
						|
      prov.put(PROV_PAGATO,pag_pag);
 | 
						|
      prov.put(PROV_PAGMAT,0);
 | 
						|
      if (provv_pag>=prov.get_real(PROV_IMPPROVV))
 | 
						|
        prov.put(PROV_SALDATA,"X");
 | 
						|
      prov.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;
 | 
						|
}
 |