Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
  3. Parâmetros
  4. Variáveis
  5. Tabelas utilizadas


01. VISÃO GERAL

Este Ponto de Entrada pertence à rotina de Recebimento de Importação. Ele deve ser utilizado para customização desta rotina.

Programa Fonte: EICDI154.PRW


02. EXEMPLO DE UTILIZAÇÃO


#Include 'Protheus.ch'

User Function EICDI154()

Local cParam:=""

Local nValQuebra:= 150 //Quantidade de itens desejada por nota fiscal (alterar conforme necessidade)

local lExibeTela:= .F.

Local nPos         
   If Type("ParamIXB") == "A"
      cParam:= ParamIXB[1]
   ElseIf Type("ParamIXB") == "C"
      cParam:= ParamIXB
   EndIf
   cParam:= Upper(cParam)  
   
Do Case


	Case cParam == "TEM_OUTRA_QUEBRA"
    	lQuebra_espe:= .T.
	Case cParam == "QUEBROU_NF"
    	IF nTipoNF == 2 .Or. nTipoNF == 7 
        	IF Work1->WKNOTAOR <> cNumComp .OR. Work1->WKSERIEOR <> cSerieComp .Or. nItem >= nValQuebra
            	cNumComp := WORK1->WKNOTAOR
            	cSerieComp := WORK1->WKSERIEOR
            	lQuebrou_NF:= .T.
       		 ENDIF
    	ELSE
        	IF nItem >= nValQuebra .OR.; 
            	cForn # Work1->WKFORN .OR. (EICLoja() .And. cForLoj # Work1->WKLOJA) .OR.; 
           		nItem == 0 .OR. If(lQuebraCFO, cCFO # Work1->WK_CFO,.F.) .OR.; 
           		(lIntDraw .AND. Work1->WKACMODAL # cACModal) .OR.;
           		(lQuebraOperacao .AND. cOperacao # Work1→WK_OPERACA)
           		lQuebrou_NF:= .T.

       		  ENDIF

   		 ENDIF
	Case cParam == "INICIA_VARIAVEIS"

    	lLoop:= .T.
    	lAlteraItemPE := .F. //Bloqueia a abertura da tela de edição de valores

	Case cParam == "FINALGRAVA"

    /* lComDiferenca indica se há divergência entre os valores dos impostos informados nas despesas do desembaraço comparados aos valores dos impostos apurados pelo recebimento de importação. */

    	If lComDiferenca

        //lRetorno aborta a gravação do recebimento de importação

        	lRetorno:= .F.

        //Exibe a tela com a mensagem de divergências (lExibeTela é local, disponível apenas na customização)
       		If lExibeTela

           	DI154MsgDif(.T.) //função padrão que exibe a tela de divergências dos valores de impostos

       		EndIf

   		EndIf

	Case cParam == "GERA_MAINWND"

    	lEstornoPE:= .F.

	Case cParam == "IDI154MNU"

    	Local aRotina := {}

    //{Nome apresentado, Função que vai ser executado, 0 ,0}

    	aAdd(aRotina,{"P.E. de Teste","FUNCTIONX",0,0})
        Return aRotina

	Case cParam == "GRAVACAO_SF1"

    	cChaveSF1 := 'nova chave da nfe'

    	AADD(aCab,{"F1_PLIQUI" ,10 ,Nil})

	Case cParam == "GRAVACAO_SD1"
		nPos:= AScan(aItem, {|x| AllTrim(x[1]) == "D1_DESPESA"})


		If nPos > 0
			aItem[nPos][2]:= 0 //novo valor
		EndIf

	Case cParam == "ADD_ESTRU_WORK1"

    //AADD(aDBF_Stru,{"campo" ,"tipo",tamanho,decimal quando houver})

    	AADD(aDBF_Stru,{"WKNomeCampo" ,"N",13,3})

	Case cParam == "ESTORNO NA NOTA"
   		MsgInfo(“Grava dados antes do estorno”) Case cParam == "ANTES_ESTORNO_NOTA" 
   		lOk:= .F.
	Case cParam == "GRV_WORK1"
   		Work1->WK_EXEMPLO :=SWV->WV_EXEMPLO
	Case cParam == "FIM_ESTORNO"
   		MsgInfo(“Depois do estorno”)
	Case cParam == "TEM_OUTRA_QUEBRA"
   		lQuebra_espe:=.T.
   		IF nItem >= GetMV("MV_HDNFIMP") .OR.;
      		cForn # Work1->WKFORN .OR.;
      		nItem == 0 .OR. cCFO # Work1->WK_CFO .OR.;
      		(lIntDraw .AND. Work1->WKACMODAL # cACModal) .OR.;
      		(lQuebraOperacao .AND. cOperacao # Work1->WK_OPERACA)
      		lQuebrou_NF:=.T.
   		Endif

	Case cParam := “RATEIO_ACRESCIMO”
   		MsgInfo("Entrou no ponto de entrada 'RATEIO_ACRESCIMO'." + CHR(13)+CHR(10)+ "Variavel lExitPE := .T.")
	Case cParam := "DEDUCAO_FRETE"
   		MsgInfo("Entrou no ponto de entrada DEDUCAO_FRETE." + CHR(13)+CHR(10)+ "Variavel lDeduFrete := .T.")
   		lDeduFrete := .T.
	Case cParam := “WHILE_1_WORK2”
   		Do while Work1->(!Eof()) .And. Work1->WKADICAO == Work2->WKADICAO
      		[instruções]
   		EndDo

	Case cParam := "ALT_CRIT_RAT_DSPICM"
   		If [Variável] == Work1->WKADICAO //Qualquer outro campo da Work1
      		[Instrução]
   		EndIf

	Case cParam := "DT_DESEMBARACO"

   		MsgInfo("Entrou no ponto de entrada 'DT_DESEMBARACO'.")
   		lDataDesmb := .F. //Desativa a validação da Data Desembaraço.

	Case cParam == "ANTES_GRAVA_WORK4"

		If  SWD->WD_DESPESA <> "404" //condição customizada

			lLoop:= .T.

		EndIf

	Case cParam == "DI154_SWDVAL"

		If SWD->WD_DESPESA <> "404" //condição customizada

			nValor:= 0

		EndIf

	Case cParam == "TAB_DESPESAS" //condição customizada

		If SWD->WD_DESPESA <> "404"

			lSair := .T.

		EndIf

	Case cParam == "GRAVA_SWD"

		If SWD->WD_DESPESA == "ABC"
			SWD->WD_CUSTOM:= "DEFG"

		EndIf
	Case cParam == "FINAL_GRAVA_NF"
		MsgInfo("Entrou no Ponto de entrada FINAL_GRAVA_NF","Nota Fiscal emitida")

   Case cParam == "ALTERA_CALC_IMPOSTOS_2"

        /* Este é apenas um exemplo de reapuração do valor do ICMS, fazendo uso de dados fictícios */
        SB1->(DBseek(xFilial() + Work1->WKCOD_I))
        nFator:= 0.136363636363
        qBCMonoReten:= (nFator * Work1->WKQTDE)

        /* Novo valor do ICMS */
        Work1->WKVL_ICM += qBCMonoReten * (SB1->B1_VLR_ICM * Work1->WKICMS_RED)
   Case cParam == "MOSTRA_TOTAIS" 
		lTotICMS:= .T.

   Case cParam == "NOTA_SERIE" 
		lSerieCust := .T. // Variável deverá ser atribuída como .T. para indicar que será customizado a serie da nota
		MsgInfo("Tela de customização para serie da nota")


EndCase

Return


03. Parâmetros


NomeTipoDescrição
TEM_OUTRA_QUEBRACaracterPossibilita customizar novas opções de quebra para a Nota Fiscal.
QUEBROU_NFCaracterPossibilita controlar a quebra de nota.
GRAVACAO_SF1CaracterPossibilita alterar o valor da chave da nota fiscal e também o array aCab onde contém as informações da capa da nota fiscal de entrada.
INICIA_VARIAVEISCaracterChamada para prosseguir ou impedir a abertura da tela para gerar nota fiscal na rotina de recebimento de importação. Atribuir a variável lLoop := .T. para impedir a abertura da janela de nota fiscal. Atribuir lLoop := .F.
FINALGRAVACaracterChamado após a apuração dos valores do recebimento de importação, permite determinar se o sistema deverá prosseguir com a geração do recebimento de importação. Neste momento estará disponível a variável lRetorno. Vide também a variável lComDiferenca abaixo.
GERA_MAINWNDCaracterExecutado antes da abertura da tela do recebimento de importaçao, permite customizar o título (variável cTit) e ações da tela, como o desabilitar o botão estonar (variável lEstornoPE).
IDI154MNUCaracterPossibilita a inclusão de opções no menu mbrowse.
ADD_ESTRU_WORK1CaracterPossibilita a inclusão ou alteração de campos na estrutura da work1.
FIM_ESTORNOCaracterPossibilita o acréscimo de funções no estorno das notas fiscais de entrada na rotina Recebimento de Importação, o ponto de entrada é executado após o estorno da(s) nota (s) de entrada.
ESTORNO NA NOTACaracterPossibilita gravação dos dados antes de realizar o estorno, é executado durante o while na SF1, antes de efetivar o estorno.
ANTES_ESTORNO_NOTACaracterExecutado no início da função do estorno da nota, no momento de declaração de variáveis. Possibilita sair da rotina antes de ser executada.
GRV_WORK1CaracterPossibilita a gravação na Work1 campos customizados da tabela SWV.
RATEIO_ACRESCIMOCaracterPermite a customização de rateios dos itens quando a variável lExitPE for setada como .T..
DEDUCAO_FRETECaracterPermite a dedução de frete no momento da geração da NF quando a variável lDeduFrete estiver habilitada.
WHILE_1_WORK2CaracterPermite manipular alguns valores apurados por adição
ALT_CRIT_RAT_DSPICMCaracterAltera o Critério de Rateio das despesas base de ICMS na Nota Fiscal
DT_DESEMBARACOCaracterPermite alterar o valor da variavel lDataDesemb
APOS_ESTORNOCaracterEste parâmetro indica que a chamada do ponto de entrada está sendo realizada após o estorno do recebimento de importação.
GRAVACAO_SD1CaracterEste parâmetro indica que a chamada do ponto de entrada está sendo realizada durante a geração da nota fiscal de entrada, durante a gravação dos itens.
MBROWSEArrayQuando o ponto de entrada "EICDI154" estiver passando no parâmetro "PARAMIXB" o conteúdo "MBROWSE", permitirá a inclusão de um novo campo no Browse através de RdMake customizado no Recebimento de Importação no módulo de Importação.
ANTES_GRAVA_WORK4CaracterEste parâmetro indica que o ponto de entrada foi executado durante a criação dos dados das despesas que serão apresentados quando acessada a ação Despesa do recebimento de importação. Estará disponível a variável lLoop que possibilitará condicionar quais despesas serão consideradas para a geração da nota fiscal.
DI154_SWDVALCaracterEste parâmetro indica que o ponto de entrada foi executado durante a composição dos valores de despesas que serão utilizadas na apuração do custo do item. Caso queira que o valor da despesa seja desconsiderado, estará disponível a variável nValor para intervenção.
TAB_DESPESASCaracterEste parâmetro indica que o ponto de entrada foi executado durante composição dos valores de despesas que serão armazenados nas tabelas de histórico de despesas da nota fiscal (SWW). Neste momento estará disponível a variável lSair que possibilitará indicar quais despesas serão usadas ou desprezadas na operação.
GRAVA_SWDCaracterParâmetro executado no momento da gravação dos dados da nota fiscal única ou complementar nas despesas do desembaraço. Executado uma ver para cada despesa existente na operação e considerada na geração da nota fiscal, possibilita o usuário intervir nos dados que serão gravados ou efetuar gravações complementares em campos customizados.
FINAL_GRAVA_NFCaracterPonto de entrada executado ao final da gravação da nota fiscal
MOSTRA_TOTAISCaracterPonto de entrada que permite ao cliente decidir se o cálculo do total na NFE será pela base do ICMS.
NOTA_SERIECaracter

Ponto de entrada que possibilita a criação de tela customizada para selecionar a serie que será utilizada para geração da nota, deverá ser atribuído a serie na variável cSerie e atualizar a variável lSerieCust  como .T. (true) 

Observação: a validação da serie é de responsabilidade da customização

04. Variáveis


ParâmetroNomeTipoPermite alterarDescrição
GRAVACAO_SF1cChaveSF1CaracterSimVariável com a chave da nota do momento do recebimento da importação.
GRAVACAO_SF1aCabArraySimArray com as informações da capa da nota fiscal de entrada - tabela SF1.
GRAVACAO_SD1aItemArraySimContém as informações do item do documento de entrada - tabela SD1
INICIA_VARIAVEISlLoopLógicoSimAtribuir .T. para impedir a geração de nota fiscal. Atribuir .F. para permitir a geração da nota fiscal.
FINALGRAVAlRetornoLógicoSim

Disponível no ponto de entrada com o parâmetro FINALGRAVA, determina se o sistema deverá prosseguir (true) ou não (false) com a gravação do recebimento de importação.

Quando definido que não deverá prosseguir com a geração de recebimento de importação, a tela de divergência de valores de impostos não será exibida caso existam divergências entre os dados informados no processo e os impostos apurados pelo sistema. Para exibir a tela de divergências pode ser realizada a chamada da função DI154MsgDif(.T.) pela customização. Vide também a variável lComDiferenca.

FINALGRAVAlComDiferencaLógicoNão

Também disponível no ponto de entrada com o parâmetro FINALGRAVA, permite identificar se houve divergências entre os impostos informados nas despesas do desembaraço e os impostos calculados pelo recebimento de importação (cenário de negócio com o parâmetro MV_TEM_DI desabilitado).

A variável lComDiferenca será True quando houver despesas de impostos informadas no desembaraço e houver divergência; quando não houver despesas de impostos lançadas no desembaraço o sistema informará que estas não foram cadastradas para o processo e a variável lComDiferenca não será alterada para True. Neste cenário, a verificação da não existência das despesas de impostos (SWD) deve ser feita pela customização.

GERA_MAINWNDcTitCaracterSimDisponível no ponto de entrada com o parâmetro GERA_MAINWND, permite customizar o título da tela do recebimento de importação, aberto após acesso às ações do browse.
GERA_MAINWNDlEstornoPELógicoSimDisponível no ponto de entrada com o parâmetro GERA_MAINWND, permite desabilitar (False) o botão estorno para os processos que possuem nota fiscal gerada.
IDI154MNUaRotinaArraySimArray disponível para criar botões e suas respectivas funções no menu Outras Ações do recebimento da importação.
ADD_ESTRU_WORK1aDBF_StruArraySimArray disponível para incluir ou alterar campos na work1.
ANTES_ESTORNO_NOTAlOkLógicoSimQuando alterada para falso por meio do ponto de entrada   'ANTES_ESTORNO_NOTA', sai da rotina sem executar.
DEDUCAO_FRETElDeduFreteLógicoSimQuando alterada para verdadeiro por meio do ponto de entrada 'DEDUCAO_FRETE', efetua a dedução de frete.

nSomaBaseICMSNuméricoSimDespesas Base de ICMS somadas da DI (exceto a Taxa do SISCOMEX).

nTxSiscNuméricoSimTotal da Taxa do SISCOMEX na DI
DT_DESEMBARACOlDataDesmbLógicoSimDefine se vai ter a validação da Data do desembaraço
INICIA_VARIAVEISlAlteraItemPELógicoSimPermite bloquear a tela de edição de valores
ANTES_GRAVA_WORK4lLoopLógicoSimPossibilitará condicionar quais despesas serão consideradas para a geração da nota fiscal. Quando retornada True (.T.) o sistema irá desprezar a despesa em processamento.
DI154_SWDVALnValorNuméricoSimPossibilitará retornar um valor diferente do informado na rotina de Despesas do Desembaraço, passando a ser este o valor considerado na composição do custo do produto no recebimento de importação.
TAB_DESPESASlSairLógicoSimPossibilitará condicionar quais despesas serão usadas (conteúdo False - .F.) ou desprezadas (conteúdo True - .T.) na geração do recebimento de importação, na composição dos registros de histórico de despesas da nota fiscal (tabela SWW).
INICIA_VARIAVEISlAlteraAdicaoPELógicoSimPoderá ser alterada para desabilitar o botão "Altera Adições".
INICIA_VARIAVEISlRatFretePorFOBLógicoSimQuando True, indica que o rateio do frete será por valor FOB.
INICIA_VARIAVEISlRatFreQtdeLógicoSimQuando True, indica que o rateio do frete será por quantidade.
MOSTRA_TOTAISlTotICMSLógicoSimO valor da variável será atribuído ao retorno da função. Quando True, é assumida a base do ICMS como valor total da NFE e, quando retornado False, o total da NFE é o valor calculado por outra função, somando-se o valor do ICMS alterado no item.
NOTA_SERIElSerieCust LógicoSimO valor da variável deverá ser atribuído dentro do ponto de entrada para .T. (true) para definir que a serie será customizada
NOTA_SERIEcSerieCaracterSimO valor da variável deverá ser atribuído dentro do ponto de entrada onde foi definida a serie ser utilizada


05. TABELAS UTILIZADAS

  • Não há.