Árvore de páginas

Versões comparadas

Chave

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

 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:Geração de arquivos E-billing 1998B e 1998BI - TXT - LEDES98


02. PONTO DE ENTRADA

Descrição:

Este ponto de entrada permite a alteração dos campos usados no preenchimento das informações do arquivo e-billing 1998B e 1998B Internacional.

Localização:

Atualizações >> Movimentações >> E-billing LEDES 1998B

Programa Fonte:

LEDES98

Função:

MontaCabec

Ponto de Entrada:LEDES98Es
Parâmetros:

Nome

Tipo

Descrição

Obrigatório

PARAMIXBarray

Array com 6 posições

NomeTipoDescrição
PARAMIXB[1]LógicoIndica se o e-billing é o 1998BI (internacioal)
PARAMIXB[2]Array*Array com a Estrutura dos Dados de Honorários
PARAMIXB[3]Array*Array com a Estrutura dos Dados de Despesas
PARAMIXB[4]Array*Array com a Estrutura dos Dados de Lançamentos Tabelados
PARAMIXB[5]Array*Array com a Estrutura dos Dados de Descontos ou Acréscimos de Faturas
PARAMIXB[6]Array*Array com a Estrutura dos Dados de Impostos

*Os Arrays de Parâmetros de Entrada/Saída devem possuir a seguinte estrutura:

NomeTipoDescrição
aEstru[01]CaractereCabeçalho do Campo
aEstru[02]Caractere

Tipo do Dado, onde 

F - Fórmula com retorno numérico

" " - Expressão com retorno alpha

C - Campo

aEstru[03]NuméricoTamanho do Campo
aEstru[04]Numérico Decimais do Campo
aEstru[05]CaractereNome do Campo** ou Código da Expressão
aEstru[06]CaractereCampos específicos** 
aEstru[07]NuloNão utilizado na entrada, somente no retorno caso uma expressão deva ser substituída


*Campos utilizados nas querys enviadas aos banco de dados, caso o tipo do campo seja "C" - Será enviada o valor da coluna 5 (Nome do campo); caso contrário, a coluna 6 (Campos específicos).

Para a consulta podem ser utilizados os campos das seguintes tabelas, conforme os Dados

DadoTabelas Consultadas
HonoráriosNXA - Faturas
NW0 - Time Sheets Faturamento
NUE - Time Sheets
NVE - Casos
NUR - Complemento do Participante
RD0 - Participantes
NUH - Complemento do Cliente
NRX - Empresas de E-billing
CTO - Moedas Contábeis
NTQ - Escritório E-Billing
NS7 - Escritórios
SYA - Países
NRV - Categoria E-billing
NS0 - Tipo de Atividade de E-billing
NRY - Fase E-billing
NRZ - Tarefa E-billing
DespesasNXA - Faturas
NVZ - Despesa Faturamento
NVY - Despesas
NVE - Casos
NUR - Complemento do Participante
RD0 - Participantes
NUH - Complemento do Cliente
NRX - Empresas de E-billing
CTO - Moedas Contábeis
NTQ - Escritório E-Billing
NS7 - Escritórios
SYA - Países
NS2 - Tipo de Categoria E-billing (De/Para)
NRV - Categoria E-billing
NS4 - Tipo desp E-billing (de-para)
NS3 - Tipo de despesa de E-billing
Lançamentos tabeladosNXA - Faturas
NW4 - Lancamento Tabelado Fatu
NV4 - Lançamentos Tabelados
NVE - Casos
RD0 - Participantes
NUR - Complemento do Participante
NUH - Complemento do Cliente
NRX - Empresas de E-billing
CTO - Moedas Contábeis
NTQ - Escritório E-Billing
NS7 - Escritórios
SYA - Países
NRV - Categoria E-billing
NXO - Serv Tab E-Billing (de/para)
NXN - SERVIÇOS TABELADOS E-BILLING
Acréscimos/DescontosNXA - Faturas
RD0 - Participantes
NUH - Complemento do Cliente
NRX - Empresas de E-billing
CTO - Moedas Contábeis
NTQ - Escritório E-Billing
NS7 - Escritórios
SYA - Países
ImpostosNXA - Faturas
RD0 - Participantes
NUH - Complemento do Cliente
NRX - Empresas de E-billing
CTO - Moedas Contábeis
NTQ - Escritório E-Billing
NS7 - Escritórios
SYA - Países
Sim



Retorno:

Nome

Tipo

Descrição

Obrigatório

aRetorno

Array

Array com 2 6 posições

NomeTipoDescrição
aRetorno[1]LógicoArray*

Estrutura dos Dados de Honorários, se  retornado vazio é considerado o padrão

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.
Array*Estrutura dos Dados de Despesas, se  retornado vazio é considerado o padrão
aRetorno[3]Array*Estrutura dos Dados de Lançamentos Tabelados, se  retornado vazio é considerado o padrão
aRetorno[4]Array*Estrutura dos Dados de Descontos ou Acréscimos de Faturas, se  retornado vazio é considerado o padrão
aRetorno[6]Array*Estrutura dos Dados de Impostos, se  retornado vazio é considerado o padrãoaRetorno[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"

User Function Ledes98Es()
Local aCabecHonC := {}
Local aCabecDesC := {}
Local aCabecTabC := {}
Local aCabecAjuC := nil
Local aCabecImpC := nil
Local l1998BI := .F.
Local nC := 0
Local aRet := {}



If ValType(PARAMIXB) == "A" .AND. Len(PARAMIXB) >= 6 .AND. ValType(PARAMIXB[02]) == "A"
    l1998BI := PARAMIXB[01]
    aCabecHonC := aClone(PARAMIXB[02])
    aCabecDesC := aClone(PARAMIXB[03])
    aCabecTabC := aClone(PARAMIXB[04])

    For nC := 1 to Len(aCabecHonC)
        Do Case 
        Case aCabecHonC[nC, 05] = "RD0_NOME"
            aCabecHonC[nC, 05] := "NUR_APELI"
        Case aCabecHonC[nC, 05] == "EXP21"
            aCabecHonC[nC, 07] := { || U_LedesPart(1) }
        Case aCabecHonC[nC, 05] == "EXP22"
            aCabecHonC[nC, 07] := { || U_LedesPart(2) }
        EndCase

    Next nC 

    aAdd(aRet, aClone(aCabecHonC))

    For nC := 1 to Len(aCabecDesC)
        Do Case 
        Case aCabecDesC[nC, 05] = "RD0_NOME"
            aCabecDesC[nC, 05] := "NUR_APELI"
        Case aCabecDesC[nC, 05] == "EXP21"
            aCabecDesC[nC, 07] := { || U_LedesPart(3) }
        Case aCabecDesC[nC, 05] == "EXP22"
            aCabecDesC[nC, 07] := { || U_LedesPart(4) }
        EndCase

    Next nC 
    aAdd(aRet, aClone(aCabecDesC))

    For nC := 1 to Len(aCabecTabC)
        Do Case 
        Case aCabecTabC[nC, 05] = "RD0_NOME"
            aCabecTabC[nC, 05] := "NUR_APELI"
        Case aCabecTabC[nC, 05] == "EXP21"
            aCabecTabC[nC, 07] := { || U_LedesPart(5) }
        Case aCabecTabC[nC, 05] == "EXP22"
            aCabecTabC[nC, 07] := { || U_LedesPart(6) }
        EndCase

    Next nC 
    aAdd(aRet, aClone(aCabecTabC))

    aAdd(aRet, aClone(aCabecAjuC) )

    aAdd(aRet, aClone(aCabecImpC))
Else
    aRet := Array(5)
EndIf
Return aRet

//-----------------//-------------------------------------------------------------------
/*/{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_CCLIPG
            cLojaCli := NXA->NXA_CLOJPG
            /*/{Protheus.doc} LedesPart
Expressão que trata o retorno do Nome ou Sobrenome do participante, conforme o tipo do Arquivo
@param nOpc - Opção de Retorno
@param cNomePart - Retorno do tipo de Nome do Participante
@version 1.0
/*/
//--------------------------------
            // 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)User Function LedesPart(nOpc)
Local cNomePart := ""
Default nOpc    := 1

Do Case 
Case nOpc == 1      
    cNomePart := Alltrim(Posicione('NUR',1,xFilial('NUR')+FIELD->NUE_CPART2,'NUR_APELI'))
    cNomePart := Substr(cNomePart,Rat(" ", cNomePart)+1,Len(cNomePart))
Case nOpc == 2
    cNomePart := Alltrim(Posicione('NUR',1,xFilial('NUR')+FIELD->NUE_CPART2,'NUR_APELI'))
    cNomePart := Substr(cNomePart,1,At(" ", cNomePart)-1)
Case nOpc == 3
    cNomePart := Alltrim(Posicione('NUR',1,xFilial('NUR')+FIELD->NVY_CPART,'NUR_APELI'))
    cNomePart := Substr(cNomePart,Rat(" ", cNomePart)+1,Len(cNomePart))
Case nOpc == 4
    cNomePart := Alltrim(Posicione('NUR',1,xFilial('NUR')+FIELD->NVY_CPART,'NUR_APELI'))
    cNomePart := Substr(cNomePart,Rat(" ", cNomePart)+1,Len(cNomePart))
Case nOpc == 5
    cNomePart := Alltrim(Posicione('NUR',1,xFilial('NUR')+FIELD->NV4_CPART,'NUR_APELI'))
    cNomePart := Substr(cNomePart,Rat(" ", cNomePart)+1,Len(cNomePart))
Case nOpc == 6
    cNomePart := Alltrim(Posicione('NUR',1,xFilial('NUR')+FIELD->NV4_CPART,'NUR_APELI'))
    cNomePart := Substr(cNomePart,Rat(" ", cNomePart)+1,Len(cNomePart))
    
EndCase

Return cNomePart


Templatedocumentos


HTML
<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>