Mensajería


Aquí vamos a ver un ejemplo de la colección para la mensajeria.

Primeramente mostramos la colección de avisos con la que recibiríamos un aviso con la recepción de algún mensaje.

<coll name="SMSAvisosSMSr" nostopreplica="true" title="AvisosSMSr" sql="SELECT ID FROM gen_SMS  WHERE IDRECEPTOR=##USERID## AND LEIDO=0" objname="SMS" updateobj="SMS" progid="ASData.CASBasicDataObj" fontsize="8" editwidth="60" editheight="81" autorefresh="true" notify="true" otify_coll="SMSr" notify_counter="true" alternate-counter="true" notify_always="true" notify_title="Mensajes nuevos" notify-refresh="true">
      <group name="General" id="1" />
      <prop name="ID" title="ID" group="1" visible="0" fieldsize="1" size="1" type="N" />
</coll>

Ahora vamos a ver como sería la colección necesaria para poder enviar mensajes.

<coll name="SMS" notab="true" editmask="16" cell-bgcolor="#ffffff" title="SMS" nostopreplica="true" sql="SELECT a.*,
     a.ASUNTO AS MAP_ASUNTO,m1.NOMBRE AS MAP_DESTINATARIO_GRID,
     a.FECHA AS MAP_FECHA, a.HORA AS MAP_HORA,m1.NOMBRE AS MAP_DESTINATARIO
      FROM ##PREF##SMS a 
      left outer join ##PREF##usuarios m on a.IDEMISOR=m.ID
      left outer join ##PREF##usuarios m1 on a.IDRECEPTOR=m1.ID" sort="FECHA DESC,HORA DESC" filter="a.IDEMISOR=##USERID## AND a.ENVIADO=1 and (a.BAJA_ENVIADO=0  or a.BAJA_ENVIADO is null)" objname="SMS" updateobj="SMS" progid="ASData.CASBasicDataObj" fontsize="8" autorefresh="true">
      <group name="General" id="1" />
      <prop name="MODIFICADO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="IDEMISOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" />
      <prop name="ENVIADO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="BAJA_ENVIADO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="LEIDO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="IDRECEPTOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" />
      <frame name="id1" framebox="false" width="100%" align="center" tmargin="2%" />
      <frame name="id2" framebox="false" width="100%" align="left" bgcolor="#005222" />
      <prop name="MAP_ETIQUETA" visible="1" frame="id2" group="1" type="TL" title="MENSAJE" class="etiquetatitulo" labelwidth="23" fontsize="23" line="2" fixed-lines="true" align="center" />
      <prop name="MAP_SALIR" type="B" frame="id1" title="Salir" group="1" visible="1" onchange="Refresh" method="ExecuteNode(salir)" class="botonestandard" />
      <prop name="MAP_ACEPTAR" type="B" frame="id1" title="Aceptar" group="1" visible="1" onchange="Refresh" method="ExecuteNode(aceptar)" class="botonestandard" lmargin="5%" newline="false" />
      <prop name="MAP_DESTINATARIO" visible="1" disableedit="ENVIADO=1" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDRECEPTOR" linkedfield="NOMBRE" showinline="true" class="textoprograma" title="Destinatario:" />
      <prop name="ASUNTO" visible="1" group="1" disableedit="ENVIADO=1" type="T" class="textoprogramaIzquierda" size="9" fixed-text="true" autoformat="false" title="Asunto:" />
      <prop name="FECHA" visible="0" group="1" disableedit="ENVIADO=1" type="D" class="textoprograma" locked="true" title="Fecha:" />
      <prop name="HORA" visible="0" group="1" disableedit="ENVIADO=1" type="T" class="textoprograma" locked="true" title="Hora:" />
      <prop name="MAP_OBSERVACIONES" visible="1" group="1" type="N" class="textoprograma" locked="true" fieldsize="0" size="9" fixed-text="true" autoformat="false" title="Texto:" />
      <prop name="MAP_ELIMINAR" visible="1" group="1" disablevisible="ENVIADO=0" type="NC" class="textoprograma" title="Eliminar" newline="false" rmagin="0%" />
      <prop name="OBSERVACIONES" visible="1" group="1" disableedit="ENVIADO=1" type="T" class="textoprogramaIzquierda" lines="10" fixed-lines="true" width="100%" labelwidth="0" size="400" fixed-text="true" autoformat="false" title="Texto:" />
      <!-- grid -->
      <prop name="MAP_DESTINATARIO_GRID" visible="2" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDRECEPTOR" linkedfield="NOMBRE" showinline="true" class="textoprogramaGrid2" title="Destinatario:" />
      <prop name="MAP_ASUNTO" visible="2" group="1" type="T" class="textoprogramaGrid2" size="9" fixed-text="true" autoformat="false" title="Asunto:" />
      <prop name="MAP_FECHA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Fecha:" />
      <prop name="MAP_HORA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Hora:" />
      <create>
        <action name="runscript">
          <script language="VBScript">
       this("FECHA") = formatearFecha(Now())
       this("HORA") = formatearHora(Now())
      </script>
        </action>
      </create>
      <onchange>
        <field name="MAP_ELIMINAR">
          <action name="runscript">
            <script language="VBScript">
              if this("MAP_ELIMINAR") = 1 then
               this("BAJA_ENVIADO") = 1
               this.Save
              else
               this("BAJA_ENVIADO") = 0
               this.Save
              end if
     </script>
          </action>
        </field>
      </onchange>
      <aceptar>
        <action name="runscript">
          <script language="VBScript">
            EnviarSms
      </script>
        </action>
      </aceptar>
      <salir>
        <action name="runscript">
          <script language="VBScript">
      AppData.FailWithMessage -11888,"##EXIT##"
      </script>
        </action>
      </salir>
    </coll>

La siguiente colección es la necesaria para poder recibir.

<coll name="SMSr" notab="true" editmask="16" cell-bgcolor="#ffffff" title="SMSr" nostopreplica="true" sql="SELECT a.*,
     a.ASUNTO AS MAP_ASUNTO,m.NOMBRE AS MAP_DESTINATARIO_GRID,
     a.FECHA AS MAP_FECHA, a.HORA AS MAP_HORA,m.NOMBRE AS MAP_DESTINATARIO,
     CASE LEIDO 
      WHEN 1 THEN '#FFFFFF' 
      WHEN 0 THEN '#DCDCDC'       
     END AS MAP_COLORVIEW
      FROM ##PREF##SMS a 
      left outer join ##PREF##usuarios m on a.IDEMISOR=m.ID
      left outer join ##PREF##usuarios m1 on a.IDRECEPTOR=m1.ID" filter="a.IDRECEPTOR=##USERID## and (a.BAJA_RECIBIDO=0  or a.BAJA_RECIBIDO is null)" sort="LEIDO asc,FECHA DESC,HORA DESC" objname="SMS" updateobj="SMS" progid="ASData.CASBasicDataObj" fontsize="8" autorefresh="true">
      <group name="General" id="1" />
      <prop name="MODIFICADO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="IDEMISOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" />
      <prop name="ENVIADO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="BAJA_RECIBIDO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="LEIDO" group="1" size="10" fieldsize="10" type="N" visible="0" />
      <prop name="IDRECEPTOR" group="1" size="10" fieldsize="10" type="N" visible="0" mapcol="Usuarios" mapfld="ID" />
      <frame name="id1" framebox="false" width="100%" align="center" tmargin="2%" />
      <frame name="id2" framebox="false" width="100%" align="left" bgcolor="#005222" />
      <prop name="MAP_ETIQUETA" visible="1" frame="id2" group="1" type="TL" title="MENSAJE" class="etiquetatitulo" labelwidth="23" fontsize="23" line="2" fixed-lines="true" align="center" />
      <prop name="MAP_SALIR" type="B" frame="id1" title="Salir" group="1" visible="1" onchange="Refresh" method="ExecuteNode(salir)" class="botonestandard" />
      <prop name="MAP_DESTINATARIO" visible="1" locked="true" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDEMISOR" linkedfield="NOMBRE" showinline="true" class="textoprograma" title="De:" />
      <prop name="ASUNTO" visible="1" group="1" locked="true" type="T" class="textoprogramaIzquierda" size="9" fixed-text="true" autoformat="false" title="Asunto:" />
      <prop name="FECHA" visible="0" group="1" type="D" class="textoprograma" locked="true" title="Fecha:" />
      <prop name="MAP_COLORVIEW" visible="0" group="1" colorview="true" type="T" class="textoprograma" locked="true" title="Fecha:" />
      <prop name="HORA" visible="0" group="1" type="T" class="textoprograma" locked="true" title="Hora:" />
      <prop name="MAP_OBSERVACIONES" visible="1" group="1" type="N" class="textoprograma" locked="true" fieldsize="0" size="9" fixed-text="true" autoformat="false" title="Texto:" />
      <prop name="MAP_ELIMINAR" visible="1" group="1" type="NC" class="textoprograma" title="Eliminar" newline="false" rmagin="0%" />
      <prop name="OBSERVACIONES" locked="true" visible="1" group="1" type="T" class="textoprogramaIzquierda" lines="10" fixed-lines="true" width="100%" labelwidth="0" size="400" fixed-text="true" autoformat="false" title="Texto:" />
      <!-- grid -->
      <prop name="MAP_DESTINATARIO_GRID" visible="2" tmargin="2%" autofocus="true" group="1" type="T" linkedto="IDEMISOR" linkedfield="NOMBRE" showinline="true" class="textoprogramaGrid2" title="De:" />
      <prop name="MAP_ASUNTO" visible="2" group="1" type="T" class="textoprogramaGrid2" size="9" fixed-text="true" autoformat="false" title="Asunto:" />
      <prop name="MAP_FECHA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Fecha:" />
      <prop name="MAP_HORA" visible="2" group="1" type="T" class="textoprogramaGrid2" locked="true" title="Hora:" />
      <salir>
        <action name="runscript">
          <script language="VBScript">
           this("LEIDO") = 1
      this.Save
      if this("BAJA_RECIBIDO") = 1 then
       a=Appdata.userinterface.MsgBox ("El mensaje sera Eliminado,¿Esta seguros?","¡ATENCION!",4)
    if a=6 then
        AppData.FailWithMessage -11888,"##EXIT##" 
     end if
   else
    AppData.FailWithMessage -11888,"##EXIT##"
   end if
      AppData.FailWithMessage -11888,"##EXIT##"
      </script>
        </action>
      </salir>
      <onchange>
        <field name="MAP_ELIMINAR">
          <action name="runscript">
            <script language="VBScript">
              if this("MAP_ELIMINAR") = 1 then
               this("BAJA_RECIBIDO") = 1
               this.Save
              else
               this("BAJA_RECIBIDO") = 0
               this.Save
              end if
     </script>
          </action>
        </field>
      </onchange>
    </coll>