Files correlati : ve0.exe ve0100n.msk vetbnar.msk Ricompilazione Demo : [ ] Commento : Aggiunto supporto per note articolo git-svn-id: svn://10.65.10.50/branches/R_10_00@21650 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 modulo vendite"));
 | |
|   }
 | |
|   return 0;
 | |
| }
 | |
| 
 |