Árvore de páginas

Versões comparadas

Chave

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

...

Bloco de código
languagecpp
firstline1
linenumberstrue
#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[1], {|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.

EndCase

Return

...