Versões comparadas

Chave

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

...

Informações
titleUso de MaIntBxCr en rutinas estandarizadas

La función MaIntBxCr() también se utiliza en rutinas estándar del sistema, como por ejemplo en el Documento de entrada (MATA103), que la utiliza para hacer efectiva compensaciones automáticas:

  • Por medio del parámetro MV_CMPDEVV es posible configurar para que en facturas de devolución de venta (total o parcial), el título de crédito (tipo NCC) se compense automáticamente.
    • La configuración del parámetro MV_CHECKNF determina si la situación de la cartera del título por cobrar debe considerarse en la compensación automática.
    • Si fuera necesario que la compensación automática no se realice en determinados casos, puede utilizarse el punto de entrada MT103BXCRpara indicar la regla deseada.
    • La rutina tentará compensar la NCC con el título referente a la factura de salida devuelta, pero si el título del cuentas por cobrar estuviera dado de baja, el sistema dejará la NCC pendiente para posterior compensación manual por medio de la rutina Compensación de títulos por cobrar (FINA330);
    • Si la devolución fuera parcial e involucrando ítems/productos de varias facturas emitidas (Documento de salida), la compensación automática no evalúa la proporcionalidad devuelta de cada Factura y sí el total devuelto vs. Facturas vinculadas en la devolución. Por lo tanto, el sistema considerará el total de la NCC y realizará la compensación con la primera Factura, mientras hubiera saldo disponible. Solamente se realizará la compensación con las otras Facturas, si el saldo de la primera Factura se pusiera en cero.


02. EJEMPLOS DE UTILIZACIÓN


Bloco de código
languagejava
themeMidnight
firstline1
titleEjemplo #01 - Rutina automática para compensación
linenumberstrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"


//-------------------------------------------------------------------
/*/ MaIntBxCr
Ejemplo de compensación de títulos normales con anticipos - CR

@since 27/07/2021
@version 1.0
/*/
//-------------------------------------------------------------------
USER FUNCTION CmpAutCR()

Local lRetOK := .T.
Local aArea  := GetArea()
Local nTaxaCM := 5.2322
Local aTxMoeda := {}
Local nSaldoComp:= 1000.00 *nTaxaCM // Valor que se compensará (Si fuera parcial Puede ser parcial) - Compensar solamente R$ 50,00 
Local dDtComp := CTOD("  /  /    ")

Private nRecnoNDF
Private nRecnoE1

PREPARE ENVIRONMENT EMPRESA "TI" FILIAL "D MG 01 " MODULO "FIN" TABLES "SE2TI0","SE5TI0","SA6TI0","SEDTI0"

    Conout("----¡Inicio de la rutina automatica!------")

    dbSelectArea("SE1")
    dbSetOrder(2) // E1_FILIAL, E1_CLIENTE, E1_LOJA, E1_PREFIXO, E1_NUM, E1_PARCELA, E1_TIPO, R_E_C_N_O_, D_E_L_E_T_
    IF dbSeek(XFILIAL("SE1")+"000000"+"00"+"331"+"RA0001   "+"  "+"RA ")
        nRecnoRA := RECNO()
	 	dDtComp := SE1->E1_EMISSAO
        IF dbSeek(XFILIAL("SE1")+"000000"+"00"+"331"+"000001   "+"  "+"DP ")
            nRecnoE1 := RECNO()

            PERGUNTE("FIN330",.F.)
            lContabiliza    := (MV_PAR09 == 1) // ¿Contabiliza On Line ?
            lDigita         := (MV_PAR07 == 1) // ¿Muestra Asto Contab ?
            lAglutina       := .F.

            /*
            ==> Utilice este trecho si quiere simular la opción Tasas de la pantalla inicial del FINA330
			==> Verifique los parámetros MV_CMP330 y MV_CMTXCON para ello.
            nTaxaCM := RecMoeda(dDataBase,SE1->E1_MOEDA)

            aAdd(aTxMoeda, {1, 1} )
            aAdd(aTxMoeda, {2, nTaxaCM} )
            */
            SE1->(dbSetOrder(1)) //E1_FILIAL+E1_PREFIXO+E1_NUM+E1_PARCELA+E1_TIPO+E1_FORNECE+E1_LOJA

            //NF X RA
            aRecRA := { nRecnoRA }
            aRecSE1 := { nRecnoE1 }

			/*
            //RA X NF
            aRecRA := { nRecnoE1 }
            aRecSE1 := { nRecnoRA }
			*/

            //Fecha que se considerará en la compensación
            dDataBase := dDtComp

            If !MaIntBxCR(3, aRecSE1,,aRecRA,,{lContabiliza,lAglutina,lDigita,.F.,.F.,.F.},,,,,nSaldoComp,,,, nTaxaCM, aTxMoeda)
                Help("XAFCMPAD",1,"HELP","XAFCMPAD","No fue posible la compensación"+CRLF+" del título de anticipo",1,0)
                lRet := .F.
            ENDIF
        ENDIF
    ENDIF

    RestArea(aArea)

RESET ENVIRONMENT

Return lRet

...