Files correlati : ve0.exe ve6.exe Ricompilazione Demo : [ ] Commento Cambiata la contabilizzazione per categoria di vendita cliente e categoria merceologica in categoria di vendita articolo e categoria vendita cliente secondo le necessità delle lavanderie. COmunque e nello standard quindi va provato nello standard git-svn-id: svn://10.65.10.50/trunk@19548 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			254 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include "ve0.h"
 | 
						|
 | 
						|
#include <automask.h>
 | 
						|
#include <colors.h>
 | 
						|
#include <modtbapp.h>
 | 
						|
#include <recset.h>
 | 
						|
#include <tabmod.h>
 | 
						|
 | 
						|
#include "../cg/cglib01.h"
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// Applicazione per gestione maschere di modulo
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TVE_tab_mod_app : public TTable_module_application
 | 
						|
{
 | 
						|
};
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// Maschera di gestione tabella CVM: 
 | 
						|
// Condizioni di vendita per categoria e gruppo merceologico
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#include "vetbcvm.h"
 | 
						|
 | 
						|
class TCVM_mask : public TAutomask
 | 
						|
{
 | 
						|
protected:
 | 
						|
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						|
 | 
						|
public:
 | 
						|
  TCVM_mask();
 | 
						|
};
 | 
						|
 | 
						|
TCVM_mask::TCVM_mask() : TAutomask("vetbcvm") 
 | 
						|
{
 | 
						|
  TSheet_field& s = sfield(F_CVM_SHT);
 | 
						|
  s.set_nav_column(F_CVM_SOTTOCONTO, F_CVM_DESCONTO);
 | 
						|
}
 | 
						|
 | 
						|
bool TCVM_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
						|
{
 | 
						|
  switch(o.dlg())
 | 
						|
  {
 | 
						|
  case F_CVM_SHT:
 | 
						|
    switch (e)
 | 
						|
    {
 | 
						|
    case se_query_add:
 | 
						|
    case se_query_del: 
 | 
						|
      return false; // Non sono ammesse aggiunte o cancellazioni
 | 
						|
    case se_notify_modify:
 | 
						|
      {
 | 
						|
        TSheet_field& s = (TSheet_field&)o;
 | 
						|
        TToken_string& row = s.row(jolly);
 | 
						|
        const long sc = row.get_long(s.cid2index(F_CVM_SOTTOCONTO));
 | 
						|
        if (sc > 0) // Colora le righe valide
 | 
						|
          s.set_back_and_fore_color(REQUIRED_BACK_COLOR, NORMAL_COLOR, jolly);
 | 
						|
        else
 | 
						|
          s.set_back_and_fore_color(COLOR_INVALID, COLOR_INVALID, jolly);
 | 
						|
      }
 | 
						|
      break;
 | 
						|
    default: break;
 | 
						|
    }
 | 
						|
  default: break;
 | 
						|
  }
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
class TCVM_tab_app : public TRelation_application
 | 
						|
{
 | 
						|
  TCVM_mask* _msk;
 | 
						|
  TRelation* _rel;
 | 
						|
 | 
						|
protected:
 | 
						|
  int find_cve(TSheet_field& s, const TString& cve) const;
 | 
						|
 | 
						|
public:
 | 
						|
  virtual TMask* get_mask(int) { return _msk; }
 | 
						|
  virtual TRelation* get_relation() const { return _rel; }
 | 
						|
 | 
						|
  virtual bool user_create();
 | 
						|
  virtual bool user_destroy();
 | 
						|
 | 
						|
  virtual void init_query_mode(TMask& m);
 | 
						|
  virtual void init_insert_mode(TMask& m);
 | 
						|
  virtual void init_modify_mode(TMask& m);
 | 
						|
 | 
						|
  virtual int read(TMask& m);
 | 
						|
  virtual int write(const TMask& m);
 | 
						|
  virtual int rewrite(const TMask& m);
 | 
						|
  virtual bool remove();
 | 
						|
}; 
 | 
						|
 | 
						|
void TCVM_tab_app::init_query_mode(TMask& m)
 | 
						|
{
 | 
						|
  m.enable(-2);
 | 
						|
  m.hide(-3);
 | 
						|
}
 | 
						|
 | 
						|
void TCVM_tab_app::init_insert_mode(TMask& m)
 | 
						|
{
 | 
						|
  m.disable(-2);
 | 
						|
  m.show(-3);
 | 
						|
  read(m);
 | 
						|
}
 | 
						|
 | 
						|
void TCVM_tab_app::init_modify_mode(TMask& m)
 | 
						|
{
 | 
						|
  m.disable(-2);
 | 
						|
  m.show(-3);
 | 
						|
}
 | 
						|
 | 
						|
bool TCVM_tab_app::user_create()
 | 
						|
{
 | 
						|
  _rel = new TRelation("CRA");
 | 
						|
  _msk = new TCVM_mask;
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
int TCVM_tab_app::find_cve(TSheet_field& s, const TString& cve) const
 | 
						|
{
 | 
						|
  int mini = 0, maxi = s.items()-1, midi = 0;
 | 
						|
 | 
						|
  TString8 code;
 | 
						|
  while (mini <= maxi)
 | 
						|
  {
 | 
						|
    midi = (mini+maxi) / 2;
 | 
						|
    s.row(midi).get(0, code);
 | 
						|
    const int cmp = code.compare(cve);
 | 
						|
    if (cmp == 0)
 | 
						|
      break;
 | 
						|
    if (cmp > 0)
 | 
						|
      maxi = midi-1;
 | 
						|
    else
 | 
						|
      mini = midi+1;
 | 
						|
  }
 | 
						|
  return code == cve ? midi : -1;
 | 
						|
}
 | 
						|
 | 
						|
int TCVM_tab_app::read(TMask& m)
 | 
						|
{
 | 
						|
  TSheet_field& s = m.sfield(F_CVM_SHT);
 | 
						|
  s.destroy();
 | 
						|
 | 
						|
  const TString& code = m.get(F_CVM_COD);
 | 
						|
  if (code.full())
 | 
						|
  {
 | 
						|
    TISAM_recordset gm("USE CVE");
 | 
						|
    for (bool ok = gm.move_first(); ok; ok = gm.move_next())
 | 
						|
    {
 | 
						|
      TToken_string& row = s.row(-1);
 | 
						|
      row = gm.get("CODTAB").as_string();
 | 
						|
      row.add(gm.get("S0").as_string());
 | 
						|
    }
 | 
						|
  }
 | 
						|
  if (!s.empty())
 | 
						|
  {
 | 
						|
    TISAM_recordset cvm("USE &CVM\nFROM CODTAB=#COD\nTO CODTAB=#COD");
 | 
						|
    cvm.set_var("#COD", code);
 | 
						|
    TString8 cve;
 | 
						|
    for (bool ok = cvm.move_first(); ok; ok = cvm.move_next())
 | 
						|
    {
 | 
						|
      cve = cvm.get("CODTAB[4,5]").as_string();
 | 
						|
      const int i = find_cve(s, cve);
 | 
						|
      if (i >= 0)
 | 
						|
      {
 | 
						|
        const int gr = cvm.get("I0").as_int();
 | 
						|
        const int co = cvm.get("I1").as_int();
 | 
						|
        const long so = cvm.get("I2").as_int();
 | 
						|
        if (so > 0)
 | 
						|
        {
 | 
						|
          TBill zio(gr, co, so);
 | 
						|
          TToken_string& row = s.row(i);
 | 
						|
          zio.add_to(row, 2, 0x2);
 | 
						|
          s.set_back_and_fore_color(REQUIRED_BACK_COLOR, NORMAL_COLOR, i);
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return s.empty() ? _iskeynotfound : NOERR;
 | 
						|
}
 | 
						|
 | 
						|
int TCVM_tab_app::write(const TMask& m)
 | 
						|
{
 | 
						|
  TSheet_field& s = m.sfield(F_CVM_SHT);
 | 
						|
  TModule_table cvm("&CVM");
 | 
						|
  FOR_EACH_SHEET_ROW(s, i, row)
 | 
						|
  {
 | 
						|
    const TBill zio(*row, 2);
 | 
						|
    TString16 code = m.get(F_CVM_COD);
 | 
						|
    code << row->get(0);
 | 
						|
    cvm.put("CODTAB", code);
 | 
						|
    if (zio.ok())
 | 
						|
    {
 | 
						|
      cvm.put("I0", zio.gruppo());
 | 
						|
      cvm.put("I1", zio.conto());
 | 
						|
      cvm.put("I2", zio.sottoconto());
 | 
						|
      cvm.rewrite_write();
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
      cvm.remove();
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return NOERR;
 | 
						|
}
 | 
						|
 | 
						|
int TCVM_tab_app::rewrite(const TMask& m)
 | 
						|
{
 | 
						|
  return write(m);
 | 
						|
}
 | 
						|
 | 
						|
bool TCVM_tab_app::remove()
 | 
						|
{
 | 
						|
  const TString4 code = get_relation()->curr().get("CODTAB");
 | 
						|
  TISAM_recordset cvm("USE &CVM\nFROM CODTAB=#COD\nTO CODTAB=#COD");
 | 
						|
  cvm.set_var("#COD", code);
 | 
						|
  TLocalisamfile& f = cvm.cursor()->file();
 | 
						|
  for (bool ok = cvm.move_first(); ok; ok = cvm.move_next())
 | 
						|
    f.remove();
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
bool TCVM_tab_app::user_destroy()
 | 
						|
{
 | 
						|
  delete _msk;
 | 
						|
  delete _rel;
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// Selettore applicazione per gestione maschere di modulo
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
int ve0600(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TString4 tab = argv[2]; 
 | 
						|
  tab.upper(); tab.strip("&");
 | 
						|
 | 
						|
  if (tab == "CVM")
 | 
						|
  {
 | 
						|
    TCVM_tab_app a;
 | 
						|
    a.run(argc, argv, TR("Conti per categoria e gruppo"));
 | 
						|
  }
 | 
						|
  else
 | 
						|
  {
 | 
						|
    TVE_tab_mod_app a;
 | 
						|
    a.run(argc, argv, TR("Tabelle module vendite"));
 | 
						|
  }
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
 |