Árvore de páginas

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Servicios

Módulo:

SIGAFIN - Financiero

Función:
RutinaNombre TécnicoFecha
FINA998.PRWTOTVS RECIBO02/08/2022
FINA998A.TLPPTOTVS RECIBO02/08/2022
COMMON-CONFIG.SERVICE.TLPPReglas de negocio02/08/2022
PAYMENTFORM.SERVICE.TLPPControlador para obtener formas de pago02/08/2022
PAYMENTFORM.SERVICE.TLPPServicio para obtener formas de pago02/08/2022
País:Argentina
Ticket:N/A
Requisito/Story/Issue (informe el requisito vinculado):DMINA-16537


02. SITUACIÓN/REQUISITO

Utilizar el punto de entrada FINCMTC, el cual tiene la finalidad de personalizar el punto de partida y longitud de los campos Banco (EF_BANCO), Agencia (EF_AGENCIA), Código Postal (EF_POSTAL), Cheque (EF_NUM), Cuenta (EF_CONTA) y DV Cuenta en la cadena de caracteres que se introducen a través de la lectora de cheques.

Al no existir el punto de entrada, se utilizan las dimensiones estándar definidas en la rutina de funciones genéricas de financiero FINXFIN.PRX:

Posición inicialLongitudDescripción
23Banco
53Agencia
84Código Postal
128Cheque
2010Cuenta
301DV Cuenta

03. SOLUCIÓN

Se activa el uso del punto de entrada FINCMTC que se ejecuta en la rutina FINXFIN.PRX - Funciones genéricas del modulo financiero.

Cuando es seleccionada una Forma de Pago de tipo CH, se muestra una ventana desde la cual se realiza la lectura del cheque, la cadena de caracteres leída se visualiza para confirmar. A continuación se ejecuta el punto de entrada FINCMTC a través del cual se puede personalizar la ubicación y longitud de los campos contenidos en la cadena de caracteres y que son requeridos por la rutina de Recibos.

Para más información sobre los puntos de entrada disponibles consulte el siguiente enlace: 5 - Puntos de entrada disponibles

  1. En el módulo configurador de Protheus (SIGACFG), configurar el parámetro MV_CMC7FIN = "S", el cual indica el uso o no de la lectora CMC7 en Financiero.
  2. Crear la función de usuario FINCMTC para personalizar los campos a tomar de la lectora de cheques.

  3. La función recibe como parámetro la cadena de la lectora de cheques, de esta cadena extraerá los campos requeridos y los asignará a un arreglo de 6 elementos: 
    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.
  4. Dentro del módulo Financiero (SIGAFIN) ejecutar la rutina Actualizaciones | Cuentas por cobrar | TOTVS Recibo.
  5. Ingresar un Nuevo Recibo, llenar los campos de consulta del encabezado y seleccionar un título a cobrar o compensar.
  6. En las Formas de Pago seleccionar en el campo Tipo (EL_TIPO) CH.
  7. Se visualizará la ventana para lectura del cheque.

  8. Al dar clic en Ok en la ventana lectora de cheques, se ejecutará el punto de entrada FINCMTC.
  9. Si los datos son correctos se auto-rellenaran los campos Banco Cheque (EL_BCOCHQ), Agencia Cheque (EL_AGECHQ) y Código postal (EL_POSTAL) de la Forma de Pago.


04. INFORMACIÓN ADICIONAL

DescripciónActualizaciones
Punto de entrada:FINCMTC
Nombre del programa fuente:FINXFIN.PRW
Parámetros recibidos:



NombreTipoDescripción
PARAMIXB[1]CCadena que se introduce en la ventana de la Lectora de Cheques.


Ejemplo := 0<B240002400240123456789ASDFGHJK


Informació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



Respuesta:



NombreTipoDescripciónObligatorio
aCmc7TcAArreglo que debe tener los campos requeridos por la Forma de Pago CH para el recibo de cobro:
  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
Si



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!

La presente solución aplica para versión 12.1.33 o superior, siempre y cuando se tengan las rutinas actualizadas a la fecha de la expedición del issue.


05. ASUNTOS RELACIONADOS

TOTVS Recibo

5 - Puntos de entrada disponibles