Versões comparadas

Chave

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

...

Informações
titleObservaciones

FINA450(nPosArotina,aAutoCab,nOpcAuto)

  •  aAutoCab - Array utilizado para enviar datos referentes al proceso.   Estos datos son el equivalente a los datos informados en la pantalla de filtro manual, como:
    • Fecha inicial: Fecha de vencimiento real inicial para filtrar los títulos.
    • Fecha final: Fecha de vencimiento real final para filtrar los títulos.
    • Valor límite: Valor límite para la compensación.   Esta información se utiliza para filtrar, o no, los títulos hasta el valor informado.
    • Código de ciente y tienda: Código del cliente/tienda para filtrar los títulos para la compensación. 
    • Código del proveedor y tienda: Código del proveedor/tienda para filtrar los títulos para la compensación.
    • Moneda: Código de la moneda de los títulos para utilizar en la compensación.
    • Débito o Crédito: Filtra los tipos de débito (Fact, FactCred, BOL, etc.) o crédito (RA, PA, NCC y NDF).
      • Contenido "1" filtra títulos normales y "2" títulos de credito (Ej: RA, PA)
    • Títulos futuros: Filtra títulos emitidos posterior a la fecha base.
    • Clave de títulos por cobrar (Array con clave de los títulos por cobrar que se compensarán):
      • SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1→E1_TIPO
    • Clave de Títulos por pagar (Array con clave de los títulos por pagar que se compensarán):
      • SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2→E2_FORNECE+SE2→E2_LOJA
    • nOpcAuto - Opción del menú que se ejecutará automáticamente.
      • 3 = Compensación

Observación:

  • La compensación automática entre carteras solamente realiza la baja del valor total del título.
  • Si las tiendas del cliente y proveedor se informan sin contenido (vacías), el sistema considerará todas las tiendas del mismo código de cliente y proveedor.  (Disponible a partir de del 01/06/2023)


03. EJEMPLO DE UTILIZACIÓN

...

Bloco de código
languagejava
themeMidnight
titleExemplo de rotina automatica
collapsetrue
#include "rwmake.ch"
#include 'tbiconn.ch'

User Function AUTO450()
    Local aAutoCab := {}
    Local aArea    := GetArea()
    Local cTabSe1  := "TMPSE1A"
    Local cTabSe2  := "TMPSE2A"
    Local aSE1450  := {}
    Local aSE2450  := {}
    Local cFilSe2  := xFilial("SE2")
    Local cFilSe1  := xFilial("SE1")

    Private lMsHelpAuto := .T.
    Private lMsErroAuto := .F.

    BeginSql Alias cTabSe1
		SELECT R_E_C_N_O_ as RECNO
			FROM %Table:SE1% SE1
			WHERE SE1.E1_FILIAL = %Exp:cFilSe1%
				AND SE1.E1_PREFIXO = 'CPT'
				AND SE1.E1_NUM = 'VT001'
				AND SE1.E1_TIPO = 'NF'
				AND SE1.E1_CLIENTE = 'FIN001'
				AND SE1.E1_LOJA    = '01'
				AND SE1.%NotDel%
	EndSql

    While (cTabSe1)->(!EOF())
        SE1->(DbGoto((cTabSe1)->RECNO))
        AAdd(aSE1450, {SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO})
        (cTabSe1)->(DbSkip())  
    Enddo

    (cTabSe1)->(DbCloseArea())

    BeginSql Alias cTabSe2
		SELECT R_E_C_N_O_ as RECNO
			FROM %Table:SE2% SE2
			WHERE SE2.E2_FILIAL = %Exp:cFilSe2%
				AND SE2.E2_PREFIXO = 'CPT'
				AND SE2.E2_NUM = 'VT001'
				AND SE2.E2_TIPO = 'NF'
				AND SE2.E2_FORNECE = 'FIN001'
				AND SE2.E2_LOJA    = '01'
				AND SE2.%NotDel%
	EndSql

    While (cTabSe2)->(!EOF())
        SE2->(DbGoto((cTabSe2)->RECNO))
        AAdd(aSE2450, {SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2->E2_FORNECE+SE2->E2_LOJA})   
        (cTabSe2)->(DbSkip())  
    Enddo
    
    (cTabSe2)->(DbCloseArea())

    aAutoCab := { {"AUTDVENINI450", cTod('27/08/19') , nil},;
    {"AUTDVENFIM450", cTod('27/08/19') , nil},;
    {"AUTNLIM450" , 10000 , nil},;
    {"AUTCCLI450" , "FIN001" , nil},;
    {"AUTCLJCLI" , "01" , nil},;
    {"AUTCFOR450" , "FIN001" , nil},;
    {"AUTCLJFOR" , "01" , nil},;
    {"AUTCMOEDA450" , "01" , nil},; 
    {"AUTNDEBCRED" , 1 , nil},;
    {"AUTLTITFUTURO", .F. , nil},;
    {"AUTARECCHAVE" , aSE1450 , nil},;
    {"AUTAPAGCHAVE" , aSE2450 , nil}}

    MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 )

    If !lMsErroAuto
        alert("Incluido¡Incluido comcon sucessoéxito! ")
        confirmsx8()
    Else
        alert("Erro¡Error en nala inclusaoinclusión!")
        rollbacksx8()
        MostraErro()
    EndIf
    
    RestArea(aArea)
Return

...

Bloco de código
languagejava
themeMidnight
titleEjemplo de rutina automática entre sucursales.
collapsetrue
#include "rwmake.ch"
#include 'tbiconn.ch'
  
User Function Auto450()
    Local aAutoCab := {}
	Local aArea    := GetArea()
    Local cTabSe1  := "TMPSE1A"
    Local cTabSe2  := "TMPSE2A"
    Local aSE1450  := {}
    Local aSE2450  := {}
    Local aFilCmp  := {}

    Private lMsHelpAuto := .F.
    Private lMsErroAuto := .F.

    BeginSql Alias cTabSe1
		SELECT R_E_C_N_O_ as RECNO
			FROM %Table:SE1% SE1
			WHERE SE1.E1_FILIAL = 'D MG 01 '
				AND SE1.E1_PREFIXO = 'CPT'
				AND SE1.E1_NUM = 'VT001'
				AND SE1.E1_TIPO = 'NF'
				AND SE1.E1_CLIENTE = 'FIN001'
				AND SE1.E1_LOJA    = '01'
				AND SE1.%NotDel%
	EndSql

    While (cTabSe1)->(!EOF())
        SE1->(DbGoto((cTabSe1)->RECNO))
        AAdd(aSE1450, {SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO})
        If ascan(aFilCmp,SE1->E1_FILIAL) == 0
            Aadd(aFilCmp, SE1->E1_FILIAL)
        EndIf    
        (cTabSe1)->(DbSkip())  
    Enddo

    (cTabSe1)->(DbCloseArea())

    BeginSql Alias cTabSe2
		SELECT R_E_C_N_O_ as RECNO
			FROM %Table:SE2% SE2
			WHERE SE2.E2_FILIAL = 'D MG 02 '
				AND SE2.E2_PREFIXO = 'CPT'
				AND SE2.E2_NUM = 'VT001'
				AND SE2.E2_TIPO = 'NF'
				AND SE2.E2_FORNECE = 'FIN001'
				AND SE2.E2_LOJA    = '01'
				AND SE2.%NotDel%
	EndSql

    While (cTabSe2)->(!EOF())
        SE2->(DbGoto((cTabSe2)->RECNO))
        AAdd(aSE2450, {SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2->E2_FORNECE+SE2->E2_LOJA})
        If ascan(aFilCmp,SE2->E2_FILIAL) == 0
            Aadd(aFilCmp, SE2->E2_FILIAL)
        EndIf    
        (cTabSe2)->(DbSkip())  
    Enddo
    
    (cTabSe2)->(DbCloseArea())

    aAutoCab :={  {"AUTDVENINI450", cTod('27/08/19') , nil},;
                {"AUTDVENFIM450", cTod('27/08/19') , nil},;
                {"AUTNLIM450" ,8000, nil},;
                {"AUTCCLI450" , "FIN001" , nil},;
                {"AUTCLJCLI" , "01" , nil},;
                {"AUTCFOR450" , "FIN001" , nil},;
                {"AUTCLJFOR" , "01" , nil},;
                {"AUTCMOEDA450" , "01" , nil},; 
                {"AUTNDEBCRED" , 1 , nil},;
                {"AUTLTITFUTURO", .F. , nil},;
                {"AUTARECCHAVE" ,aSE1450, nil},;
                {"AUTAPAGCHAVE" , aSE2450 , nil},;
                {"AUTAFILCOMP" , aFilCmp , nil}}

    MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 )

    If !lMsErroAuto
        ConOut("Incluido¡Incluido comcon sucessoéxito! ")
        confirmsx8()
    Else
        ConOut("Erro¡Error en nala inclusaoinclusión!")
        rollbacksx8()
        MostraErro()
    EndIf

	RestArea(aArea)
Return
Bloco de código
languagejava
themeMidnight
titleReversión
collapsetrue
#INCLUDE "TOTVS.ch"
#Include "PROTHEUS.ch"    
#Include "PRTOPDEF.CH"
#INCLUDE "TBICONN.CH" 


User Function F450Est()


Local cCliForn	:= "000001"
Local cLoja		:= "00"
Local cPref		:= "TST"
Local cNumPag	:= "PAG300000"
Local cParc		:= " "
Local cTipo		:= "NF "
Local cFilTit   := "D MG 01 "
Local aAutoCab := {}


PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "FIN" 

dbSelectArea("SE2")
dbSetOrder(1)		//E2_FILIAL+E2_PREFIXO+E2_NUM+E2_PARCELA+E2_TIPO+E2_FORNECE+E2_LOJA

//Es necesario marcar en un registro de la SE2 de un título que esté involucrado en la compensación
//No es necesario marcar en todos los títulos involucrados

SE2->(Dbseek(cFilTit+cPref + cNumPag + cParc + cTipo + cCliForn + cLoja))

MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 5 )
   If !lMsErroAuto
        ConOut("¡Reversión realizada con éxito! ")
    Else
        ConOut("Error en la reversión!")
        MostraErro()
    EndIf
RETURN

Card documentos
InformacaoPara que la compensación funcione entre sucursales es necesario utilizar el parámetro AUTAFILCOMP, en caso contrario no es necesario informarlo.
Titulo¡IMPORTANTE!

...