Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


...

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 := ""

...

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'

...

   //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

...

   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

...

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

...

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.}

...

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()

...

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

...

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

...

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

...

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'

...

    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)

...

Tiene el objetivo de imprimir un recibo en formato PDF personalizado (El recibo en formato PDF debe quedar con el mismo nombre del archivo XML y en la misma ruta, en el caso de que sea enviado por email).

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
     Local cDir := &(SuperGetmv( "MV_CFDRECP" , .F. , "GetSrvProfString('startpath','')+'\cfd\recpagos\'" ))
     Local cName := Replace(aRecibos[1][1], ".xml", ".pdf" )
     Local cRuta := "C:\Ambientes\2210\ARG\protheus_data"+cDir

...

    
    ShellExecute("Open", cName+".pdf"),"",cRuta,1)   //Función para abrir archivo PDF — Esta función ocupa la ruta completa del archivo.
    

Return

IMPORTANTE

  • El parámetro recibido PARAMIXB[1,1], contiene el nombre del archivo XML ya generado con extensión, este debe de ser usado para generar el nombre del recibo en formato PDF.
    Considerar que ambos archivos XML y PDF deben ubicarse en la misma ruta y tener el mismo nombre.
  • La ruta para el guardado de los Recibos se configura para México en el parámetro MV_CFDRECP de lo contrario se debe de guardar en la ruta ""\system\cfd\recpagos\",
    la cual debe ser referenciada de la siguiente forma: "GetSrvProfString('startpath','')+'\cfd\recpagos\'".
    En esta ruta se validará la existencia del archivo, si el archivo no se encuentra en esta ruta el sistema alertará que no se encontro el archivo PDF.
  • El PE F998IMPREC debe de abrir el Archivo PDF creado previamente.

...

Tiene el objetivo de dar tratamiento a la cadena ingresada en la lectora de cheques para indicar posición y longitud de los datos contenidos en la cadena, retorna un array con 6 valores 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 Cuenta

Parámetros recibidos:

NombreTipoDescripción
PARAMIXB[1,1]CContiene la cadena que se introduce en la ventana de la Lectora de Cheques

Ejemplo := 0<B240002400240123456789ASDFGHJK

Informações
titleInformación

Cuando se usa una lectora de cheques se agrega un cero y un signo menor que (<) por lo que en caso de informar los valores manualmente, deberá asegurarse de que estos caracteres también sean indicados al inicio antes de la información del cheque.

0<B240002400240123456789ASDFGHJK

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

IMPORTANTE: Este punto de entrada es opcional de lo contrario la Lectora de cheques tomara las siguientes longitudes 

CampoLongitud
Banco3
Agencia3
Codigo Postal4
Cheque8
Cuenta10
DV Cuenta1

...

Tiene el objetivo de retornar una cadena de caracteres con el formato de un cheque y ser visualizado en la "Lectora De Cheque".

Parámetros recibidos:

  • N/A

Más información:  695246_MMI-5510_DT_Punto_de_Entrada_FINLRCHQ_ARG

Ejemplo:

#Include 'Protheus.ch'

...

Return cChq

...

Aviso
titleImportante

Este PE se encuentra deshabilitado, para personalizar la obligatoriedad del campo Modalidad en el encabezado del recibo deberá configurarla directamente en el campo FJT_NATURE a través del configurador en el habilitando el campo Obligat. Usuario.

Tiene el objetivo de personalizar la obligatoriedad del campo Modalidad en el encabezado del recibo y esta supliendo al punto de entrada A087NATVAZ de la rutina FINA087A.

Parámetros recibos:

  • N/A

Más información: DT PE F998NATVAZ Validación obligatoriedad de campo Modalidad Totvs Recibos PER

Ejemplo:

#INCLUDE "Totvs.ch"
 
User Function F998NATVAZ()
    Local lRequired

    lRequired := .F. // Retorna .T. si el campo Modalidad se requiere como obligatorio , retorna .F. si el campo Modalidad no es obligatorio.
     
Return lRequired

...

Tiene el objetivo de que el usuario pueda indicar columnas y valores que se desean incluir en el GRID de visualización de las formas de pago al momento de visualizar un recibo a detalle desde "Buscar recibos".

  1. Crear la función de usuario F998VISFP para agregar columnas e información que se desea visualizar en el GRID de las formas de pago al momento de visualizar el recibo a detalle desde la opción de "Buscar recibo".
    - La rutina efectuará las validaciones correspondientes y debe retornar un objeto con las columnas y los valores determinados por el usuario, para agregar al GRID.
  2. Dentro del módulo Financiero ejecutar la rutina TOTVS Recibo (Actualizaciones | Cuentas por cobrar).
  3. En la sección Buscar recibo, especifique los criterios de consulta.
  4. Aplicar el filtro y posicionarse en el recibo a visualizar.
  5. Al momento de dar clic en "Visualizar" el punto de entrada F998VISFP será ejecutado.
  6. Haga clic en el ícono con la imagen del engrane que se encuentra a la derecha de las formas de pago.
  7. En la lista de campos a visualizar serán agregados los definidos por el usuario a través del punto de entrada.
  8. Seleccione y deseleccione los campos requeridos, a continuación, confirme.
  9. Se visualizarán las columnas e información de acuerdo a los campos seleccionados.
Parámetros recibidos:

No aplica

Respuesta:

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

NombreTipoDescripciónObligatorio
aRet[1]CNombre del campo a buscar. Ejemplo (EL_TIPODOC)Si
aRet[2]CNombre que se desea colocar a la columna y este sea visible en el GRID, El nombre puede ser fijo u obtener por medio de la SX3.Si
aRet[3]LMostrar marca de seleccionado en la lista de campos a visualizar:  .T. = Sí,  .F. = No.Si
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.

Si

EJEMPLO: 

#Include 'Protheus.ch'

User Function F998VISFP 
    Local aCampos   := {} 

...

Return aCampos

Puntos de entrada en MVC (Estándares)

...

ID DEL PUNTO DE ENTRADA

...

MOMENTO DE EXECUÇÃO DO PONTO DE ENTRADA

...

MODELPRE

...

Antes de la alteración de cualquier campo del modelo.
Parámetros recibidos:

1     O        Objeto del formulario ó del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
Requiere un retorno lógico.
 

...

MODELPOS

...

En la validación total del modelo
Parámetros recibidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
Requiere un retorno lógico.

...

FORMPRE

...

Antes de la alteración de cualquier campo del formulario.

Parámetros recibidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
Requiere un retorno lógico.

...

FORMPOS

...

En la validación total del formulario.

Parámetros recibidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
Requiere un retorno lógico.

...

FORMLINEPRE

...

Antes de la alteración de la línea del formulario FWFORMGRID.
Parámetros recibidos:

1     O        Objeto del formulario o del modelo, conforme al caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.
4     N        Numero de linea del FWFORMGRID
5     C        Acción del FWFORMGRID
6     C        Id del campo

Retorno:
Requiere un retorno lógico.

...

FORMLINEPOS

...

En la validación total de la línea del formulario  FWFORMGRID.
Parámetros recibidos:

1     O        Objeto do formulário ou do modelo, conforme o caso
2     C        ID do local de execução do ponto de entrada
3     C        ID do formulário
4     N        Número da Linha da FWFORMGRID

Retorno:
Requiere un retorno lógico.

...

MODELCOMMITTTS

...

Despúes de la grabación total del modelo y dentro de la transacción.

Parámetros Recibidos:

1     O        Objeto del formulario  del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
No espera retorno.

...

MODELCOMMITNTTS

...

Después de la grabación total del modelo y fuera de la transacción.

Parámetros recibidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
No espera retorno

...

FORMCOMMITTTSPRE

...

Antes da gravação da tabela do formulário.

Parâmetros Recebidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.
4     L        Si es .T. indica nuevo registro (inclusión) si es .F. registro ya existente (Alteración/ Exclusión)

Retorno:
No espera retorno.

...

FORMCOMMITTTSPOS

...

Después de la grabación de la tabla del formulario.

Parâmetros Recebidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.
4     L        Si es .T. indica nuevo registro (inclusión) si es .F. registro ya existente (Alteración/ Exclusión)

Retorno:
No espera retorno.

...

MODELCANCEL

...

El botón de cancelar.

Parámetros recibidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
No espera retorno.

...

BUTTONBAR

...

Incluir botones en el  ControlBar.

Para crear los botones se debe retornar un array bidimensional con la siguiente estructura de cada ítem:

1     C        Titulo para el botón.
2     C        Nombre del Bitmap para mostrar.
3     B        CodeBlock a ser ejecutado.
4     C        ToolTip (Opcional)

Parâmetros Recebidos:

1     O        Objeto del formulario o del modelo, conforme el caso.
2     C        ID del local de ejecución del punto de entrada.
3     C        ID del formulario.

Retorno:
Array con la estructura pre-definida.

Campos de validaciones para el punto de entrada 

Generales:

  • EL_LOJA = Tienda del cliente.
  • EL_LOJORIG = Tienda original.
  • EL_TIPO = Tipo de título.
  • EL_BCOCHQ = Banco Cheque.

México:

  • EL_CTABEN = Cuenta beneficiario.
  • EL_CTAORD = Cuenta ord.
  • EL_FORPGO = Forma de pago.
  • EL_HRPAGO = Hora de pago.

Perú:

  • EL_TIPODOC = Tipo de documento.

Sentencia When

General:

  • EL_PREFIXO = Prefijo.
  • EL_TPCRED = Tipo de crédito.

Argentina/Colombia

  • EL_TPCRED = Tipo de crédito.

Chile/Perú

  • EL_DIACTB = Cod. diario.

México

  • EL_CEPCAD = Cadena CEP.
  • EL_CEPCER = Certificado CEP.
  • EL_CEPSEL = Sello CEP.
  • EL_CEPTIP = Tipo CEP.
  • EL_CTABEN = Cuenta beneficiario.
  • EL_CTAORD = Cuenta ord.
  • EL_RFCEMI = RFC Emisor.
  • EL_TPCRED = Tipo de crédito.

Ejemplo de punto de entrada:

...

A continuación se presentan los puntos de entrada disponibles dentro de la rutina FINA998 así como los equivalentes que se desarrollaron para realizar procesos ya existentes en otras rutinas.