Árvore de páginas

Versões comparadas

Chave

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

...

 
Portuguese

Pagetitle
MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete
MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete

Função: MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete


Table Filter
id1536020054489_-1859990472
 
Abrangências:Microsiga Protheus 11 , Protheus 10
Versões:Protheus 10
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível às Bases de Dados:Todos
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Português (Brasil)
 


Descrição:
Esta rotina facilita a digitação dos conhecimentos de frete.
Programa Fonte:
MATA116.PRW
Sintaxe:

MATA116 - Programa de digitação de Nota Fiscal de conhecimento de Frete ( [ PARAMIXB1 ] [ PARAMIXB2 ] ) --> nil

Retorno:
nil
    (nulo)
Observações

As condições mais frequentes são para FOB - o transporte do fornecedor até o cliente não está incluso no preço ou CIF -, apenas está incluso o valor da entrega.

A nota de conhecimento de frete é emitida quando o transporte é feito por uma transportadora do tipo FOB. São efetuadas diversas entregas
 e ao final de um período definido pela empresa, é emitida uma nota fiscal para que sejam pagos os serviços da transportadora.
Assim, para que a geração da nota fiscal seja possível, é necessário que a transportadora seja cadastrada como um fornecedor para que um título a pagar seja gerado, caso a empresa possua o Financeiro Integrado.

IMPORTANTE:  O exemplo abaixo deve ser adaptado conforme a necessidade do cliente, com informações válidas como: Fornecedor, TES, Produto, Condição de Pagamento, Valor da NF de Conhecimento de Frete e as Notas Fiscais que participam do rateio de frete.

ExemploExemplo1:


 

language
Bloco de código
themeMidnight
delphilinenumberstrue
// *Inclusão de Conhecimento considerando Tipo NF Normal*

#INCLUDE "RWMAKE.CH" 
#INCLUDE "TBICONN.CH"      
// BIBLIOTECA 
#include 
#INCLUDE "Protheus.ch"

User Function rmata116()
Local aCabeccCodFor := "COM003"
Local cLojFor := "01"
Local cNumDoc  := {}"COM116001"
Local aItenscSerie := "1"
Local aCabec := {}
Local  aItens := {}
Local aLinha := {}
Local aRatcc := {}
Local aRateio  := {}
Local aRatcc		aCCItem := {}
Local nX            := := 0
Local nY            := 0
Local nTamFilial 	   := 0
Local lOk           := .T.
Local cFilSF1 	   := ""
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.

   
//------------------------//| Abertura do ambiente |//------------------------ 
//PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SB1","SD1","SF1"
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| VerificacaoVerificação do ambiente para teste |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

//-- Verifica                         |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
 
//-- Verifica informacoes informações de produto
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"001"))	 
	lOk := .F.    
	ConOut("Cadastrar produto: 001")
EndIf
//-- Verifica informacoesinformações da TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001"))	 
	lOk := .F.    
	ConOut("Cadastrar TES: 001")
EndIf
//-- Verifica informacoesinformações da condicaocondição de pagamento
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001"))	 
	lOk := .F.    
	ConOut("Cadastrar condicaocondição de pagamento: 001")
EndIf
//-- Verifica fornecedor
dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"001"))	 
	lOk := .F.    
	ConOut("Cadastrar fornecedor: 001")
EndIf
If lOk                         
	


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿    
	//| Carrega ate 3 documentos de origem - Fornecedor 000001000001              |       
	                               | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ    
	
	dbSelectArea("SF1")    
	dbSetOrder(1)    
	MsSeek(xFilial("SF1"))    
	While !EOF()     	
		IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="001   01COM00301")        	
			if nX<3            	
				cFilSF1 	 := xFilial("SF1")
				nTamFilial  := Len(cFilSF1)            	
				aadd(aItens,{{"PRIMARYKEY",AllTrim(SubStr(&(IndexKey()),nTamFilial + 1))}}) //Tratamento para Gestao Empresas
			else 
exit 
Endif 
nX++ 
EndIf 
dbskip() 
EndDo 

IF nX >0

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
//| Teste 	
			de Inclusão      exit                        
			Endif                         
			nX++        
		EndIf      
	   dbskip()    
	EndDo     	
	
	IF nX >0
			
		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿		
		//| Teste de Inclusao                                            |	    
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ	   
		                                                                | 
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
aadd(aCabec,{"",Ctod("01/01/2015")}) //Data Inicial 
aadd(aCabec,{"",Ctod("01/12/2015")}) //Data Final 
aadd(aCabec,{"",2}) //2-Inclusao;1=Exclusao 
aadd(aCabec,{"",cCodFor}) //Fornecedor do documento de Origem 
aadd(aCabec,{"",cLojFor}) //Loja de origem 
aadd(aCabec,{"",dDataBase-901}) //Tipo da nota de   //Data Inicial        
		origem: 1=Normal;2=Devol/Benef 
aadd(aCabec,{"",dDataBase1})          //Data Final        
		1=Aglutina;2=Nao aglutina 
aadd(aCabec,{"F1_EST",2""})                  //2-Inclusao;1=Exclusao        
		
aadd(aCabec,{"",1000}) //Valor do conhecimento 
aadd(aCabec,{"F1_FORMUL","001   "2}) // Utiliza Formulario proprio ?      //Fornecedor do documento de Origem          
		1-Nao,2-Sim 
aadd(aCabec,{"F1_DOC",cNumDoc}) //..Numero da NF de Conhecimento de Frete 
aadd(aCabec,{"F1_SERIE","01"})               //Loja de origem        
		cSerie}) 
aadd(aCabec,{"F1_FORNECE",cCodFor}) 
aadd(aCabec,{"F1_LOJA",cLojFor}) 
aadd(aCabec,{"","001"}) //TES 
aadd(aCabec,{"F1_BASERET",1})                  //Tipo da nota de origem: 1=Normal;2=Devol/Benef        
		0}) 
aadd(aCabec,{"F1_ICMRET",0}) 
aadd(aCabec,{"F1_COND",2})                  //1=Aglutina;2=Nao aglutina        
		"001"}) 
aadd(aCabec,{"F1_ESTEMISSAO",""dDataBase})        
		aadd(aCabec,{"F1_ESPECIE",1000"NF"})               //Valor do conhecimento        
		aadd(aCabec,{"F1_FORMUL",1})        
		aadd(aCabec,{"F1_DOC","000043"})    //..Numero da NF de Conhecimento de Frete        
		aadd(aCabec,{"F1_SERIE","CF "})        
		aadd(aCabec,{"F1_FORNECE","001   "})        
		aadd(aCabec,{"F1_LOJA","01"})        
		aadd(aCabec,{"","001"})              //TES        
		aadd(aCabec,{"F1_BASERET",0})        
		


//-- Rateio de Centro de Custos
AAdd (aCCItem, {"DE_ITEM","01"})
AAdd (aCCItem, {"DE_PERC",45})
AAdd (aCCItem, {"DE_CC","COM002"})
AAdd (aRatCC, aCCItem)

aCCItem := {}
AAdd (aCCItem, {"DE_ITEM","02"})
AAdd (aCCItem, {"DE_PERC",55})
AAdd (aCCItem, {"DE_CC","COM003"})
AAdd (aRatCC, aCCItem)

AAdd (aRateio, {"0001",aRatCC})

MATA116(aCabec,aItens,,,aRateio) 

If lMsErroAuto 
MostraErro() 
Conout("Erro!") 
Else 
Conout("Ok!") 
Endif 
EndIf 

EndIf

RESET ENVIRONMENT

Return(.T.)

****************************************************************************

// Inclusão de Conhecimento considerando Tipo NF Devol/Benef 

#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
#INCLUDE "Protheus.ch"

User Function mt116Dev()
Local cCliFor	:= "COM002"
Local cLclifor	:= "01"
Local cNumDoc	:= "COM116002"
Local cSerie	:= "1"
Local cTransp	:= "COM003"
Local cLtransp	:= "01"
Local cOrigem	:= "COM000013"
Local cSerie	:= "1  "
Local cSerieId
Local cEspecie	:= "CTR"
Local cTipo		:= "C"
Local nX            := 0
Local nY            := 0
Local aItens        := {}
Local aLinha        := {}
Local aCabec        := {}
Local nTamFilial       := 0
Local lOk           := .T.
Local cFilSF1      := ""
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
    
//------------------------//| Abertura do ambiente |//------------------------
//PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM" TABLES "SB1","SD1","SF1"
  
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Verificação do ambiente para teste                           |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
  
//-- Verifica informações de produto
dbSelectArea("SB1")
dbSetOrder(1) 
If !SB1->(MsSeek(xFilial("SB1")+"X123456")) 
    lOk := .F.   
    ConOut("Cadastrar produto: 001")
EndIf
//-- Verifica informacões da TES
dbSelectArea("SF4")
dbSetOrder(1)
If !SF4->(MsSeek(xFilial("SF4")+"001")) 
    lOk := .F.   
    ConOut("Cadastrar TES: 001")
EndIf
//-- Verifica informações da condição de pagamento
dbSelectArea("SE4")
dbSetOrder(1)
If !SE4->(MsSeek(xFilial("SE4")+"001")) 
    lOk := .F.   
    ConOut("Cadastrar condição de pagamento: 001")
EndIf
//-- Verifica fornecedor
dbSelectArea("SA2")
dbSetOrder(1)
If !SA2->(MsSeek(xFilial("SA2")+"000002")) 
    lOk := .F.   
    ConOut("Cadastrar fornecedor: 001")
EndIf
If lOk            
            
    //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿   
    //| Carrega ate 3 documentos de origem - Fornecedor 000001       |   
    //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ   
     
    dbSelectArea("SF1")   
    dbSetOrder(1)   
    MsSeek(xFilial("SF1"))   
    While !EOF()       
        IF (Alltrim(SF1->F1_FORNECE+SF1->F1_LOJA) =="COM00201")         
            if nX<3             
                cFilSF1      := xFilial("SF1")
                nTamFilial  := Len(cFilSF1)            
                aadd(aItens,{{"PRIMARYKEY",AllTrim(SubStr(&(IndexKey()),nTamFilial + 1))}}) //Tratamento para Gestao Empresas
            else               
                exit           
            Endif            
            nX++       
        EndIf     
       dbskip()   
    EndDo      

       
    IF nX >0

        
        //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿     
        //| Teste de Inclusão                                            |     
        //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ    
        aadd(aCabec,{"",Ctod("01/01/2015")})       //Data Inicial       
        aadd(aCabec,{"",Ctod("01/12/2015")})          //Data Final       
        aadd(aCabec,{"",2})                  //2-Inclusao;1=Exclusao       
        aadd(aCabec,{"",cCliFor})           //Fornecedor do documento de Origem         
        aadd(aCabec,{"",cLclifor})               //Loja de origem       
        aadd(aCabec,{"",2})                  //Tipo da nota de origem: 1=Normal;2=Devol/Benef       
        aadd(aCabec,{"",1})                  //1=Aglutina;2=Nao aglutina       
        aadd(aCabec,{"F1_EST",""})       
        aadd(aCabec,{"",150})               //Valor do conhecimento       
        aadd(aCabec,{"F1_FORMUL",1})        // Utiliza Formulario proprio ? 1-Nao,2-Sim
        aadd(aCabec,{"F1_DOC",cNumDoc})    //..Numero da NF de Conhecimento de Frete    
        aadd(aCabec,{"F1_SERIE",cSerie})       
        aadd(aCabec,{"F1_FORNECE",cTransp})       
        aadd(aCabec,{"F1_LOJA",cLtransp})       
        aadd(aCabec,{"","001"})              //TES       
        aadd(aCabec,{"F1_BASERET",0})       
        aadd(aCabec,{"F1_ICMRET",0})       
    
		    aadd(aCabec,{"F1_COND","001"})       
        aadd(aCabec,{"})F1_EMISSAO",dDataBase})       
        
		aadd(aCabec,{"F1_EMISSAOESPECIE",dDataBasecEspecie})  
        
		//aadd(aCabecaItens,{"F1_ESPECIEPRIMARYKEY","NF"cOrigem})


            
		aadd(aCabec,{"E2_NATUREZ",""})MSExecAuto({|x,y| Mata116(x,y)},aCabec,aItens)
            
		aadd(acabec,{"F1_DESPESA",10})           
		aadd(acabec,{"F1_DESCONTO",20})   If lMsErroAuto         
           	    
	
		If Len(aItens)>0			
					 MostraErro()    //item da nota    //Item do
 Rateio , Perc. Rate ,Cent.de Cus,,,, Alias,Linha Deletada,   Item 02 do Rateio.
			aRatcc := {{"0001"Conout("Erro!")     
   ,{{'01'         Else     ,50      
    ,"000000000",,,,"SDE",,.F.            },{'02',50,"000001",,,,"SDE",,.F.}}}} 
			MATA116(aCabec,aItens,,,aRatcc)   
		EndIf    	
			If lMsErroAuto			
				MostraErro()			
				Alert("Erro!")		
			Else			
				Alert("Ok!")	    
			Endif    
	EndIf    
	
EndIfConout("Ok!")       
            Endif   
   EndIf   
     
EndIf

RESET ENVIRONMENT

Return(.T.)   

Parâmetros:

 

 


Nome
 
Tipo
  
Descrição
  
Default
  
Obrigatório
  
Referência
PARAMIXB1
  PARAMIXB1  
Array of Record
  
Contendo os valores para a geração da nota fiscal de conhecimento de Frete.
     
      



PARAMIXB2
  
Array of Record
  
Contendo as notas fiscais que entrarão no rateio da Nota Fiscal de Conhecimento de Frete.
           PARAMIXB2  



PARAMIXB3Array of Record
  
Contendo as informações para rateio por centro de custo
          

 

 



PARAMIXB4Array of RecordConteúdo de gravação das naturezas de rendimentos e dados de suspensão




Parâmetros SX6:

Nome da Variável

MV_AZFRETE

Conteúdo Padrão.T.
DescriçãoIndica se no conhecimento de frete, deve zerar a alíquota do item que tiver alíquota zerada na Nota Fiscal de origem. 
Comportamento

Caso a alíquota da NF de origem seja zerada, o sistema não calculará a alíquota no caso do parâmetro estar habilitado. Essa é a configuração padrão. 

Para que o sistema calcule a alíquota nessa situação, esse parâmetro deve ser desabilitado.