From 276227182d5ee468fb1b5973731d54e1d80aa876 Mon Sep 17 00:00:00 2001
From: alex <alex@c028cbd2-c16b-5b4b-a496-9718f37d4682>
Date: Fri, 1 Apr 2005 11:34:06 +0000
Subject: [PATCH] Patch level         : 2.2 66 Files correlati     :  ca1.exe
 Ricompilazione Demo : [ ] Commento            :

Prima versione tampe anagrafiche


git-svn-id: svn://10.65.10.50/trunk@12891 c028cbd2-c16b-5b4b-a496-9718f37d4682
---
 include/report.cpp | 168 ++++++++++++++++++++++++---------------------
 include/report.h   |   7 +-
 2 files changed, 94 insertions(+), 81 deletions(-)

diff --git a/include/report.cpp b/include/report.cpp
index 040e01318..409505c2f 100755
--- a/include/report.cpp
+++ b/include/report.cpp
@@ -2402,6 +2402,92 @@ bool TReport::do_message(const TVariant& var, FLDMSG_FUNC msg, void* jolly)
   return true;
 }
 
+void TReport::report2mask(TMask & m) const 
+{
+  TVariant var;
+
+  for (int i = m.fields()-1; i >= 0; i--)
+  {
+    TMask_field& f = m.fld(i);
+    const TFieldref* ref = f.field();
+    if (ref != NULL)
+    {
+      const bool is_final = f.in_group(2);
+      TString name = ref->name();
+      if (name[0] != '#')
+        name.insert("#");
+      if (get_usr_val(name, var))
+      {
+        if (is_final)
+        {
+          switch (f.class_id())
+          {
+          case CLASS_CURRENCY_FIELD:
+          case CLASS_REAL_FIELD: 
+            if (var.as_real() == 999999999L)
+              var.set_null();
+            break;
+          case CLASS_DATE_FIELD: 
+            if (var.as_date().year() == 9999)
+              var.set_null();
+            break;
+          default: 
+            if (var.as_string() == "~~~")
+              var.set_null();
+            break;
+          }
+        }
+        if (!var.is_null())
+          f.set(var.as_string());
+      }
+    }
+  }
+}
+
+void TReport::mask2report(const TMask & m)
+{
+  TVariant var;
+  TRecordset* rset = recordset();
+
+  if (rset != NULL && rset->variables().items() == 0)
+    rset = NULL;
+  for (int i = m.fields()-1; i >= 0; i--)
+  {
+    TMask_field& f = m.fld(i);
+    const TFieldref* ref = f.field();
+    if (ref != NULL)
+    {
+      const bool is_final = f.in_group(2);
+      switch (f.class_id())
+      {
+      case CLASS_CURRENCY_FIELD:
+      case CLASS_REAL_FIELD: 
+        var = real(f.get()); 
+        if (var.is_empty())
+          var.set(is_final ? 999999999L : 0L);
+        break;
+      case CLASS_DATE_FIELD: 
+        var = TDate(f.get()); 
+        if (var.is_empty())
+          var.set(TDate(is_final ? 99991231L : 0L));
+        break;
+      default: 
+        var = f.get(); 
+        if (var.is_empty())
+          var.set(is_final ? "~~~" : "");
+        break;
+      }       
+
+      TString name = ref->name();
+      if (name[0] != '#')
+        name.insert("#");
+      set_usr_val(name, var);
+      if (rset != NULL)
+        rset->set_var(name, var);
+    }
+  }
+}
+
 KEY TReport::run_form(const TString& maskname)
 {
   TFilename fname = maskname; fname.ext("msk");
@@ -2409,87 +2495,11 @@ KEY TReport::run_form(const TString& maskname)
   if (fname.custom_path())
   {
     TMask m(maskname);
-    TVariant var;
-    for (int i = m.fields()-1; i >= 0; i--)
-    {
-      TMask_field& f = m.fld(i);
-      const TFieldref* ref = f.field();
-      if (ref != NULL)
-      {
-        const bool is_final = f.in_group(2);
-        TString name = ref->name();
-        if (name[0] != '#')
-          name.insert("#");
-        if (get_usr_val(name, var))
-        {
-          if (is_final)
-          {
-            switch (f.class_id())
-            {
-            case CLASS_CURRENCY_FIELD:
-            case CLASS_REAL_FIELD: 
-              if (var.as_real() == 999999999L)
-                var.set_null();
-              break;
-            case CLASS_DATE_FIELD: 
-              if (var.as_date().year() == 9999)
-                var.set_null();
-              break;
-            default: 
-              if (var.as_string() == "~~~")
-                var.set_null();
-              break;
-            }
-          }
-          if (!var.is_null())
-            f.set(var.as_string());
-        }
-      }
-    }
+
+		report2mask(m);
     key = m.run();
     if (key != K_QUIT && key != K_ESC)
-    {
-      TRecordset* rset = recordset();
-      if (rset != NULL && rset->variables().items() == 0)
-        rset = NULL;
-
-      // Rendi visibili tutte le variabili utente al report
-      for (int i = m.fields()-1; i >= 0; i--)
-      {
-        TMask_field& f = m.fld(i);
-        const TFieldref* ref = f.field();
-        if (ref != NULL)
-        {
-          const bool is_final = f.in_group(2);
-          switch (f.class_id())
-          {
-          case CLASS_CURRENCY_FIELD:
-          case CLASS_REAL_FIELD: 
-            var = real(f.get()); 
-            if (var.is_empty())
-              var.set(is_final ? 999999999L : 0L);
-            break;
-          case CLASS_DATE_FIELD: 
-            var = TDate(f.get()); 
-            if (var.is_empty())
-              var.set(TDate(is_final ? 99991231L : 0L));
-            break;
-          default: 
-            var = f.get(); 
-            if (var.is_empty())
-              var.set(is_final ? "~~~" : "");
-            break;
-          }       
-
-          TString name = ref->name();
-          if (name[0] != '#')
-            name.insert("#");
-          set_usr_val(name, var);
-          if (rset != NULL)
-            rset->set_var(name, var);
-        }
-      }
-    }
+			mask2report(m);      // Rendi visibili tutte le variabili utente al report
   }
   return key;
 }
diff --git a/include/report.h b/include/report.h
index cefcb4c88..ef0c017c7 100755
--- a/include/report.h
+++ b/include/report.h
@@ -533,8 +533,11 @@ public:
 
   int parse_field(const char* code, char& type, int& level, int& id) const;
   TReport_field* field(const char* code);
- 
-  void destroy();
+
+	void report2mask(TMask & m) const;
+	void mask2report(const TMask & m);
+  
+	void destroy();
   TReport();
   virtual ~TReport();
 };