Árvore de páginas

 Tempo aproximado para leitura: 05 min

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:Jurídico
Módulo:Pré-faturamento de Serviços - SIGAPFS
Função:Emissão de Faturas - JURA203


02. PONTO DE ENTRADA

Descrição:

Este ponto de entrada permite informar adiantamentos pré-cadastrados para uso na emissão de fatura.

Localização:

Atualizações >> Movimentações >> Emissão de Fatura

Programa Fonte:

JURA203

Função:

J203UTIADI

Ponto de Entrada:J203ADT
Parâmetros:

Nome

Tipo

Descrição

Obrigatório

PARAMIXBarray

Array com 4 posições

NomeTipoDescrição
PARAMIXB[1]caractereCódigo do escritório da fatura
PARAMIXB[2]caractereCódigo da fatura
PARAMIXB[3]caractereCódigo da fila de emissão da fatura
PARAMIXB[4]numéricoValor líquido da fatura
Sim



Retorno:

Nome

Tipo

Descrição

Obrigatório

aRetorno

Array

Array com 2 posições

NomeTipoDescrição
aRetorno[1]Lógico

Quando verdadeiro, irá utilizar somente os adiantamentos informados via ponto de entrada. 

Quando falso, além de usar os adiantamentos informados via ponto de entrada, também utilizará os demais adiantamentos disponíveis cadastrados no sistema, caso a fatura possua saldo.

aRetorno[2]arrayArray multidimensional com dados dos adiantamentos que serão utilizados, respeitando a estrutura abaixo:
aRetorno[2][n][1]numéricoRecno do adiantamento (NWF).
aRetorno[2][n][2]numéricoRecno do título de adiantamento (SE1).
aRetorno[2][n][3]numéricoValor a ser utilizado do adiantamento.
aRetorno[2][n][4]lógicoQuando verdadeiro, permite que o usuário utilize o saldo residual do adiantamento caso exista.
Sim




03. EXEMPLO

#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "PARMTYPE.CH"

//-------------------------------------------------------------------
/*/{Protheus.doc} J203Adt
Ponto de entrada para utilização de adiantamentos na emissão de fatura

@param PARAMIXB, array   , Parâmetros do ponto de entrada
          PARAMIXB[1], caracter, Código do Escritório da Fatura
          PARAMIXB[2], caracter, Código da Fatura
          PARAMIXB[3], caracter, Código da Fila de Emissão da Fatura
          PARAMIXB[4], numérico, Valor Total da Fatura

@author TOTVS
@since  19/03/2020
/*/
//-------------------------------------------------------------------
User Function J203Adt()
    Local aArea          := GetArea()
    Local aAreaNXA  := NXA->(GetArea())
    Local cEscrit        := ""
    Local cNumFat    := ""
    Local cFila           := ""
    Local nVlFatura   := 0
    Local cCliente     := 0
    Local cLojaCli     := 0
    Local aAdtUser   := {}
    Local aRetorno   := {}

    If ValType( PARAMIXB ) == "A"
        cEscrit   := PARAMIXB[1]
        cNumFat   := PARAMIXB[2]
        cFila     := PARAMIXB[3]
        nVlFatura := PARAMIXB[4]

        //----------------------
        // Posiciona na fatura
        //----------------------
        NXA->( DBSetOrder(1) ) // NXA_FILIAL + NXA_ESCRIT + NXA_COD
        If NXA->( DbSeekxFilial("NXA") + cEscrit + cNumFat ) )
            cCliente := NXA->NXA_CLIPG
            cLojaCli := NXA->NXA_LOJPG
            //--------------------------------
            // Encontra adiantamentos válidos
            //--------------------------------
            aAdtUser := BuscaAdt( cCliente, cLojaCli )
        EndIf
    EndIf

    aRetorno := { .F., aAdtUser }

    RestArea(aAreaNXA)
    RestArea(aArea)

Return (aRetorno)

//===========================================================
Static Function BuscaAdt(cClientecLojaCli)
    Local cAlsTmp   := GetNextAlias()
    Local cPrefAdt   := PadRSuperGetMV("MV_JADTPRF".F.""  ), TamSX3("E1_PREFIXO")[1] )
    Local cTipoAdt  := PadRSuperGetMV("MV_JADTTP" , .F."RA"), TamSX3("E1_TIPO")[1]    )
    Local cParcAdt   := PadRSuperGetMV("MV_JADTPAR".F.""  ), TamSX3("E1_PARCELA")[1] )
    Local lResiduo   := .F.
    Local aAdtUser  := {}

    BeginSql Alias cAlsTmp
        SELECT NWF.R_E_C_N_O_ RECNOADTSE1.R_E_C_N_O_ RECNOTITSE1.E1_SALDO VALOR
          FROM %Table:NWF% NWF
         INNER JOIN %Table:SE1% SE1
            ON SE1.E1_FILIAL  = %xFilial:SE1%
           AND SE1.E1_CLIENTE = NWF.NWF_CCLIAD
           AND SE1.E1_LOJA    = NWF.NWF_CLOJAD
           AND SE1.E1_PREFIXO = %Exp:cPrefAdt%
           AND SE1.E1_NUM     = NWF.NWF_TITULO
           AND SE1.E1_PARCELA = %Exp:cParcAdt%
           AND SE1.E1_TIPO    = %Exp:cTipoAdt%
           AND SE1.E1_ORIGEM  = 'JURA069'
           AND SE1.E1_SALDO   > 0 // Aditamentos com saldo
           AND SE1.%NotDel%
         WHERE NWF.NWF_FILIAL = %xFilial:NWF%
           AND NWF.NWF_CCLIAD%Exp:cCliente%
           AND NWF.NWF_CLOJAD  = %Exp:cLojaCli%
           AND NWF.NWF_TITGER = '1' // Somente adiantamentos com títulos gerados
           AND NWF.%NotDel%
    EndSql

    While (cAlsTmp)->( !EOF() )
        Aadd( aAdtUser, { (cAlsTmp)->RECNOADT, (cAlsTmp)->RECNOTIT, 100, lResiduo } )
        (cAlsTmp)->( DbSkip() )
    End

    (cAlsTmp)->(DbCloseArea())

Return (aAdtUser)