From 0184ad1f8b515a6ab219ab08c194ed66de255b18 Mon Sep 17 00:00:00 2001
From: villa <villa@c028cbd2-c16b-5b4b-a496-9718f37d4682>
Date: Fri, 24 Mar 1995 11:02:15 +0000
Subject: [PATCH] sc1300 (sc1 -2): gestione archivio storico solleciti

git-svn-id: svn://10.65.10.50/trunk@1160 c028cbd2-c16b-5b4b-a496-9718f37d4682
---
 sc/sc1.cpp     |   2 +
 sc/sc1.h       |   1 +
 sc/sc1.url     |   7 +++
 sc/sc1300.cpp  | 121 +++++++++++++++++++++++++++++++++++++++++++++++
 sc/sc1300a.h   |   6 +++
 sc/sc1300a.uml | 126 +++++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 263 insertions(+)
 create mode 100755 sc/sc1300.cpp
 create mode 100755 sc/sc1300a.h
 create mode 100755 sc/sc1300a.uml

diff --git a/sc/sc1.cpp b/sc/sc1.cpp
index 43d901aa2..1fc7c689c 100755
--- a/sc/sc1.cpp
+++ b/sc/sc1.cpp
@@ -11,6 +11,8 @@ int main(int argc,char** argv)
   {
   case 1:
     sc1200(argc,argv); break;
+  case 2:
+    sc1300(argc,argv); break;
   default: 
     sc1100(argc,argv); break;
   }
diff --git a/sc/sc1.h b/sc/sc1.h
index 2a0bb571d..2232523b3 100755
--- a/sc/sc1.h
+++ b/sc/sc1.h
@@ -1,3 +1,4 @@
 
 int sc1100(int argc, char** argv);
 int sc1200(int argc, char** argv);
+int sc1300(int argc, char** argv);
diff --git a/sc/sc1.url b/sc/sc1.url
index 91afa033f..a9ce52300 100755
--- a/sc/sc1.url
+++ b/sc/sc1.url
@@ -8,3 +8,10 @@ MENUBAR MENU_BAR(1)
 MENU MENU_BAR(1)
 	SUBMENU MENU_FILE "~File"
 
+MENUBAR MENU_BAR(2)
+
+MENU MENU_BAR(2)
+	SUBMENU MENU_FILE "~File"
+
+
+
diff --git a/sc/sc1300.cpp b/sc/sc1300.cpp
new file mode 100755
index 000000000..1d83a2fa1
--- /dev/null
+++ b/sc/sc1300.cpp
@@ -0,0 +1,121 @@
+#include <mask.h>
+#include <relapp.h>
+
+#include "sc1.h"            
+#include "sc1300a.h"
+
+class SollecitiStorici_app : public TRelation_application
+{
+  TMask*          _msk;
+  TRelation*      _rel; 
+  
+protected:
+
+  virtual TMask* get_mask(int mode)    { return _msk;}
+  virtual bool changing_mask(int mode) { return FALSE;}
+  virtual TRelation* get_relation() const { return _rel;}
+  virtual bool user_create() ;                         
+  virtual bool user_destroy() ;                        
+  virtual int write(const TMask& m); 
+  
+  static  bool zap_handler(TMask_field& f, KEY k);
+
+  static  SollecitiStorici_app& app() 
+    { return (SollecitiStorici_app&)main_app();}
+
+public:
+  
+  void zap_cliente(const char* c);
+  
+  SollecitiStorici_app()          {}	
+  virtual ~SollecitiStorici_app() {}	
+}; 
+
+
+bool SollecitiStorici_app::user_create()
+{
+  _rel = new TRelation(LF_STOSOLL);  
+  _msk = new TMask("sc1300a");          
+  
+  _msk->set_handler(F_ZAP, zap_handler);
+  set_search_field(F_TIPO);
+
+  return TRUE;
+}
+                         
+bool SollecitiStorici_app::user_destroy()
+{                   
+  delete _rel;
+  delete _msk;
+  
+  return TRUE;
+}                     
+
+bool SollecitiStorici_app::zap_handler(TMask_field& f, KEY k)
+{ 
+  if (k == K_SPACE && !f.mask().get(F_CODICE).empty()) 
+  {
+    if (yesno_box("Si desidera azzerare l'archivio solleciti per "
+                  "il cliente %s?", (const char*)f.mask().get(F_DESCR)))
+    {
+       app().zap_cliente(f.mask().get(F_CODICE));
+       f.mask().stop_run(K_ESC);
+    }
+  }
+  return TRUE;
+}
+
+
+void SollecitiStorici_app::zap_cliente(const char* cod)
+{
+  TLocalisamfile& sr =  _rel->lfile();
+  sr.zero(); sr.put("CODICE", cod);
+  int err  = NOERR;
+  
+  for (err = sr.read(_isgteq); 
+       err == NOERR && sr.get("CODICE") == cod; 
+       err = sr.next())
+    sr.remove();                                   
+}
+
+
+int SollecitiStorici_app::write(const TMask& m)
+{            
+  TLocalisamfile& sr =  _rel->lfile();
+  _rel->save_status();
+  
+  sr.zero(); sr.put("CODICE", m.get(F_CODICE));
+  int err  = NOERR;
+  bool ok = TRUE;
+  
+  TDate data;
+  TDate dmsk(m.get(F_DATA));
+  
+  for (err = sr.read(_isgteq); 
+       err == NOERR && sr.get("CODICE") == m.get(F_CODICE); 
+       err = sr.next())                                   
+  {
+    int tipo = sr.get_int("TIPO");  
+    data = sr.get_date("DATASPED");
+    
+    if (tipo >= m.get_int(F_TIPO) && data <= dmsk)
+    {
+      error_box("Sollecito di grado inferiore ad uno precedente (%s, grado %d)",
+                (const char*)data.string(), tipo);
+      ok = FALSE; 
+      break;
+    }     
+  }
+  _rel->restore_status(); 
+  
+  if (ok) return TRelation_application::write(m);  
+
+  return ok;
+}
+
+int sc1300(int argc, char** argv)
+{
+  SollecitiStorici_app a;
+  a.run(argc, argv, "Archivio Storico Solleciti");
+  return 0;
+}
\ No newline at end of file
diff --git a/sc/sc1300a.h b/sc/sc1300a.h
new file mode 100755
index 000000000..31eb71265
--- /dev/null
+++ b/sc/sc1300a.h
@@ -0,0 +1,6 @@
+#define F_CODICE 101
+#define F_DESCR  102
+#define F_TIPO   103
+#define F_DATA   104
+#define F_SALDO  105 
+#define F_ZAP    106
\ No newline at end of file
diff --git a/sc/sc1300a.uml b/sc/sc1300a.uml
new file mode 100755
index 000000000..5c015f821
--- /dev/null
+++ b/sc/sc1300a.uml
@@ -0,0 +1,126 @@
+#include "sc1300a.h"
+
+TOOLBAR "" 0 20 0 2
+
+// #include <toolbar.h>
+
+BUTTON DLG_SAVEREC 8 2
+BEGIN
+PROMPT -17 -1 "~Registra"
+MESSAGE EXIT,K_SAVE
+END
+
+BUTTON DLG_NEWREC 8 2
+BEGIN
+PROMPT -27 -1 "~Nuovo"
+MESSAGE EXIT,K_INS
+END
+
+BUTTON DLG_DELREC 8 2
+BEGIN
+PROMPT -37 -1 "~Elimina"
+MESSAGE EXIT,K_DEL
+END
+
+BUTTON DLG_FINDREC 8 2
+BEGIN
+PROMPT -47 -1 "Ri~cerca"
+MESSAGE EXIT,K_F9
+END
+
+BUTTON DLG_CANCEL 8 2
+BEGIN
+PROMPT -57 -1 ""
+MESSAGE EXIT,K_ESC
+END
+
+BUTTON DLG_QUIT 8 2
+BEGIN
+PROMPT -67 -1 ""
+MESSAGE EXIT,K_QUIT
+END
+
+BUTTON F_ZAP 10 2
+BEGIN
+PROMPT -77 -1 "Canc. Tutti"
+END
+
+ENDPAGE
+
+PAGE "Archivio Storico Solleciti" -1 -1 78 8
+
+STRING F_CODICE 5
+BEGIN
+  PROMPT 4 2 "Codice               "
+  HELP "Codice del cliente"
+  FIELD LF_STOSOLL->CODICE
+  FLAGS "UR"
+  KEY 1
+  USE LF_CLIFO KEY 1 
+  INPUT TIPOCF "C"
+  INPUT CODCF F_CODICE
+  DISPLAY "Codice" CODCF
+  DISPLAY "Ragione sociale @30" RAGSOC[1,30]
+  DISPLAY "Localita @30" LOCALITACF[1,30]
+  OUTPUT F_CODICE CODCF
+  OUTPUT F_DESCR  RAGSOC
+  CHECKTYPE REQUIRED
+END
+
+STRING F_DESCR 50
+BEGIN
+  PROMPT 4 4 "Ragione sociale      "
+  HELP "Ragione sociale del cliente"
+  USE LF_CLIFO KEY 2
+  INPUT TIPOCF "C"
+  INPUT RAGSOC F_DESCR
+  DISPLAY "Ragione sociale @30" RAGSOC[1,30]
+  DISPLAY "Codice" CODCF
+  DISPLAY "Localita @30" LOCALITACF[1,30]
+  OUTPUT F_CODICE CODCF
+  OUTPUT F_DESCR  RAGSOC
+  CHECKTYPE REQUIRED
+END
+
+                       
+NUMBER F_TIPO 2
+BEGIN
+  PROMPT 4 6 "Grado sollecito      "
+  USE LF_STOSOLL
+  INPUT CODICE F_CODICE
+  INPUT TIPO F_TIPO
+  DISPLAY "Codice" CODICE
+  DISPLAY "Grado" TIPO
+  DISPLAY "Data@10" DATASPED
+  DISPLAY "Saldo@15" SALDO 
+  OUTPUT F_CODICE CODICE
+  OUTPUT F_DATA DATASPED
+  OUTPUT F_SALDO SALDO
+  OUTPUT F_TIPO TIPO
+  HELP "Numero di solleciti gia' inviati"
+  FIELD TIPO 
+  KEY 1       
+  CHECKTYPE REQUIRED
+  WARNING "Grado sollecito obbligatorio"
+  FLAGS "U"
+END
+             
+DATE F_DATA 
+BEGIN 
+  PROMPT 4 8 "Data invio sollecito "
+  HELP "Data di spedizione sollecito"
+  FIELD LF_STOSOLL->DATASPED
+  FLAGS "A"
+END             
+             
+NUMBER F_SALDO 15
+BEGIN
+  PROMPT 4 10 "Importo totale       "
+  HELP "Ammontare del saldo al momento del sollecito"
+  FLAGS "R"
+  PICTURE "."
+  FIELD LF_STOSOLL->SALDO
+END                      
+                       
+ENDPAGE
+ENDMASK