Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Nombre del Punto de EntradaDescripción
F998BRLFLT

Tiene el objetivo de que el usuario pueda agregar más filtros a la consulta (Query) de selección de recibos al momento de dar clic en "Aplicar filtrosen el programa TOTVS Recibos.


Parámetros recibidos:

Nombre TipoDescripción
PARAMIXB[1]CExpresión SQL estándar para la consulta (SELECT) que contará los registros a seleccionar.
PARAMIXB[2]CExpresión SQL estándar con filtros por campo que se utilizada para filtrar (WHERE) los registros a seleccionar.
PARAMIXB[3]C

Este punto de entrada se ejecuta en dos partes, este parámetro indica el tipo de consulta (expresión SQL para el Query a la base de datos) que se debe retornar:

"complete" - El punto de entrada debe retornar una expresión de consulta (Query) completa, la cual se utiliza para determinar el total de registros que se visualizaran.

"where" - El punto de entrada solo complementa la expresión de condiciones (WHERE) para la selección de registros a visualizar.


Retorno: 

NombreTipoDescripción
queryNewCRetorna la expresión SQL de la consulta a realizar de acuerdo al tipo de Query; "complete" o "where".

Este punto de entrada sustituye al "F088FLT" de la rutina Cobros Diversos (FINA087A).

Más información:  DT PE F998BRFLT Agregar más filtros al momento de buscar recibos TOTVS Recibo MEX

Ejemplo:

#Include 'Protheus.ch'

User Function F998BRFLT
   Local querySelect := Paramixb[1]
   Local queryWhere := Paramixb[2]
   Local queryOption := Paramixb[3]
   Local whereNew := " AND SEL.EL_RECIBO >= 0040"
   Local queryNew := ""

   IF queryOption == 'complete'
         queryNew := " SELECT " + querySelect + " AS totalreceipts FROM " + RetSqlName("SEL")
         queryNew += +" SEL WHERE " + queryWhere + whereNew
   ELSEIF queryOption == 'where'
         queryNew := queryWhere + whereNew
   ENDIF

RETURN queryNew

F998BRANU

Tiene el objetivo de que el usuario pueda personalizar validaciones para ejecutar la opción de "Anular/Borrar" un recibo de cobro.

Parámetros recibidos:

Nombre Tipo Descripción
PARAMIXB[1]CSerie del recibo
PARAMIXB[2]CNúmero del recibo


Retorno: Flag que indica si procede o no la anulación.

NombreTipoDescripción
aRet[1]LRetorna .T. si procede el Anulado/Borrado o .F. si no se permite.
aRet[2]CMensaje de la causa de rechazo de anulación .

Este punto de entrada sustituye al "FA088OK" de la rutina Cobros Diversos (FINA087A).

Más información:  DT PE F998BRANU Pre-validaciones para la anulación de un recibo en TOTVS Recibo MEX

Ejemplo:

#Include 'Protheus.ch'

User Function F998BRANU
     Local cSerie := Paramixb[1]
     Local cRecibo := Paramixb[2]
     Local cQueryWhere := ""
     Local cQueryFields := ""
     Local cAlias := GetNextAlias()
     Local aRet := {.T.,""}

     cQueryWhere := " FJT_FILIAL = '"+xFilial("FJT")+"' AND FJT_SERIE = '"+cSerie+"' AND FJT_RECIBO = '"+cRecibo+"' "

     cQueryFields := " FJT_SERIE,FJT_RECIBO,FJT_CLIENT,FJT_DTDIGI "

     cQuery := " SELECT "+cQueryFields+" FROM "+ RetSqlName("FJT") + " WHERE "+cQueryWhere

     cQuery := ChangeQuery(cQuery)
     MPSysOpenQuery(cQuery, cAlias)

     WHILE (cAlias)->(!EOF())
          IF (cAlias)->FJT_DTDIGI == DTOS(ddatabase)
               aRet := {.F.,"No se puede eliminar un recibo que haya sido generado el dia de hoy"}
          EndIf
          (cAlias)->(DbSkip())
     END
Return aRet

F998BRMCOL

Tiene el objetivo de que el usuario pueda indicar campos/columnas que se desean incluir en el GRID de visualización de los recibos desde la opción de "Buscar recibos".

Parámetros recibidos:

NombreTipoDescripción
PARAMIXB[1]CSerie del recibo
PARAMIXB[2]CNúmero del recibo
PARAMIXB[3]CCliente

Retorno: Arreglo de configuraciones para agregar a la lista de campos que se pueden visualizar en la lista de recibos.

NombreTipoDescripción
aRet[1]CTítulo de la columna que se desea agregar en la lista de recibos.
aRet[2]CValor del campo, de cualquier tabla en la DB vinculada a los recibos de cobro.
aRet[3]LMostrar marca de seleccionado en la lista de campos a visualizar: .T. = Sí, .F. = No.
aRet[4]C

Nombre para asignar al campo a visualizar, debe ser con estilo de escritura "camelCase".

Comienza con minúscula, puede tener mayúsculas intermedias, no permite espacios ni signos especiales.

Este punto de entrada sustituye al "F088NP2K" de la rutina Cobros Diversos (FINA087A).

Más información:  DT PE F998BRMCOL Incluir columnas a visualizar en el GRID de buscar recibos

Ejemplo:

#Include 'Protheus.ch'

User Function F998BRMCOL
   Local aCampos := {}
   Local cSerie := Paramixb[1]
   Local cReceipt := Paramixb[2]
   Local cClient := Paramixb[3]
   Local cQueryFields As Character
   Local cQueryWhere As Character
   Local cAlias As Character
   Local cQuery As Character
   Local nCont As Numeric
   Local aAux As Array
   cAlias := GetNextAlias()

   //En el arreglo de aCampos se agregan los campos a visualizar
   //aCampos[1] -> Campo se desea visualizar
   //aCampos[2] -> Título que se desea asignar a este campo para que lo visualice el cliente, ya sea fijo o que se obtenga de la SX3
   //aCampos[3] -> .T. si se desea que este marcado por default y .F. si se desea que no este marcado por default en el GRID
   //aCampos[4] -> Nombre de variable par ael campo, con formato camelCase; ejemplo "valorUnit", en vez de Valor Unitario
   aCampos := {{"FJT_VERSAO","VERSION",.T.,"version"},{"FJT_DTDIGI",GetSx3Cache("FJT_DTDIGI","X3_TITULO"),.T.,"dataDigit"}}

   //Se forman las condicionales de la consulta
   cQueryWhere := " FJT_FILIAL = '"+xFilial("FJT")+"' AND FJT_SERIE = '"+cSerie+"' AND FJT_RECIBO = '"+cReceipt+"' AND FJT_CLIENT = '"+cClient+"' "

   //Se estructura la parte de los campos a obtener
   cQueryFields := " SELECT "
   For nCont := 1 to LEN(aCampos)
      cQueryFields += " "+aCampos[nCont][1]+" "
      If nCont != LEN(aCampos)
         cQueryFields += ","
      EndIf
   Next nCont

   //Se estructura todo el query
   cQuery := cQueryFields + " FROM " + RetSqlName("FJT") + " WHERE " + cQueryWhere

   cQuery := ChangeQuery(cQuery)
   MPSysOpenQuery(cQuery, cAlias)

   aAux := {}

   //Se asignan los campos deseados al arreglo a retornar
   WHILE (cAlias)->(!EOF())
      AADD( aAux,{aCampos[1][2],(cAlias)->FJT_VERSAO,aCampos[1][3],aCampos[1][4]})
      AADD( aAux,{aCampos[2][2],(cAlias)->FJT_DTDIGI,aCampos[2][3],aCampos[2][4]})
      (cAlias)->(DbSkip())
   END

Return aAux

F998NROK

Tiene el objetivo de agregar validaciones y mensajes de confirmación o error antes de guardar, de manera que si no cumple las condiciones del punto de entrada no permita el guardado del recibo y  este pueda ser modificado.

Parámetros recibidos: 

NombreTipoDescripción
PARAMIXB[1]JsonObjeto Json que contiene la información de los métodos de pago que contiene el recibo a guardar.
PARAMIXB[2]JsonObjeto Json que contiene la información de los títulos que contiene el recibo a guardar.
PARAMIXB[3]JsonObjeto Json que contiene la información del encabezado del recibo a guardar.

Retorno: 

NombreTipoDescripción
aRet[1][1]BSi el valor obtenido en este campo es .T. se permitirá el guardado del recibo, de lo contrario no se permitirá el guardado del recibo.
aRet[1][2]CMensaje que se visualizara en el aplicativo en caso de que el campo aRet[1][1] sea Falso.

Este punto de entrada sustituye al "A087TUDOK" de la rutina Cobros Diversos (FINA087A).

Más información: DT PE F998NROK Incluir validaciones antes del guardado del recibo desde Nuevo Recibo

Ejemplo:

#INCLUDE "Totvs.ch"
 
/*/{Protheus.doc} F998NROK
Punto de entrada que permite agregar validaciones al recibo antes del guardado
Si retorna un .T. procedera con el guardado del recibo
Si retorna un .F. no continuara con el guardado del recibo
/*/
USER FUNCTION F998NROK()
    Local jFormasPago   := Paramixb[1] //Json que contiene todas las formas de pago del recibo
    Local jTitulos      := Paramixb[2] //Json que contiene todos los titulos que contiene el recibo
    Local jEncabezado   := Paramixb[3] //Json que contiene los datos que conforman el encabezado del recibo
    Local lRet     := .T. As Logical
    Local aRet     := {}  As Array
    Local nCont    As Numeric
    Local cMensaje  := "" As Character
    Local nTipoDoc  As Numeric
    
    //Ejemplo de validaciones en las formas de pago que contiene el recibo
    FOR nCont := 1 TO LEN(jFormasPago)
        nTipoDoc  := AScan(jFormasPago[nCont],{|x|x['property'] == "tipodoc"})
        IF jFormasPago[nCont][nTipoDoc]['value'] == "EF"
            lRet := .F.
            cMensaje := "No se permite guardar recibos con forma de pago tipo EF-Efectivo"
            AADD(aRet,{lRet,cMensaje})
        ENDIF
    NEXT

    /*
    //Ejemplo de validaciones en los titulos que contiene el recibo
    FOR nCont := 1 TO LEN(jTitulos)
        IF jTitulos[nCont]['series'] == "A"
            lRet := .F.
            cMensaje := "No se permite guardar un recibo con un titulo de serie A"
            AADD(aRet,{lRet,cMensaje})
        ENDIF
    NEXT
    */

    /*
    //Ejemplo de validaciones sobre el encabezado del recibo
    IF ALLTRIM(jEncabezado['modalidad']) == "COBRO"
        lRet := .F.
        cMensaje := "No se permite guardar un recibo con una modalidad dde tipo COBRO"
        AADD(aRet,{lRet,cMensaje})
    ENDIF
    */

RETURN aRet

F998NRDCOB

Tiene el objetivo de llenar el campo del Cobrador cuando se seleccione el código del cliente.

Parámetros recibidos: 

NombreTipoDescripción
PARAMIXB[1]CCliente seleccionado.
PARAMIXB[2]CTienda del cliente seleccionado.

Retorno: 

NombreTipoDescripción
cCobradorCRetorna el Cobrador que será colocado en el box del cobrador.

Este punto de entrada sustituye al "F087VLCO" de la rutina Cobros Diversos (FINA087A).

Más información: DT PE F998NRDCOB Llenar el campo del Cobrador cuando seleccione el código del cliente en Nuevo Recibo

Ejemplo:

User Function F998NRDCOB()
Local cCobrador := ""
Local cClient := Paramixb[1]
Local cLoja := Paramixb[2]

dbselectarea("SAR")
("SAR")->(dbGoTop())

    While ("SAR")->(!eof())
        If  xFilial("SAR")== SAR->AR_FILIAL .AND. cClient == SAR->AR_CODCLI .AND. cLoja == SAR->AR_LOJCLI
             cCobrador :=AR_CODCOBR
        EndIf
        ("SAR")->(dbskip())
    EndDo

("SAR")->(dbCloseArea())

Return cCobrador

F998NRMCOL

Tiene el objetivo de agregar más columnas a visualizar en los títulos financieros en la pantalla de Nuevo Recibo.

Parámetros recibidos: 

  •     N/A

Retorno: Arreglo de configuraciones para agregar a la lista de campos que se pueden visualizar en la lista de títulos.

NombreTipoDescripción
aRet[1]CCampo a visualizar en la lista de títulos.
aRet[2]CTítulo de la columna que se desea agregar en la lista de títulos.
aRet[3]LMostrar marca de seleccionado en la lista de campos a visualizar: .T. = Sí, .F. = No.

Este punto de entrada sustituye al "F087COL" de la rutina Cobros Diversos (FINA087A).

Más información:  DT PE F998NRMCOL Agregar más columnas en la lista de títulos por cobrar TOTVS Recibo

Ejemplo:

User Function F998NRMCOL()

Local aCampos := {}


Aadd(aCampos, { "E1_DTACRED","Fecha cred",.T.})

Aadd(aCampos, { "E1_TXMOEDA","TX moneda",.T.}


Return aCampos

F998NRIOFLT 

Tiene el objetivo de agregar más filtros en la selección de registros (Query) que se usa en la pantalla de "Agregar otros títulos".

Parámetros recibidos: 

NombreTipoDescripción
PARAMIXB[1]C

Expresión SQL correspondiente al filtro estándar (Where) de selección (Query) de documentos.


Retorno: 

NombreTipoDescripción
cQueryCExpresión SQL del filtro de selección de documentos. Debe retornar la expresión recibida, complementada con los criterios específicos.

Este punto de entrada sustituye al "F087AFCL" de la rutina Cobros Diversos (FINA087A).

Más información: DT PE F998NRIOFLT Agregar más filtros en el query de Agregar otros títulos TOTVS Recibo

Ejemplo:

User Function F998NRIOFLT()

Local cQuery  := Paramixb[1]

cQuery += " AND E1_VALOR < 2000 "

Return cQuery

F998FLOTIT

Tiene el objetivo de agregar nuevos tipos de títulos a los recibos generados desde la sección de "Nuevo Recibo"

Parámetros recibidos: 

  • N/A

Retorno:

Nombre TipoDescripción
cTiposCCadena que contiene los tipos de títulos adicionales, separados por diagonal ("/").

Este punto de entrada sustituye al "A087TIPTI" de la rutina Cobros Diversos (FINA087A).

Más información: DT PE F998FLOTIT Agregar otros tipos de títulos a los recibos de cobro en TOTVS recibo

Ejemplo:

#INCLUDE "Totvs.ch"
 
User Function F998FLOTIT()
    Local cTipos := ""

    cTipos += "/CC/CN"
 
Return cTipos

F998NRG1

Tiene el objetivo de que se puedan realizar acciones antes de generar los asientos contables.

Parámetros recibidos:

  • N/A

Retorno:

  • N/A

Este punto de entrada sustituye al "FA087GRV" de la rutina Cobros Diversos (FINA087A).

Más información:

Ejemplo: DT PE F998NRG1 Agregar acciones antes de generar asientos contables al grabar un recibo de cobro en TOTVS recibo

#Include 'Protheus.ch'

User Function F998NRG1()

    If MsgYesNo("¿Desea ejecutar el punto de entrada F998NRG1? ", "Confirmar")
        FINR270()
    EndIf

Return

F998NRG2

Tiene el objetivo de que se puedan realizar acciones después de grabar el recibo de cobro.

Parámetros recibidos:

  • N/A

Retorno:

  • N/A

Este punto de entrada sustituye al "FA087SEL" y "FA087BAIXA" de la rutina Cobros Diversos (FINA087A).

Más información: DT PE F998NRG2 Agregar acciones después de grabar el recibo de cobro en TOTVS recibo

Ejemplo:

#Include 'Protheus.ch'

User Function F998NRG2()

    If MsgYesNo("¿Desea ejecutar el punto de entrada F998NRG2? ", "Confirmar")
        Finr087()
    EndIf

Return

F998NRG3

Tiene el objetivo de realizar acciones antes de la generación de Asientos Contables (CT2) y de grabar la tabla de Impuestos/Retenciones (SFE).

Parámetros recibidos:

  • N/A

Retorno:

  • N/A

Este punto de entrada sustituye al "FA087INC" de la rutina de Cobros Diversos (FINA087A).

Más información: DT PE F998NRG3 Agregar acciones antes de asientos contables y de grabar tabla de impuestos/retenciones

Ejemplo:

#Include 'Protheus.ch'

User Function F998NRG3()

    If msgyesno("¿Desea ejecutar el punto de entrada F998NRG3? ", "Confirmar")
        FINR300()
    EndIf

Return

F998GSE1

Tiene el objetivo de actualizar campos creados por el usuario en la tabla de Títulos por Cobrar (SE1), este proceso es realizado antes de finalizar las actualizaciones de la tabla de Títulos por Cobrar.

Parámetros recibidos:

  • N/A

Retorno:

  • N/A

Este punto de entrada sustituye al "F840SE1" de la rutina de Generación de recibos (FINA840).

Más información: DT PE F998GSE1 Permite grabar campos creados por el usuario en la tabla de títulos por cobrar

Ejemplo:

#Include 'Protheus.ch'

User Function F998GSE1()

    SE1->E1_EJEMPLO := .T.

Return

F998MAIL

Tiene el objetivo de actualizar el asunto y el cuerpo del Mail.

Parámetros recibidos:


Nombre Tipo Descripción
PARAMIXB[1]CRepresenta la Serie del Recibo
PARAMIXB[2]CRepresenta el Número del Recibo


Retorno:

Nombre Tipo DescripciónObligatorio

aMail[1]

CRepresenta el asunto del corrreo Si

aMail[2]

CRepresenta el cuerpo del correo Si


Más información:  DT PE F998MAIL Modificar el Asunto y Cuerpo al enviar el Recibo por Mail TOTVS Recibo

Ejemplo:

#Include 'Protheus.ch'


User Function F998MAIL()

    Local cserie   := Paramixb[1]
    Local cRecibo  := Paramixb[2]
    Local cAsunto := "" 
    Local cCuerpo := ""
    Local aMail := {}

    cAsunto := "XML y PDF"

    cCuerpo += "Hola usuario"
    cCuerpo += "<br><br>"
    cCuerpo += "Anexo los archivos XML y PDF del recibo número "+ " <b>" + cserie + "-" + cRecibo+"</b>"
    cCuerpo +=  "<br><br>"
    cCuerpo += "Saludos"
    cCuerpo += "<br><br>"
    cCuerpo += "Empresa SA de CV"

    AADD (aMail,cAsunto)
    AADD (aMail,cCuerpo)


Return aMail


F998IMPREC

Tiene el objetivo de imprimir un recibo en formato PDF personalizado.

Parámetros recibidos:

NombreTipoDescripción
PARAMIXB[1,1]CNombre del archivo XML ya generado con extensión.
PARAMIXB[1,2]CVacío 
PARAMIXB[1,3]CVacío
PARAMIXB[1,4]AArray que contiene la información del recibo (Títulos a cobrar y/o compensar)
[1] Serie título
[2] Número de documento título
[3] Fecha del recibo
[4] Monto del pago
[5] Monto compensación
[6] Cliente
[7] Tienda
PARAMIXB[1,5]C

Numero del recibo.

PARAMIXB[1,6]CSerie del recibo.

Más información:  DT PE F998IMPREC Formato de impresión para los recibos TOTVS Recibo

Ejemplo:

#Include 'Protheus.ch'

User Function F998IMPREC()

     Local aRecibos := PARAMIXB[1]

     MsgAlert("Impresión del recibo "+ aRecibos[6]+aRecibos[5] +" por PE.")

Return


FINCMTC

Tiene el objetivo de personalizar (Longitud y punto de partida de cada campo) dar tratamiento a la cadena ingresada en la lectora de cheques retornando para indicar posición y longitud de los datos contenidos en la cadena, retorna un array con 6 posicionesvalores correspondiente a los campos:

  1. Banco (EF_BANCO).
  2. Agencia (EF_AGENCIA).
  3. Código Postal (EF_POSTAL).
  4. Cheque (EF_NUM) .
  5. Cuenta (EF_CONTA).
  6. Dv DV Cuenta

Parámetros recibidos:

NombreTipoDescripción
PARAMIXB[1,1]CParámetro que contiene Contiene la cadena que se introduce en la ventana de la Lectora de Cheques

Más información:  DT PE FINCMTC Personalización de los datos ingresados en la lectora de cheques TOTVS Recibo

Ejemplo:

#Include 'Protheus.ch'

User Function FINCMTC()

Local cCmc7  := Paramixb[1]
Local nTamBco := 0 As Numeric 
Local nTamAge := 0 As Numeric
Local nTamCta := 0 As Numeric
Local nTamChq := 0 As Numeric
Local nTamCPo := 0 As Numeric
Local aCmc7Tc := {}  As Array

If nTamBco == 0
    nTamBco := TamSX3("EF_BANCO")[1]
Endif
If nTamAge == 0
    nTamAge := TamSX3("EF_AGENCIA")[1]
Endif
If nTamCta == 0
    nTamCta := TamSX3("EF_CONTA")[1]
Endif
If nTamChq == 0
    nTamChq := TamSX3("EF_NUM")[1]
Endif
If nTamCPo == 0
    nTamCPo := TamSX3("EF_POSTAL")[1]
Endif
    //Se agrega al arreglo a retornar una subcadena de la cadena original, configurando la posición inicial de cada campo y su longitud
    //AADD(Array al que se le agregaran los valores, SUBSTR(cadena de la lectora de cheques, numero editable que indica donde empieza la cadena y por ultimo el tamaño del campo))
    Aadd( aCmc7Tc, SubStr(cCmc7,  2,  nTamBco))     //Banco
    Aadd( aCmc7Tc, SubStr(cCmc7,  5,  nTamAge))     //Agencia
    Aadd( aCmc7Tc, SubStr(cCmc7, 10,  nTamCPo))     //Codigo Postal
    Aadd( aCmc7Tc, SubStr(cCmc7, 14,  nTamChq))     //Cheque
    Aadd( aCmc7Tc, SubStr(cCmc7, 20,  nTamCta))     //Cuenta
    Aadd( aCmc7Tc,      SubStr(cCmc7, 30,  1) )        //DV Cuenta

Return aCmc7Tc


...