segunda-feira, 13 de novembro de 2017

Dicas para desenvolvimento do módulo de RH

SetMnemonicos()
Carrega os Mneumônicos da tabela RCA do Protheus em uma variável do tipo array aonde a primeira posição tem o nome do Mneumônico e na terceira posição possui o contéudo.
Veja um exemplo simples de sua utilização.

Local cFilRCA := xFilial( "RCA" )

Local aMnemos := {}

SetMnemonicos( cFilRCA , @aMnemos , .T. )


nPos := Ascan(aMnemos, {|x| x[1] == 'M_BASEAVPR'})
aVerbas         := StrTokArr( AllTrim(aMnemos[nPos, 3]), ';' )

__________________________________________________________________________________________

SincroRC()
Rotina responsável por gerar as tabelas de fechamento da SRC e SRI exemplo RCAA1612 RIAA1612, basta executar e colocar o período que deseja refazer o fechamento o qual será buscado da SRD Acumulados e gerado o arquivo a parte.

fBuscaPD()

Objetivo:    Retorna o somatório dos Valores ou das Quantidades das Verbas indicadas.

Sintaxe:    fBuscaPD(cCódigos, cTipo, cSemana)

    cCódigos = Lista contendo o(s) código(s) da(s) verba(s) a ser(em) somada(s).
Ex.: "105,106,107" ou "105"

cTipo = Tipo de somatório a ser feito. Pode ser "H" para que seja feito o somatório das Quantidades das verbas ou "V" para que os Valores das verbas sejam somados. Se não for indicado será assumido "V".
Ex.: "V" ou "H"

cSemana = Número da semana, se não for indicado assume brancos. Somente deverá ser utilizado para funcionários cuja periodicidade de pagamento seja "semanal".
Ex.: "14"

Exemplo de Utilização:

nHorExt := fBuscaPD("105,106,107,108,109,110", "H", "40")

Armazenará na variável 'nHorExt' a somatória das QUANTIDADES DE HORAS DAS VERBAS 105, 106, 107, 108, 109 e 110 da semana  40. 

nValExt := fBuscaPD("105,106,107,108,109,110")

Armazenará na variável 'nValExt' a somatória dos VALORES das verbas 105, 106, 107, 108, 109 e 110.

OBS.:Quando se efetua a somatória de verbas de Desconto, o Sistema retorna este valor NEGATIVO. Devendo o mesmo ser multiplicado por (-1), quando a verba a ser gerada depender deste resultado. 


Exemplos de Utilização: 

fGeraVerba(“460”,fBuscaPD(“452”)*(-1)*0.1, , , , , , , , ,.T.)

Gera a verba 460, com  10% sobre o valor da verba de desconto 452. 

nValExemp := fBuscaPD("105,106,110,410,405")

Armazenará na variável 'nValExemp' a somatória dos VALORES das verbas 105, 106 e  110 MENOS o valor das verbas 410  e 405. 


__________________________________________________________________________________________

fGeraVerba()

Objetivo:    Incluir ou Alterar uma Verba no Movimento.

Sintaxe: fGeraVerba(cCód,nVal,nHor,cSem,cCCusto,cTipo1,cTipo2,nParcelas, dData,lAltera)

        cCód = Código da Verba a ser gerada.

        nVal = Valor da Verba.

        nHor = Quantidade da Verba.

cSem = Número da Semana, somente deve ser utilizado para funcionários cuja periodicidade de pagamento seja semanal. Pose ser utilizada a variável "cSemana" que é a semana indicada nas perguntas do programa.

        cCCusto = Código do Centro de Custo do funcionário.

cTipo1 = Tipo da Verba. Pode ser "V" para Valor, "H" para Horas ou "D" para Dias. Se não for informado será assumido "V".

cTipo2 =  Após o Tipo deve ser informado o Tipo 2. Pode ser informado “I” para informada, “A” para Adiantamento, “C” para calculado, “K” para Férias. 

        nParcelas = Número de Parcelas da Verba. Deve estar entre 0 e 99.

Nulo = Após a Parcela deve ser informado um parâmetro Nulo ou seja, deve-se colocar DUAS vírgulas após a Parcela.
 
        dData = Data do efetivo pagamento da Verba. Pode-se utilizar a Variável “dData_Pgto" que é a data informada nas perguntas do cálculo.

lAltera = Variável lógica para indicar se a verba pode ser alterada, caso já exista no movimento do funcionário. Pode ser .T. ou .F..


Exemplo de Utilização:

fGeraVerba("222", nValExt, nHorExt, cSemana, SRA->RA_CC, "V",”I” , 0, , dData_Pgto, .T.)

fGeraVerba("223", 0, SRA->RA_HRSMES, "  ", SRA->RA_CC, "H",”I” , 99, , dData_Pgto, .T.)

OBS.: Caso o usuário necessite apenas do último argumento, lAltera, poderá deixar os demais  em branco, para que o Sistema assuma o default. 

Exemplo: 

fGeraVerba(“222”, nValExtra, nHorExt, , , , , , , ,.T.) 

Sistema irá regravar a verba 222, com o Valor da variável nValExtra e a qtde. de Horas da variável  nHorExt.

Caso não queira que o campo horas seja regravado a função ficará: 

fGeraVerba(“222”,nValExtra, , , , , , , , ,.T.) 

OBS.: Se o argumento “.T.” for omitido, o Sistema não regravará a verba, caso a mesma já exista, assumindo, assim, o argumento “.F.” como default. 

REGRAVAR VERBA INFORMADA PELO USUÁRIO

A função fgeraverba não regrava verba informada pelo usuário, portanto para os casos que houver necessidade deve proceder da seguinte maneira  no roteiro de calculo:                                                   

Condição                                                              
If FlocaliaPd("999") > 0         => Ex. Localizar a posicão da verba "999" no Array aPd                                       
                                                                         
Verdadeiro                                                              
aPd[fLocaliaPd("999"),5] := ((SalMes * 0.10) * FbuscaPd("999","H") )
Ex. Gravar na Posicão do Valor no aPD o seguinte Calculo: 
((Salario *  10%) * Horas Informadas)


Matriz aPd 

Matriz onde as Verbas São Calculadas e Criadas através dos Cálculos

     aPd[Verba,1]  = Código da Verba
     aPd[Verba,2]  = Semana da Verba
     aPd[Verba,3]  = C.Custo  da Verba
     aPd[Verba,4]  = Horas
     aPd[Verba,5]  = Valor
     aPd[Verba,6]  = Tipo 1 ([H]oras,[V]alor,[D]ias)
     aPd[Verba,7] = Tipo 2 ([I]nformada [C]alc.folha [R]Calc. Resc. [F]Calc.Ferias [S]2o.Parc   [P]1o. Parc
     aPd[Verba,8]  = Parcela da Verba
     aPd[Verba,9]  = Tipo da Verba na Matriz ([D] = Deletada na Matriz )
     aPd[Verba,10] = Data do Lançamento

Exemplo de Utilização: 

aPD[fLocaliaPD(“113”),9]:=“D” 

Deleta a verba 113 do arquivo de movimento mensal. 


__________________________________________________________________________________________

FdelPd()

Objetivo:   Excluir/Deletar Verbas no Movimento durante o calculo.

Sintaxe: fDelPd(cCódigos, cSemana)

         cCódigos    = Códigos das Verba a serem excluidas.
         cSem      = Número da Semana, somente deve ser utilizado para funcionários cuja periodicidade de pagamento  seja semanal. Pose ser utilizada a variável  "cSemana" que é a semana indicada nas perguntas do programa.

Exemplo de Utilização:

    fDelPd("222,109,409")

    fDelPd("222,109,409",cSemana)

Matriz  aPdv

 Incidências das Verbas carregadas através da função fMatriz.

    aPdv[Verba,1]  = Código da Verba
    aPdv[Verba,2]  = Percentual da Verba
    aPdv[Verba,3]  = Código Correspondente
    aPdv[Verba,4]  = Incidência p/ Base de  INSS
    aPdv[Verba,5]  = Incidência p/ Base de Ir
    aPdv[Verba,6]  = Incidência p/ Base de FGTS
    aPdv[Verba,7]  = Incidência p/ Med. 13º
    aPdv[Verba,8]  = Incidência p/ Med. de Ferias
    aPdv[Verba,9]  = Incidência p/ Base de Periculosidade
    aPdv[Verba,10] = Incidência de Base de Insalubridade
    aPdv[Verba,11] = Se Refere a Ferias
    aPdv[Verba,12] = Se Refere a 13º
    aPdv[Verba,13] = Incidência p/ Mapa de Custo
    aPdv[Verba,14] = Incidência p/ Rais
    aPdv[Verba,15] = Incidência p/ Dirf
    aPdv[Verba,16] = Incidência p/ Dsr s/ Horas
    aPdv[Verba,17] = Se e Verba de Hora Extra
    aPdv[Verba,18] = Se a Verba Incorpora Salário
    aPdv[Verba,19] = Se a Verba e de Adic tempo serviço
    aPdv[Verba,20] = Incidência p/ Base de Contribuição Sindical
    aPdv[Verba,21] = Incidência p/ Base do Salário Família
    aPdv[Verba,22] = Incidência p/ Base do Seguro de Vida
    aPdv[Verba,23] = Incidência p/ Média de Aviso Prévio
    aPdv[Verba,24] =  Incidência p/ Base de Convenção coletiva 
    aPdv[Verba,25] = Se a Verba e Deduzida na Guia de INSS (GRPS)
    aPdv[Verba,26] = Se a Média Reajustável
    aPdv[Verba,27] = Se Tem Formula para a Verba
    aPdv[Verba,28] = Incidência p/ Pensão Alimentícia

Funções:
                                                 
    nUltDia := f_UltDia(dData)        // Retorna Ultimo dia do mês da data     
                            // passada como parametro                 
                                                                         
    nPosPd  := fLocaliaPd("999")    //  Posição da Verba na Matriz aPd        

                                                                                                                                              
 Matriz aPd = Descrição para roteiro de cálculo.                         

     aPd[nPosPd,1]  = Código da Verba                                     
     aPd[nposPd,2]  = Semana da Verba                                   
     aPd[nposPd,3]  = C.Custo  da Verba                                  
     aPd[nPosPd,4]  = Horas                                               
     aPd[nPosPd,5]  = Valor                                               
     aPd[nposPd,6]  = Tipo 1 ([H]oras,[V]alor,[D]ias)                     
     aPd[nPosPd,7]  = Tipo 2 ([I]nformada  -  [C]alc.folha  - [R]Calc. Resc  -. [K]Calc.Ferias          [S]2o.Parc  - [P]1o. Parc         
     aPd[nPosPd,8]  = Parcela da Verba                                    ¦
     aPd[nposPd,9]  = Tipo da Verba na Matriz ([D] = Deletada na Matriz)  ¦
     aPd[nPosPd,10] = Data de Pagamento                                   ¦
                                                                     ¦


__________________________________________________________________________________________

SomaInc()

Objetivo : Somar as verbas na matriz aPd conforme incidências solicitadas. 

Sintaxe: SomaInc(aPd,nElem,nBas,nCond1,cParc1,nCond2,cParc2,nMes,lSemana,aCodfol) 

     aPD        = Matriz com as verbas para Somatório
     nElem        = Incidência a ser somada conforme posição na matriz aPdV
     nBas        = Variável de retorno da somatória
     nCond1         = Elemento para 1ª condição, conf. posição na matriz aPdV
     cParc1        = Parâmetro para a 1ª condição (“S” ou “N”) 
     nCond2        = Elemento para 2ª condição, conf. posição na Matriz aPdV
     cParc2        = Parâmetro para a 2ª condição (“S” ou “N”)
     nMes        = Se desejar especificar o mês de pagamento a ser somado. 
     lSemana        = .T. soma todas as semanas do mês. e .F. soma somente a semana do calc. 
     aCodFol        = Matriz com os identificadores de cálculo. 

Exemplo de Função para somatória de verbas, checando incidências

Total de Proventos: 
    
    nTotProv:=0.00 -> Var. de retorno do total de proventos
    aEval(aPD,{|X| SomaInc(X,1,@nTotProv, , , , , , ,aCodFol}) 

Total de Descontos 

    nTotDesc:=0.00 -> Var. de retorno do total de descontos
    aEval(aPD,{|X| SomaInc(X,1,@nTotDesc, , , , , , ,aCodFol}) 

Líquido

    nTotLiq:=0.00 -> Var. de retorno do valor Liquido
    aEval(aPD,{|X| SomaInc(X,1,@nTotLiq, , , , , , ,aCodFol}) 

Base de INSS sem 13º Salário

     nInssBas:=0.00
    aEval(aPD,{|X| SomaInc(X,4,@InssBas,12,”N”, , , , ,aCodFol}) 

Base de Ir sem férias e 13º Salário

     nIrBas:=0.00
    aEval(aPD,{|X| SomaInc(X,5,@IrBas,11,”N”,”12”,”N” , , ,aCodFol}) 

Valor Bruto     

    ValBruto:=0 
    Aeval(aPD,{|X|SomaInc(X,5,@ValBruto,11,”N”,12,”N”,, ,aCodFol)})

Efetua a Somatória dos eventos que incidem para IRRF, e estão com “N” para os campos “Se Refere a Férias” e “Se Refere a 13º”, acumulando este valor na variável “ValBruto”. 


OBS.: Quanto ao “Ponto de Entrada” das Fórmulas, usuário deverá estudar qual o momento do cálculo, informando a seqüência correta/apropriada.


Exemplo de Roteiro para Retornar o Percentual do Evento: 

nPerc:=PosSrv(“114”,SRA->RA_FILIAL,”RV_PERC”) 


Função para Buscar um Det. Param. do CFG 

GETMV(“MV_DIASMES”) 


Variáveis Disponíveis  nos Cálculos:
                                                                      
     aPd         =  Array contendo todas as verbas do movimento do funcionário.
     aPdv         = Array com Incidências  com as verbas do movimento.
     Val_SalMin      = Valor do Salário mínimo do mês de Calculo.
     Normal         = Horas do Parâmetro Comp. Do Mês ou Turno de trabalho
     Descanso         = Horas do Parâmetro Comp. Do Mês ou Turno de Trabalho
     nValArred       = Valor de Arredondamento da Folha
     Val_Arre        = Valor do Arredondamento no Adto 
     Val_Adto        = Valor do Adiantamento
     f_UltDia        = Ultimo dia do Mês
     Salário        = Salário Base Mês 
     SalMes        = Salário Composto pelas verbas que incorporam
     SalHora        = Salário Hora Composto
     SalDia        = Salário Dia Composto
     nHorasTrab    = Horas Trabalhadas (Param. Comp. do Mês ou Turno de Trabalho)
     nHorasDsr    = Horas Dsr (Param. Comp. do Mês ou Turno de Trabalho)
     DiasAfas        = Total de Dias Afastados no Mês
     nDiasEnf        = Total de Dias de Enfermidade no Mês
     nDiasMes        = Dias de Ferias do Funcionário no Mês
     nDiasMse        = Dias de Férias do Funcionário Mês Seguinte
     Diastrab        = Dias Trabalhados do Funcionário
     DiasDsr        = Dias de Dsr do Funcionário
     cTipRes        = Tipo de Rescisão 
     DesprezaFuncionários  = irá desprezar o funcionário determinado no cálculo
     nFgtsCt1        = Valor do percentual do Fgts para Contr. Tipo Indeterminado 
     nFgtsCt2        = Valor do percentual do Fgts para Contr. Tipo Determinado
     dData_Pgto    = Data de Pagamento da Folha informado no parametro


__________________________________________________________________________________________

GetUserInfoArray()
Retorna um array multidimensional com as informações de cada um do processos em execução no Protheus 8 Server e/ou TOTVS Application Server. Esta função é um espelho dos dados que aparecem no TOTVS Monitor.

Sintaxe:
GetUserInfoArray ( ) --> aRet

Retorno :
aRet(array_of_record) 
Retorna um array multidimensional com os números e dados de cada uma das threads.
aInfo[x][01] = (C) Nome de usuário
aInfo[x][02] = (C) Nome da máquina local
aInfo[x][03] = (N) ID da Thread
aInfo[x][04] = (C) Servidor (caso esteja usando Balance; caso contrário é vazio)
aInfo[x][05] = (C) Nome da função que está sendo executada
aInfo[x][06] = (C) Ambiente(Environment) que está sendo executado
aInfo[x][07] = (C) Data e hora da conexão
aInfo[x][08] = (C) Tempo em que a thread está ativa (formato hh:mm:ss)
aInfo[x][09] = (N) Número de instruções
aInfo[x][10] = (N) Número de instruções por segundo
aInfo[x][11] = (C) Observações
aInfo[x][12] = (N) (*) Memória consumida pelo processo atual, em bytes
aInfo[x][13] = (C) (**) SID - ID do processo em uso no TOPConnect/TOTVSDBAccess, caso utilizado.

//Manda uma mensagem no no monitor, posição 11 do array anterior
PtInternal( 1, “mensagem”


quinta-feira, 2 de novembro de 2017

Principais tabelas do Protheus

Principais tabelas do Protheus relacionadas aos seus módulos

SA- Cadastro 
SA1-CADASTRO DE CLIENTES
SA2-CADASTRO DE FORNECEDORES
SA3-CADASTRO DE VENDEDORES
SA4-CADASTRO DE TRANSPORTADORAS
SA5-AMARRAÇÃO PRODUTOxFORNECEDOR
SA6-CADASTRO DE BANCOS
SA7-AMARRAÇÃO PRODUTOxCLIENTE
SA9-CADASTRO DE TÉCNICOS
SAA -CADASTRO DE PACOTE DE HORAS
SAB-PACOTE DE COMISSÕES


SB - Estoque 
SB1- DESCRIÇÃO GENÉRICA DO PRODUTO
SB2S-ALDOS FÍSICO E FINANCEIRO
SB3-DEMANDAS
SB5-DADOS ADICIONAIS DO PRODUTO
SB6-SALDO EM PODER DE TERCEIROS
SB7-LANÇAMENTOS DO INVENTARIO
SB8-SALDOS POR LOTE
SB9-SALDOS INICIAIS


SC - Previsões de E/S 
SC0-RESERVAS PARA FATURAMENTO
SC1-SOLICITAÇÕES DE COMPRA
SC2-ORDENS DE PRODUÇÃO
SC4-PREVISÃO DE VENDAS
SC5- PEDIDOS DE VENDA
SC6 -ITENS DOS PEDIDOS DE VENDA
SC7 -PEDIDOS DE COMPRA
SC8-COTAÇÕE S
SC9- PEDIDOS LIBERADOS
SCA- MOVIMENTOS DE O.S.
SCB -CADASTRO DE CONTRATO
SCC- MOVIMENTO DE COMISSÕES
SCD- FATURAMENTO POR GRADES
SCE -ENCERRAMENTO DE COTAÇÕES


SD - Movimentações de Estoques 
SD1-ITENS DAS NF's DE ENTRADA
SD2-ITENS DE VENDA DA NF
SD3-MOVIMENTAÇÕES INTERNAS
SD4-REQUISIÇÕES EMPENHADAS
SD5-REQUISIÇÕES POR LOTE
SD7-TRANSFERENCIAS PARA CQ


SE- Financeiro 
SE1-CONTAS A RECEBER
SE2-CONTAS A PAGAR
SE3-COMISSÕES DE VENDAS
SE4-CONDIÇÕES DE PAGAMENTO
SE5-MOVIMENTAÇÃO BANCARIA
SE7-OR ÇAM EN T OS
SE8-SALDOS BANCÁRIOS
SE9-CONTRATOS BANCÁRIOS
SEA-TÍTULOS ENVIADOS AO BANCO
SEB-OCORRÊNCIAS DA TRANSM. BANCÁRIA
SEC-AGENCIAS DEPOSITARIAS / CEP
SED-CADASTRO DE NATUREZAS
SEE-COMUNICAÇÃO REMOTA
SEF-CADASTRO DE CHEQUES
SEG-CONTROLE DE APLICAÇÕES


SF - Fiscal 
SF1-CABEÇALHO DAS NF's DE ENTRADA 
SF2-CABEÇALHO DAS NF's DE SAÍDA 
SF3 -LIVROS FISCAIS 
SF4 -TIPOS DE ENTRADA E SAÍDA 
SF5 -TIPOS DE MOVIMENTAÇÃO 
SF6 -RESUMO DE MOVIMENTAÇÃO DA DIPI 
SF7 -GRUPO DE TRIBUTAÇÃO 


SG - Estrutura de Montagem 
SG1 -ESTRUTURAS DOS PRODUTOS 
SG2 -OPERAÇÕES 
SG3 -GRUPOS DE SELETIVIDADE 
SG4 -COMPOSIÇÃO SELETIVA DO PRODUTO 



SH - Carga Máquina 
SH1 -RECURSOS 
SH2 -RECURSOS ALTERNATIVOS 
SH3 -REC. ALTERNATIVOS. POR OPERAÇÃO 
SH4 -FERRAMENTAS 
SH6 -MOVIMENTAÇÃO DA PRODUÇÃO 
SH7 -CALENDÁRIO 
SH8 -OPERAÇÕES ALOCADAS 
SH9 -RECURSOS BLOQUEADOS 
SHA -OPERAÇÕES OFF-LINE 
SHB -CARGA ACUMULATIVA 
SHC -PLANO MESTRE DE PRODUÇÃO 

SI- Contabilidade 
SI1 -PLANO DE CONTAS 
SI2 -LANÇAMENTOS CONTABEIS 
SI3 -CENTRO DE CUSTO 
SI5 -LANÇAMENTOS PADRONIZADOS 
SI6 -TOTAIS DE LOTE 
SI7 -PLANO DE CONTAS / OUTRAS MOEDAS 
SI8 -CADASTRO DE HISTORICO 
SI9 -CADASTRO DE RATEIOS 
SIA -VALORES ORÇADOS 
SIB -RATEIOS OFF LINE 

SJ - Etatísticas 
SJ3 -ACUMULADOS MENSAIS 

SM- Miscelâneas 
SM2-MOEDAS DO SISTEMA 
SM4 -FÓRMULAS 

SN - Ativo Fixo 
SN1 -CADASTRO DE ATIVO IMOBILIZADO 
SN2 -DESCRIÇÕES ESTENDIDAS 
SN3 -CADASTRO DE SALDOS E VALORES 
SN4 -MOVIMENTAÇÕES DO ATIVO FIXO 
SN5 -ARQUIVOS DE SALDOS 


SP - Ponto Eletrônico 
SP0 -DESCRIÇÃO DO RELÓGIO DE PONTO 
SP1 -CALENDÁRIO DE HORAS 
SP2 -EXCEÇÕES 
SP3 -FERIADOS 
SP4 -TIPOS DE HORAS EXTRAS 
SP5 -REFEITÓRIO 
SP6 -MOTIVO ABONO/JUSTIFICATIVA 
SP7 -TABELA DE HORÁRIO PADRÃO 
SP8 -TEMPORÁRIO DE MARCAÇÕES 
SP9 -EVENTOS 
SPA -REGRAS DE VALIDAÇÃO 
SPB -MARCAÇÕES 
SPC -RESULTADOS 
SPD -ARREDONDAMENTOS 


SR- Folha de Pagamento 
SR0-CADASTRO DE VALE TRANSPORTE
SR1-VALORES EXTRAS
SR2-R .A.I.S
SR3- D.I.R.F./INFORMERENDIMENTOS ITENS
SR5-CONFIGURAÇÕES DE PARÂMETROS
SR6-CADASTRO DE TURNOS DE TRABALHO
SRA-CADASTRO DE FUNCIONÁRIOS
SRB-CADASTRO DE DEPENDENTES
SRC-CADASTRO DE MOVIMENTO MENSAL
SRD-CADASTRO ACUMULADOS MENSAIS
SER-TR ANSFER ÊN CIAS
SRF-CADASTRO DE PROVISÕES
SRG-CABEÇALHO DE RECISÃO
SRH-RECIBO DE FÉRIAS
SRI-2ª PARCELA 13º SALÁRIO
SRJ-CADASTRO DE FUNÇÕES
SRK-VALORES FUTUROS
SRL -CABEÇALHO DA DIRF/INFORME REND.
SEM-FORMULAS DA FOLHA
SRN-MEIOS DE TRANSPORTE
SRP-DEMONSTRATIVO DE MÉDIAS
SRR-ITENS DA RESCISÃO
SRS-SALDOS FGTS
SRT-LÍQUIDOS EM DISQUETE
SRU-MOVIMENTOS DE CHEQUES
SRV-VER BAS
SRX-PAR ÂME TR OS
SRZ-RESUMO DA FOLHA

Tabelas envolvidas com documento de entrada

Tabelas Envolvidas com o documento de entrada no Protheus

Tabelas 

SF1 - Arquivo de Cabeçalho das Notas Fiscais de Entrada. Grava os dados da nota. 
SD1 - Arquivo de Itens das Notas Fiscais de Entrada. Grava os dados de cada item. 
SE2 - Arquivo de Contas a Pagar. Grava os dados da(s) duplicata(s).        
SA2 - Arquivo de Fornecedores. Consultado ou atualizado via [F3].           
SB1 - Arquivo de Descrição Genérica do Produto.                             
SB2 - Arquivo de Saldos Físico e Financeiro.                                
SC5 - Cabeçalho dos Pedidos de Venda.                                       
SC6 - Arquivo com os itens dos Pedidos de Venda.                            
SC7 - Arquivo com os itens dos Pedidos de Compra.                           
SF3 - Registros Fiscais.                                                  
SF4 - Cadastro de Tipos de Entradas e Saídas (TES).                         
SI1 - Cadastro Plano de Contas.                          
SA1 - Cadastro de Clientes.                                                  
SB6 - Controle de Poder de Terceiros.                                       
SB8 - Arquivo de saldos por lotes. Verificado na operação de exclusão.       
SD5 - Arquivo de requisição por lotes. Verificado na operação de exclusão. 
SM2 - Arquivo de moedas. Verificado na gravação da nota.                    
SD3 - Arquivo de movimentação interna. Verificado na operação de exclusão. 
SF6 - Arquivo de resumo de movimentação da DIPI.                            
SA3 - Comissão de Vendas.                                                  
SED - Arquivo de Naturezas. Verificado na operação de gravação. 
SEV - Arquivo de Múltiplas Naturezas por Título. 
SRK - Lançamentos Futuros 
SRA - Funcionários 
SDE - Rateios da Nota Fiscal 

sexta-feira, 23 de junho de 2017

Dicas para alterar tamanho de casas décimais no Protheus

Quem nunca passou por esse aperto, ao precisar alterar o tamanho de casas decimais nas tabelas da Totvs, sempre se fica a impressão e isso é certo que mais dias menos dias vai surgir uma inconsitência em alguma tabela que foi esquecida, dempois de muitas pesquisas encontrei essas duas postagens da Totvs que me ajudou muito

http://tdn.totvs.com/display/public/PROT/FAT0068_Aumento_de_Casas_Decimais_no_ambiente_Faturamento_SIGAFAT

Facilitador criado pela Totvs
http://tdn.totvs.com/pages/releaseview.action?pageId=267805831

Download da ferramenta
http://tdn.totvs.com/download/attachments/267805831/UPDTAMCPO.rar?api=v2

Espero te auxliado em um sofrimento a menos.

quarta-feira, 7 de junho de 2017

Alinhamento em janelas com a propriedade do ALIGN

Quem nunca sofreu com alinhamentos em janelas do Protheus, porém um simples comando vai fazer você mudar o seu conceito em relação a esse assunto,  esse é a propriedade ALIGNque vai nos esquecer as complexos malabarismos de coordenadas do MsAdvSize ou FWGetDialogSize.
Então vamos lá com as opções:

Alinhar preenchendo em todo o conteúdo da Janela ou Painel onde estiver
CONTROL_ALIGN_ALLCLIENT
Alinhar ao Topo
CONTROL_ALIGN_TOP 
Alinhar ao Rodapé
CONTROL_ALIGN_BOTTOM
Alinhar à Esquerda
CONTROL_ALIGN_LEFT
Alinha à Direita
CONTROL_ALIGN_RIGHT
Não utiliza alinhamento
CONTROL_ALIGN_NONE 

Vale ressaltar que o exemplo foi reduzido apenas, para que fosse demostrado o uso dos ALIGN, e o uso deverá ser adaptado de acordo coma sua necessidade.














Um detalhe importante que nesse exemplo até utilizei coordenadas, porém se tivesse deixado o MSNewGetDados  com os campos zerados o resultado seria o mesmo.

oMSNewGet := MsNewGetDados():New( 0,0,0,0, nOpc,  "U_VLDLINHA()" , "AllwaysTrue", "",;
aAltFields,, nCont , "AllwaysTrue", "", "AllwaysTrue", oWin02, aHeaderEx, aColsEx)
oMSNewGet:oBrowse:Align := CONTROL_ALIGN_ALLCLIENT

Boa sorte na nova forma de alinhamentos sem uso de coordenadas.