diff --git a/ca/ca3100.cpp b/ca/ca3100.cpp
index 1e0290fa3..ca7660024 100755
--- a/ca/ca3100.cpp
+++ b/ca/ca3100.cpp
@@ -138,7 +138,7 @@ TPrint_movimenti_ca_mask::TPrint_movimenti_ca_mask()
 
 class TPrint_movimenti_ca_recordset : public TISAM_recordset
 {
-	int _anno;
+	int _anno, _tipoord;
   TDate _dadata, _adata;
   char _tipomov;
 	long _danumreg, _anumreg;
@@ -164,11 +164,26 @@ bool TPrint_movimenti_ca_recordset::valid_record(const TRelation& rel) const
 	//prima controlla la testata...
   const TRectype& mov = rel.curr(LF_MOVANA);
   
-	const char* datefld = _anno > 0 ? MOVANA_DATACOMP : MOVANA_DATAREG;
-  const TDate data = mov.get(datefld);
-  if (data < _dadata || (_adata.ok() && data > _adata))
-    return false;
-
+  switch (_tipoord)
+  {
+  case 1: //controllo sul numreg
+    {
+      const long numreg = mov.get_long(MOVANA_NUMREG);
+      if (numreg < _danumreg || ( _anumreg >= _danumreg && numreg > _anumreg ))
+        return false;
+    }
+    break;
+  case 2: //controllo sulle date
+    {
+	    const char* datefld = _anno > 0 ? MOVANA_DATACOMP : MOVANA_DATAREG;
+      const TDate data = mov.get(datefld);
+      if (data < _dadata || ( _adata.ok() && data > _adata ))
+        return false;
+    }
+    break;
+  default:
+    break;
+  }
 	const TString& codcaus = mov.get(MOVANA_CODCAUS);
   if (codcaus < _dacaus || (_acaus.not_empty() && codcaus > _acaus))
     return false;
@@ -232,9 +247,22 @@ void TPrint_movimenti_ca_recordset::set_filter(const TPrint_movimenti_ca_mask& m
     _codfas = rel.curr().get(RMOVANA_CODFASE);
   }
 
+  _tipoord = msk.get_int(F_TIPOSTAMPA);
+
+  //stabilisce il tipo di data di ordinamento del recordset
+  _anno = msk.get_int(F_ANNO);
+
+  if (_anno > 0)
+    set_var("#DATAORD", MOVANA_DATACOMP, true);
+  else
+    set_var("#DATAORD", MOVANA_DATAREG, true);
+
   _dadata = msk.get_date(F_DATAINI);
   _adata = msk.get_date(F_DATAFIN);
 
+  _danumreg = msk.get_long(F_NUMEROINI);
+  _anumreg = msk.get_long(F_NUMEROFIN);
+
 	_dacaus = msk.get(F_CAUSALEINI);
 	_acaus = msk.get(F_CAUSALEFIN);
 
@@ -248,8 +276,9 @@ void TPrint_movimenti_ca_recordset::set_filter(const TPrint_movimenti_ca_mask& m
 ////////////////////////////////////////////////////////
 class TPrint_movimenti_ca_rep : public TAnal_report
 {
-	int _anno;
+	int _anno, _tipoord;
   TDate _dadata, _adata;
+  long _danumreg, _anumreg;
 
 protected:
 	virtual bool set_recordset(const TString& sql);
@@ -276,6 +305,16 @@ bool TPrint_movimenti_ca_rep::get_usr_val(const TString& name, TVariant& var) co
 		var.set(_adata);
 		return true;
 	}
+  if (name == "#DANUMREG")
+	{
+		var.set(_danumreg);
+		return true;
+	}
+  if (name == "#ANUMREG")
+	{
+		var.set(_anumreg);
+		return true;
+	}
 	return TAnal_report::get_usr_val(name, var);
 }
 
@@ -288,8 +327,11 @@ bool TPrint_movimenti_ca_rep::set_recordset(const TString& sql)
 void TPrint_movimenti_ca_rep::set_filter(const TPrint_movimenti_ca_mask& msk, int cms_row)
 {
 	_anno = msk.get_int(F_ANNO);
+  _tipoord = msk.get_int(F_TIPOSTAMPA);
   _dadata = msk.get_date(F_DATAINI);
   _adata = msk.get_date(F_DATAFIN);
+  _danumreg = msk.get_long(F_NUMEROINI);
+  _anumreg = msk.get_long(F_NUMEROFIN);
   TPrint_movimenti_ca_recordset* rs = (TPrint_movimenti_ca_recordset*)recordset();
   rs->set_filter(msk, cms_row);
 }
diff --git a/ca/ca3100.uml b/ca/ca3100.uml
index dedc7de97..a7ba442ef 100755
--- a/ca/ca3100.uml
+++ b/ca/ca3100.uml
@@ -94,7 +94,7 @@ END
 NUMBER F_NUMEROINI 7
 BEGIN
   PROMPT 16 6 "Stampa mov. dal numero "
-  USE LF_MOV KEY 1
+  USE LF_MOVANA KEY 1
   INPUT NUMREG F_NUMEROINI
   DISPLAY "Numero@7" NUMREG 
   DISPLAY "Data@10" DATAREG
@@ -111,7 +111,7 @@ BEGIN
   COPY USE F_NUMEROINI
   INPUT NUMREG F_NUMEROFIN
   COPY DISPLAY F_NUMEROINI
-  FLAGS "R"
+  OUTPUT F_NUMEROFIN NUMREG
   NUM_EXPR ((#F_NUMEROFIN==0)||(#F_NUMEROFIN>=#F_NUMEROINI))
   WARNING "Limite superiore errato"
   GROUP 2
@@ -120,7 +120,7 @@ END
 STRING F_CAUSALEINI 3
 BEGIN
   PROMPT 1 8 "Stampa dalla causale     "
-  USE LF_CAUSALI KEY 1
+  USE LF_CAUSALI SELECT MOVIND!=''
   INPUT CODCAUS F_CAUSALEINI
   DISPLAY "Codice causale" CODCAUS
   DISPLAY "Descrizione@50" DESCR
diff --git a/ca/ca3100a.rep b/ca/ca3100a.rep
index f3d1126f3..4a1e9a23c 100755
--- a/ca/ca3100a.rep
+++ b/ca/ca3100a.rep
@@ -1,4 +1,4 @@
-
+<?xml version="1.0" encoding="UTF-8" ?>
 <report libraries="ve1300" name="ca3100a" lpi="8" class="ca3100b">
  <description>Movimenti CA per numero registrazione</description>
  <font face="Courier New" size="8" />
@@ -20,6 +20,16 @@ THEN
   <field x="157" type="Numero" align="right" width="3" pattern="1">
    <source>#REPORT.PAGE</source>
   </field>
+  <field x="10" y="1.25" type="Testo" width="12" pattern="1" text="Dal numero" />
+  <field x="22" y="1.25" type="Numero" width="12" pattern="1">
+   <font face="Courier New" bold="1" size="8" />
+   <source>#DANUMREG</source>
+  </field>
+  <field x="40" y="1.25" type="Testo" width="12" pattern="1" text="Al numero" />
+  <field x="52" y="1.25" type="Numero" width="12" pattern="1">
+   <font face="Courier New" bold="1" size="8" />
+   <source>#ANUMREG</source>
+  </field>
   <field border="2" x="1" y="2.5" type="Linea" width="161" height="0" pattern="1" />
   <field x="1.5" y="3" type="Testo" align="center" width="7" pattern="1" text="N.Reg." />
   <field x="33.5" y="3" type="Testo" align="center" width="10" pattern="1" text="Data Doc." />
diff --git a/ca/ca3100b.rep b/ca/ca3100b.rep
index b47cb80bc..8e1ceb0ba 100755
--- a/ca/ca3100b.rep
+++ b/ca/ca3100b.rep
@@ -1,4 +1,4 @@
-
+<?xml version="1.0" encoding="UTF-8" ?>
 <report libraries="ve1300" name="ca3100b" lpi="8" class="ca3100b">
  <description>Movimenti CA per data</description>
  <font face="Courier New" size="8" />
@@ -194,7 +194,8 @@ MESSAGE ADD,F2.132</postscript>
  </section>
  <section type="Foot" level="3" />
  <sql>USE RMOVANA
-JOIN MOVANA INTO NUMREG==NUMREG</sql>
+JOIN MOVANA INTO NUMREG==NUMREG
+BY MOVANA-&#3E;#DATAORD</sql>
  <prescript description="PRESCRIPT">: SCAMBIA_CAMPI ( F1 F2 -- )
   VARIABLE _X1 \ coordinate del campo F1
   VARIABLE _Y1